GeOnDT GeOnDT for JS

Class: U3dModelTilesLayer

U3dModelTilesLayer

~extends U3dModelLayer
3D Tiles 모델 레이어 클래스

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
state ModelTileContentRequestState

이어받을 기존 요청 상태

updateId string | 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
tile U3DTileset

폐기할 타일

Returns:
Type Description
boolean 관리 중인 요청 상태를 취소했으면 true

_createTileContentRequestUrl(sourceUrl)string

원본 콘텐츠 URL에 현재 레이어의 프록시와 API 키를 결합합니다.

다운로드를 시작할 때 만든 이 값을 요청 상태에 저장하고, disposeTile()에서도 동일한 값을 사용합니다. 원본 URL로 요청하고 다른 URL로 취소를 조회하던 기존 불일치를 제거하며, 하위 레이어가 별도의 URL 조합 규칙이 필요할 때 오버라이드할 수 있도록 _ 메서드로 제공합니다.

Name Type Description
sourceUrl string

타일 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
state ModelTileContentRequestState

완료할 요청 상태

settle 'resolve' | 'reject'

Promise 완료 방식

tile U3DTileset

resolve 또는 reject에 전달할 타일

Returns:
Type Description
void

_isTileContentRequestCancelled(item)boolean

파서 또는 다운로드 callback이 아직 현재 타일 작업의 결과를 적용할 수 있는지 판정합니다.

요청 상태가 있는 새 경로에서는 updateId 변경만으로 작업을 무효화하지 않습니다. 같은 타일을 새 탐색 세대가 선택하면 상태를 이어받기 때문입니다. 실제 무효화 기준은 타일 dispose, 상태의 명시적 취소, Map에서 다른 상태로 교체됨, 공유 Promise 완료입니다. 요청 상태 없이 호출되는 기존 하위 구현과의 호환 경로에서만 과거와 같이 updateId를 검사합니다.

Name Type Description
item Partial.<(ModelTileParserQueueItem|ModelTileContentQueueInfo)> | undefined

판정할 작업 파라미터

Returns:
Type Description
boolean 결과를 더 이상 적용하면 안 되면 true

addParserQueue(fnc, item)DeferredObject.<U3DTileset>

다운로드한 모델 타일 버퍼를 형식별 파서 작업 큐에 등록합니다.

다운로드 단계와 같은 requestState를 사용하므로 카메라 탐색 세대가 바뀌어도 같은 타일의 파싱 작업을 새로 만들지 않습니다. 아직 큐에 있는 파서는 최신 세대가 타일을 이어받지 않았을 때만 제거하고, 이미 실행 중인 파서는 타일 dispose 여부를 완료 시점에 다시 확인합니다.

Name Type Description
fnc function

파서 함수. 호출 즉시 결과를 반환하는 동기 함수가 아니라 then/catch를 제공하는 DeferredObject를 반환해야 합니다.

item ModelTileParserQueueItem

파서 파라미터

Returns:
Type Description
DeferredObject.<U3DTileset> 비동기 처리 객체

addRequestQueue(tile, updateId)DeferredObject.<U3DTileset>

타일 콘텐츠 다운로드·파싱 작업을 예약하거나 동일 타일의 기존 작업을 새 탐색 세대에 연결합니다.

Name Type Description
tile U3DTileset

대상 타일

updateId string | number

현재 탐색 세대 ID

Returns:
Type Description
DeferredObject.<U3DTileset> 타일 콘텐츠 완료 Promise

clear()

레이어를 초기화 하는 함수

clearCache()

레이어가 사용중인 모델 캐시를 초기화하는 함수

deleteMesh(mesh)

로드된 타일 메시와 하위 계층의 자원·라벨·이벤트 연결을 완전히 삭제합니다.

Name Type Description
mesh Object3D

삭제할 메시 또는 그룹

loadMetaData(url)promise.<boolean>

속성값이 정의 되어 있는 Batch.Json 파일을 불러옵니다.
해당 파일의 url을 사용자가 직접 입력하거나, 미 입력시 batchGroup.json과 같은 경로에 파일경로로 해당 파일을 불러옵니다.( batchGroupPath 설정 필요) 해당 파일을 성공적으로 불러왔을 경우에 self._metaDataJson에 저장되거나, self.getBatchMetaData()를 사용하여 반환 받을수 있습니다.

