new U3dModelTilesLayer(opt)
U3dModelTilesLayer 생성자입니다.
| Name | Type | Description |
|---|---|---|
opt |
U3dModelTilesLayerCO |
생성자 옵션 |
Methods
-
__$testTileContentRequestLifecycle()boolean
-
타일 콘텐츠 요청의 세대 승계와 dispose 취소 불변식을 격리된 가짜 상태로 검사합니다.
실제 레이어의 타일·캐시·로더는 변경하지 않습니다. 같은 요청 상태를 새 updateId가 이어받을 때 공유 Promise와 큐/파서 파라미터가 유지되는지, dispose 취소 시 저장된 최종 URL만 abort되는지, 상태 Map과 tile.work가 객체 identity 기준으로 한 번만 정리되는지를 확인합니다.
Returns:
Type Description boolean 모든 요청 생명주기 불변식을 만족하면 true -
__$testTileContentSlotRelease()boolean
-
다운로드 WorkProcess 슬롯 반납 시점과 파이프라인 완료 시점의 분리 계약을 검사합니다.
#processQueue()의 private 접근 때문에 실제 생성된 인스턴스에 bind되어 실행되어야 하며, 레이어의 로더와 파서 큐 등록을 가짜 구현으로 잠시 교체한 뒤 종료 전에 복원합니다. 실제 네트워크 요청과 WorkProcess 큐에는 작업을 만들지 않습니다.Returns:
Type Description boolean 사전 폐기·네트워크 실패에서 두 Promise가 함께 실패하고, 파서 경로에서 슬롯이 파싱 완료보다 먼저 반납되면 true -
_adoptTileContentRequest(state, updateId)DeferredObject.<U3DTileset>
-
같은 타일을 새 탐색 세대가 다시 선택했을 때 기존 다운로드·파싱 작업의 소유 세대를 갱신합니다.
WorkProcess와 파서가 참조하는 파라미터 객체도 함께 갱신하므로, 아직 큐에서 시작되지 않은 작업은 최신 세대로 실행되고 이미 진행 중인 작업은 중단 없이 완료됩니다. Promise는 새로 만들지 않고 기존 상태의 것을 그대로 반환하여 하나의 타일에 하나의 실제 파이프라인만 유지합니다.
Name Type Description stateModelTileContentRequestState 이어받을 기존 요청 상태
updateIdstring | number 새 탐색 세대 ID
Returns:
Type Description DeferredObject.<U3DTileset> 기존 공유 Promise -
_cancelAllTileContentRequests()void
-
루트 교체나 레이어 처분처럼 타일 트리 접근만으로 누락될 수 있는 모든 활성 콘텐츠 작업을 취소합니다.
취소 과정에서 Map이 변경되므로 값 목록을 먼저 복사해 순회합니다. 각 상태의 취소는 멱등 처리되어 뒤이어
disposeTile()이 같은 타일을 재귀 방문해도 Promise reject와 네트워크 abort가 중복되지 않습니다.Returns:
Type Description void -
_cancelTileContentRequest(tile)boolean
-
타일이 실제로 폐기되는 시점에 해당 타일의 다운로드·파싱 파이프라인을 취소합니다.
큐에 대기 중인 work는 비활성화하고, 다운로드 중이면 요청 상태에 저장한 최종
requestUrl로UFileLoader.abort()를 호출합니다. 이 abort는 UFileLoader의 URL 공유 callback 전체를 중단하므로 카메라 세대 변경에서는 절대 호출하지 않고disposeTile()·clear·refresh·dispose 수명주기에서만 호출합니다. 진행 중인 파서는 즉시 중단할 수 없지만cancelled표시와 Map 제거로 완료 결과 적용을 차단합니다.Name Type Description tileU3DTileset 폐기할 타일
Returns:
Type Description boolean 관리 중인 요청 상태를 취소했으면 true -
_createTileContentRequestUrl(sourceUrl)string
-
원본 콘텐츠 URL에 현재 레이어의 프록시와 API 키를 결합합니다.
다운로드를 시작할 때 만든 이 값을 요청 상태에 저장하고,
disposeTile()에서도 동일한 값을 사용합니다. 원본 URL로 요청하고 다른 URL로 취소를 조회하던 기존 불일치를 제거하며, 하위 레이어가 별도의 URL 조합 규칙이 필요할 때 오버라이드할 수 있도록_메서드로 제공합니다.Name Type Description sourceUrlstring 타일 JSON에서 계산한 원본 콘텐츠 URL
Returns:
Type Description string UFileLoader에 전달할 최종 요청 URL -
_finishTileContentRequest(state, settle, tile)void
-
타일 콘텐츠 공유 Promise와 Map/work 소유권을 정확히 한 번 완료합니다.
오래된 callback이 같은 타일의 후속 상태를 지우지 않도록 Map과
tile.work는 객체 identity가 일치할 때만 제거합니다. 네트워크 오류는 타일 dispose와 구분하며 여기에서abort()를 호출하지 않습니다. 실제 네트워크 중단 권한은_cancelTileContentRequest()에만 둡니다.Name Type Description stateModelTileContentRequestState 완료할 요청 상태
settle'resolve' | 'reject' Promise 완료 방식
tileU3DTileset resolve 또는 reject에 전달할 타일
Returns:
Type Description void -
_isTileContentRequestCancelled(item)boolean
-
파서 또는 다운로드 callback이 아직 현재 타일 작업의 결과를 적용할 수 있는지 판정합니다.
요청 상태가 있는 새 경로에서는
updateId변경만으로 작업을 무효화하지 않습니다. 같은 타일을 새 탐색 세대가 선택하면 상태를 이어받기 때문입니다. 실제 무효화 기준은 타일 dispose, 상태의 명시적 취소, Map에서 다른 상태로 교체됨, 공유 Promise 완료입니다. 요청 상태 없이 호출되는 기존 하위 구현과의 호환 경로에서만 과거와 같이updateId를 검사합니다.Name Type Description itemPartial.<(ModelTileParserQueueItem|ModelTileContentQueueInfo)> | undefined 판정할 작업 파라미터
Returns:
Type Description boolean 결과를 더 이상 적용하면 안 되면 true -
addParserQueue(fnc, item)DeferredObject.<U3DTileset>
-
다운로드한 모델 타일 버퍼를 형식별 파서 작업 큐에 등록합니다.
다운로드 단계와 같은
requestState를 사용하므로 카메라 탐색 세대가 바뀌어도 같은 타일의 파싱 작업을 새로 만들지 않습니다. 아직 큐에 있는 파서는 최신 세대가 타일을 이어받지 않았을 때만 제거하고, 이미 실행 중인 파서는 타일 dispose 여부를 완료 시점에 다시 확인합니다.Name Type Description fncfunction 파서 함수. 호출 즉시 결과를 반환하는 동기 함수가 아니라 then/catch를 제공하는 DeferredObject를 반환해야 합니다.
itemModelTileParserQueueItem 파서 파라미터
Returns:
Type Description DeferredObject.<U3DTileset> 비동기 처리 객체 -
addRequestQueue(tile, updateId)DeferredObject.<U3DTileset>
-
타일 콘텐츠 다운로드·파싱 작업을 예약하거나 동일 타일의 기존 작업을 새 탐색 세대에 연결합니다.
Name Type Description tileU3DTileset 대상 타일
updateIdstring | number 현재 탐색 세대 ID
Returns:
Type Description DeferredObject.<U3DTileset> 타일 콘텐츠 완료 Promise -
clear()
-
레이어를 초기화 하는 함수
-
clearCache()
-
레이어가 사용중인 모델 캐시를 초기화하는 함수
-
deleteMesh(mesh)
-
로드된 타일 메시와 하위 계층의 자원·라벨·이벤트 연결을 완전히 삭제합니다.
Name Type Description meshObject3D 삭제할 메시 또는 그룹
-
loadMetaData(url)promise.<boolean>
-
속성값이 정의 되어 있는 Batch.Json 파일을 불러옵니다.
해당 파일의 url을 사용자가 직접 입력하거나, 미 입력시 batchGroup.json과 같은 경로에 파일경로로 해당 파일을 불러옵니다.( batchGroupPath 설정 필요) 해당 파일을 성공적으로 불러왔을 경우에 self._metaDataJson에 저장되거나, self.getBatchMetaData()를 사용하여 반환 받을수 있습니다.Name Type Description urlstring batch.json 파일을 불러올 파일 경로
Returns:
Type Description promise.<boolean> promise 해당 경로에 batch.json 파일을 성공적으로 불러왔을 경우에 반환합니다. -
removeAllTiles()
-
레이어의 전체 타일들을 제거하는 함수
-
setHeightOffset(offset)
-
레이어의 모델 기본 높이 보정값을 설정 하는 함수
Name Type Description offsetnumber 높이 보정값
-
setRotation(rotationX, rotationY, rotationZ)
-
레이어의 모델 회전 값을 설정 하는 함수
Name Type Description rotationXnumber x 회전 값, 단위는 Degree (도, °)
rotationYnumber y 회전 값, 단위는 Degree (도, °)
rotationZnumber z 회전 값, 단위는 Degree (도, °)
-
viewSizeOffset(offset)
-
레이어의 모델 업데이트 민감도를 설정하는 함수
Name Type Description offsetnumber 업데이트 민감도 설정값
Type Definitions
-
TileCheckContextobject
-
한 탐색 주기(updateId) 동안 재귀 타일 판정이 공유하는 카메라·SSE 스냅샷입니다.
#createCheckContext()가 만들며, 판정 핫패스에서 타일마다 카메라·프러스텀·화면 크기 값을 다시 조회하지 않기 위한 것이므로 한 update 주기 안에서만 유효합니다.Properties:
Name Type Description updateIdstring | number 문맥을 만든 탐색 세대 ID
camposVector3 판정에 사용할 카메라 위치
frustumUFrustum 현재 카메라 프러스텀
drawBufferHeightnumber 렌더러 draw buffer 높이
cameraDenominatornumber 카메라 SSE 분모
viewSizeOffsetnumber | viewSizeOffsetFunction SSE 보정 배수 또는 타일별 계산 함수
isViewSizeOffsetFunctionboolean viewSizeOffset이 함수인지 여부
maximumScreenSpaceErrornumber 세분화 허용 화면 공간 오차
maximumScreenSpaceErrorThirdnumber 직전 선택 타일의 완화 판정에 쓰는 1/3 오차
-
U3dModelTilesLayerCOobject
-
~extends U3dModelLayer~U3dModelLayerCO
생성자 옵션Properties:
Name Type Argument Default Description baseurlstring Tiles 데이터 URL
namestring 레이어 이름
apikeystring <optional>
레이어 APT Key
useboxboolean <optional>
tiles 의 Bounding Box 가시화 여부
proxyurlstring <optional>
프록시 URL, useproxy 설정이 true 일 경우, 사용할 proxy url
useproxyboolean <optional>
false 레이어 가시화 최대 레벨
rotationDegreeEulerLike <optional>
회전값 추가 적용, 단위는 Degree (도, °)
heightOffsetnumber <optional>
높이값 추가 적용
maximumScreenSpaceErrornumber <optional>
32 최대 화면오차ESS 허용 수치 입니다.tiles 개벌 geometricError 가 SSE로 변환되어 이값과 비교됩니다.
viewSizeOffsetnumber | viewSizeOffsetFunction <optional>
객체의 업데이트 판단 시, geometricError 추가 적용, 함수 입력시 함수의 리턴값으로 추가 적용
renderOrdernumber <optional>
랜더링 우선 순위
cacheSizenumber <optional>
캐쉬의 크기
updateCycleTimenumber <optional>
업데이트 주기 시간
autoHeightboolean <optional>
autoHeight 사용여부, 고도 값을 지형정보에서 추출하여 사용합니다.
batchGroupPathstring <optional>
batchGroup.Json 파일이 있을 경우, 경로 지정
setLevelGroupboolean <optional>
batchGroup의 내용에서 0 ~ 4 레벨 수준으로 점차적 Grouping 여부
typestring <optional>
'3dtiles' 서버 등록시 설정한 Type ('3dtiles' / '3dtiles_BIM')
makeLevelnumber <optional>
0 3dtiles_BIM 생성시 makeLevel 속성 값, 해당 레벨보다 낮은 BatchGroup만 검색 가능 | makelevel : 3 --> 4레벨 batchgroup 부터 제외
BIMLevelLengthListarray <optional>
BIM_LEVEL_LENGTH_LIST batchGroup의 분류 기준(글자수의 기준을) 수정 level별로 list에 담아 수정 가능
Example
const modellayer = new GeOnDT.model.U3dModelTilesLayer({ name: name, useproxy: false, baseurl: "https://skymaps.co.kr/map/tileset/magok_sim_25_draco/tileset.json", viewSizeOffset: function (tileset){ const level = tileset.level; const geometricError = tileset.geometricError; if(level ===1 && geometricError < 3000){ return 80; } return 1; } }); app.addLayer(modellayer); app.showLayer(name, true); -
viewSizeOffsetFunction(tile)number
-
iewSizeOffset 값을 설정하는 사용자 함수
Name Type Description tileU3DTileset Returns:
Type Description number