업데이트 버전: 1.0.0.8.183.a => 1.0.0.8.183.b
1.0.0.8.183.b 추가 수정 내용: -고도 범례 출력 중 UFrustumTerrainProjectionHelper 및 UFrsutumHelper를 생성 출력 시, 지면 색상 출력에 이상이 생기는 오류가 수정되었습니다.
1.0.0.8.183.a 업데이트 내용: 1. 카메라 촬영 영역 중, 지면과 교차되는 영역을 중점적으로 표현하는 객체인 UFrustumTerrainProjectionHelper가 추가되었습니다. - 스타일링 및 기본 설정 API 및 인터페이스는 UFrsutumHelper와 동일합니다. - Frustum 과 지면 교차 영역을 강조 출력하고 그에 따라 외각선 및 3차원 형상을 출력합니다.
기존의 UFrsutumHelper 출력 (far: 18000, pitch: 10) 
추가된 UFrustumTerrainProjectionHelper 출력 (far: 18000, pitch: 10) 
- UFrsutumHelper와 동일하게, U3dApp의 setFrustumTerrainProjectionHelper 를 통해 생성할 수 있습니다. 관련 사용법은 https://3d.geon.kr/doc/tutorial-official/animationComponents.html (주행애니메이션 예제) 를 참고해 주십시오. > ensureDroneCameraDebug 검색
주행애니메이션 예제에 UFrustumTerrainProjectionHelper 의 품질 및 안정화 정도를 설정할 수 있는 여러 API 사용 가이드가 추가되었습니다. 현재 예제의 UI에 기본으로 설정되어있는 값들은 API 기본값이 아닌 형상 안정화에 중점을 둔 설정입니다. 설정 UI에 마우스 호버시, 설정값에 대한 설명과 사용법을 확인 하실 수 있습니다. 