Name Type Description
url string

batch.json 파일을 불러올 파일 경로

Returns:
Type Description
promise.<boolean> promise 해당 경로에 batch.json 파일을 성공적으로 불러왔을 경우에 반환합니다.

removeAllTiles()

레이어의 전체 타일들을 제거하는 함수

setHeightOffset(offset)

레이어의 모델 기본 높이 보정값을 설정 하는 함수

Name Type Description
offset number

높이 보정값

setRotation(rotationX, rotationY, rotationZ)

레이어의 모델 회전 값을 설정 하는 함수

Name Type Description
rotationX number

x 회전 값, 단위는 Degree (도, °)

rotationY number

y 회전 값, 단위는 Degree (도, °)

rotationZ number

z 회전 값, 단위는 Degree (도, °)

viewSizeOffset(offset)

레이어의 모델 업데이트 민감도를 설정하는 함수

Name Type Description
offset number

업데이트 민감도 설정값

Type Definitions

TileCheckContextobject

한 탐색 주기(updateId) 동안 재귀 타일 판정이 공유하는 카메라·SSE 스냅샷입니다.

#createCheckContext()가 만들며, 판정 핫패스에서 타일마다 카메라·프러스텀·화면 크기 값을 다시 조회하지 않기 위한 것이므로 한 update 주기 안에서만 유효합니다.

Properties:
Name Type Description
updateId string | number

문맥을 만든 탐색 세대 ID

campos Vector3

판정에 사용할 카메라 위치

frustum UFrustum

현재 카메라 프러스텀

drawBufferHeight number

렌더러 draw buffer 높이

cameraDenominator number

카메라 SSE 분모

viewSizeOffset number | viewSizeOffsetFunction

SSE 보정 배수 또는 타일별 계산 함수

isViewSizeOffsetFunction boolean

viewSizeOffset이 함수인지 여부

maximumScreenSpaceError number

세분화 허용 화면 공간 오차

maximumScreenSpaceErrorThird number

직전 선택 타일의 완화 판정에 쓰는 1/3 오차

U3dModelTilesLayerCOobject

~extends U3dModelLayer~U3dModelLayerCO
생성자 옵션

Properties:
Name Type Argument Default Description
baseurl string

Tiles 데이터 URL

name string

레이어 이름

apikey string <optional>

레이어 APT Key

usebox boolean <optional>

tiles 의 Bounding Box 가시화 여부

proxyurl string <optional>

프록시 URL, useproxy 설정이 true 일 경우, 사용할 proxy url

useproxy boolean <optional>
false

레이어 가시화 최대 레벨

rotation DegreeEulerLike <optional>

회전값 추가 적용, 단위는 Degree (도, °)

heightOffset number <optional>

높이값 추가 적용

maximumScreenSpaceError number <optional>
32

최대 화면오차ESS 허용 수치 입니다.tiles 개벌 geometricError 가 SSE로 변환되어 이값과 비교됩니다.

viewSizeOffset number | viewSizeOffsetFunction <optional>

객체의 업데이트 판단 시, geometricError 추가 적용, 함수 입력시 함수의 리턴값으로 추가 적용

renderOrder number <optional>

랜더링 우선 순위

cacheSize number <optional>

캐쉬의 크기

updateCycleTime number <optional>

업데이트 주기 시간

autoHeight boolean <optional>

autoHeight 사용여부, 고도 값을 지형정보에서 추출하여 사용합니다.

batchGroupPath string <optional>

batchGroup.Json 파일이 있을 경우, 경로 지정

setLevelGroup boolean <optional>

batchGroup의 내용에서 0 ~ 4 레벨 수준으로 점차적 Grouping 여부

type string <optional>
'3dtiles'

서버 등록시 설정한 Type ('3dtiles' / '3dtiles_BIM')

makeLevel number <optional>
0

3dtiles_BIM 생성시 makeLevel 속성 값, 해당 레벨보다 낮은 BatchGroup만 검색 가능 | makelevel : 3 --> 4레벨 batchgroup 부터 제외

BIMLevelLengthList array <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
tile U3DTileset
Returns:
Type Description
number