2. 고도 범례 출력 기능이 개선되었습니다. - UPathGeometry , U3dLine 및 컴포넌트의 경로를 표현하는 형상에 고도 범례 출력이 정상적으로 작동하도록 수정되었습니다.
- 출력되고 있는 객체를 고도 범례 출력에서 제외 시킬 수 있는 setExceptObjects API 가 추가되었습니다. - 그에따라 객체 하나씩 제외할 수 있는 addExceptObject 및 removeExceptObject, clearExceptObject API 가 추가되었습니다.
추가된 API 인터페이스 명세.
/** * 고도 색상 범례와 등고선 후처리에서 제외할 대상 목록을 설정한다. * 제외된 대상에는 범례 색상과 등고선이 적용되지 않아 본연의 색상으로 표시된다. * Object3D(mesh·그룹 등)를 전달하면 렌더 시점의 하위 객체 전체가 함께 제외되고, * 컴포넌트 레이어의 컴포넌트 포지션을 전달하면 그 컴포넌트만 제외된다 — * 일반 메쉬 타입은 자신이 복제해 소유한 형상만, 인스턴스 타입은 공유 * InstancedMesh 형상 중 해당 인스턴스만 제외되므로 같은 형상의 다른 컴포넌트는 영향받지 않는다. * 기존 제외 목록은 전달한 목록으로 교체되고 빈 배열을 전달하면 모두 해제된다. * * @param {import('three').Object3D | import('@union3d/3dLayer/U3dComponentPosition').U3dComponentPosition | Array<import('three').Object3D | import('@union3d/3dLayer/U3dComponentPosition').U3dComponentPosition>} objects 제외할 대상 또는 대상 배열 * @returns {boolean} 설정 성공 여부 * * @example * let analy = app.activeAnalysis('Height'); * analy.setExceptObjects([mesh]); * analy.setHeightVisible(true); * * @example * // 컴포넌트 포지션 단위 제외: 목록에 넣은 컴포넌트만 본연의 색으로 남는다. * const comps = ['drone-1', 'drone-2'].map((name) => layer.getComponentByName(name)); * analy.setExceptObjects(comps); */ setExceptObjects(objects: three.Object3D | U3dComponentPosition | Array<three.Object3D | U3dComponentPosition>): boolean; /** * 고도 후처리 제외 목록에 대상 하나를 추가한다. * * @param {import('three').Object3D | import('@union3d/3dLayer/U3dComponentPosition').U3dComponentPosition} object 제외할 대상 * @returns {boolean} 추가 성공 여부 */ addExceptObject(object: three.Object3D | U3dComponentPosition): boolean; /** * 고도 후처리 제외 목록에서 대상 하나를 제거한다. * * @param {import('three').Object3D | import('@union3d/3dLayer/U3dComponentPosition').U3dComponentPosition} object 제외를 해제할 대상 * @returns {boolean} 목록에 있어 제거된 경우 true */ removeExceptObject(object: three.Object3D | U3dComponentPosition): boolean; /** * 고도 후처리 제외 목록을 모두 해제한다. * * @returns {void} */ clearExceptObjects(): void; /** * 현재 고도 후처리 제외 목록의 복사본을 반환한다. * 반환 배열을 수정해도 실제 목록은 바뀌지 않는다. * * @returns {Array<import('three').Object3D | import('@union3d/3dLayer/U3dComponentPosition').U3dComponentPosition>} 제외 대상 배열 */ getExceptObjects(): Array<three.Object3D | U3dComponentPosition>;
실제 사용법.
const analysis = app.getAnalysis('Height'); const exceptObjects = [ mesh1, Line, componet ]; analysis.setExceptObjects(exceptObjects);
고도범례의 정상 적용. 
setExceptObjects 를 통한 출력객체의 선택적 제외. 
관련 사용법은 https://3d.geon.kr/doc/tutorial-official/analysisHeightLegend.html (고도 범례 출력 예제) 를 참고해 주십시오.
3. 렌더링 캔버스을 이미지 캡처하는 기능(U3dApp의 capture API 사용)이 POI 및 Overlay 객체도 캡쳐될 수 있도록 수정되었습니다. - U3dApp의 capture 및 captureToBlob API 사용시, POI 및 Overlay 객체도 캡처될 수 있도록 기본 동작이 수정되었습니다.
- dom : false 를 API 파라메터이 입력하면 POI 및 Overlay 객체가 캡처되지 않습니다.
//+ [저장] 버튼 클릭, 현재 지도화면을 이미지로 저장 //+ app.capture()가 WebGL 화면과 지도 위 DOM(U3dPOI·U3dOverlay)을 합성한 dataURL을 반환한다. //+ DOM 합성 없이 WebGL 화면만 필요하면 app.capture({dom: false})를 사용한다. $('#save').on('click', function () { app.capture().then((image)=>{ var aTag = document.createElement('a'); aTag.download = 'from_canvas.png'; aTag.href = image; aTag.click(); });
//blob 형식으로 받기 app.captureToBlob().then((blob)=>{
});
관련 사용법은 https://3d.geon.kr/doc/tutorial-official/saveImage.html (지도화면 이미지 저장 예제) 를 참고해 주십시오.
4. 경사향 분석 화살표 형상을 설정할 수 있는 기능이 추가 되었습니다. - 분석 실행 옵션을 설정할 수 있는 setAnalysisOption API에 화살표 머리 및 화살표 꼬리의 길이 밎 반지름을 설정할 수 있는 옵션이 추가 되었습니다. const analy = app.getAnalysis('SlopeAspect'); //+ 경사향 분석 analy.setAnalysisOption({ arrowHeadSize : 1.5, //화살표 머리(원뿔) 반지름 arrowHeadLength: 4, //화살표 머리(원뿔) 길이 arrowTailLength: 8, //화살표 꼬리(원기둥) 길이 arrowTailWidth: 0.1 //화살표 꼬리(원기둥) 반지름 }); //+ 화살표 형상 변경은 표출 중인 분석 결과에 재분석 없이 즉시 반영된다.
관련 사용법은 https://3d.geon.kr/doc/tutorial-official/analysisSlopeAspect.html (경사향 분석 예제) 를 참고해 주십시오.
5. 경사향 분석의 분석 그리드 옵션 가로길이와 세로 길이의 단위가 m(미터) 단위로 정상 인식되도록 수정되었습니다.
6. 3D Tiles 출력성능이 향상 되었습니다. - 3D Tiles 를 출력할 수 있는 U3dModelTilesLayer의 성능이 개선되었습니다.
|