GeOnDT GeOnDT for JS

Class: U3dModelShapeLayer

U3dModelShapeLayer

~extends U3dModelLayer
SHP 모델 레이어 클래스
SHP 모델 데이터를 건물 Mesh로 만들고 3D scene에 표시·검색·제거하며, 높이·층·라벨·재질을 관리하는 레이어입니다. Mesh는 화면에 그릴 형상과 재질을 묶은 객체이고 scene은 이 객체들을 렌더링하는 공간입니다.

new U3dModelShapeLayer(opt)

Name Type Default Description
opt U3dModelShapeLayerCO {} optional

레이어 이름, 좌표계, 표시 레벨, 높이·라벨 필드, 스타일과 텍스처 옵션

Tutorials:
Example
const shpModelOpt = JSON.parse(option);
const layer = new Union3D.model.U3dModelShapeLayer(shpModelOpt);
app.addLayer(layer);
app.showLayer(layer.getName(), true);
layer.addFeatureCollection(shpModelOpt.featureCollection);

Methods

addFeature(feature)Promise.<U3dModelShapeMesh>|undefined

shp 모델 피처(Feature) 하나를 건물 Mesh로 만들어 레이어에 추가하는 메서드입니다.
지원하지 않는 도형이거나 좌표가 없으면 Mesh를 만들지 않고 undefined를 반환합니다.

Name Type Description
feature U3dModelShapeFeature

shp 모델 피처(Feature)

Returns:
Type Description
Promise.<U3dModelShapeMesh> | undefined 건물 Mesh 생성이 끝나면 그 Mesh로 완료되고, 생성 중 예외가 나면 거부되는 Promise. 도형을 지원하지 않거나 좌표가 잘못되면 undefined

addFeatureCollection(featureCollection)Promise.<(Array.<U3dModelShapeMesh>|undefined)>|undefined

shp 모델 피처 정보 묶음(FeatureCollection)을 추가하고 각 피처를 건물 Mesh로 생성하는 메서드입니다.
기존 건물은 유지하며 컬렉션과 피처에 Mesh와 연결되는 uuid를 기록합니다.

Name Type Description
featureCollection U3dModelShapeFeatureCollection

피처 정보 묶음(FeatureCollection)

Returns:
Type Description
Promise.<(Array.<U3dModelShapeMesh>|undefined)> | undefined 처리할 Feature가 즉시 모두 끝나면 내부 전체 건물 목록으로 완료되는 Promise. 처리 중인 Feature가 남거나 예외가 나면 거부되며, 입력이 없으면 undefined

addScene(mesh)

입력 받은 shp 모델 mesh를 scene에 추가하고 라벨 표시 상태이면 라벨을 만드는 메서드입니다.

Name Type Description
mesh U3dModelShapeMesh

scene에 추가할 건물 Mesh. 행렬 자동 갱신을 끄고 현재 행렬을 확정하며, 라벨 표시 상태이면 라벨도 생성함

animateInterval(interval, x, y, z)Promise.<void>|undefined

층별 이동 간격을 50ms마다 조금씩 늘려 사용자 그룹을 애니메이션으로 펼칩니다. 먼저 setGroupOriginPosition()으로 기준 위치를 저장해야 합니다.

Name Type Default Description
interval number

양수인 애니메이션 길이 계수. 반올림한 interval * 10단계 동안 50ms마다 이동함

x number 0 optional

마지막 단계의 한 층당 x축 이동 간격(월드 단위)

y number 0 optional

마지막 단계의 한 층당 y축 이동 간격(월드 단위)

z number 0 optional

마지막 단계의 한 층당 z축 이동 간격(월드 단위)

Returns:
Type Description
Promise.<void> | undefined 이동이 끝나면 완료되는 Promise. 진행 중 다시 호출하면 이전 Promise는 거부됨. 유효한 양수 interval이 아니면 undefined

changeTexture(url, index)Promise.<(void|undefined)>

지정한 인덱스의 텍스처 URL과 로드 캐시를 교체합니다. 기존 Mesh 재질에 반영하려면 완료 후 updateStyle()을 호출해야 합니다.

Name Type Description
url string

새 텍스처 url

index number

생성자의 textureurl 또는 textureUrl이 배열일 때 교체할 0 이상의 인덱스

Returns:
Type Description
Promise.<(void|undefined)> 텍스처 로드와 교체가 끝나면 완료되는 Promise. url이 없으면 undefined로 완료

clearSelectFloor(mesh)

선택한 층의 강조 표시와 클리핑을 해제하는 메서드입니다.

Name Type Description
mesh Mesh optional

선택을 해제할 건물 Mesh. 생략하면 레이어의 모든 층 선택을 해제하고 렌더러의 로컬 클리핑을 끔

createLabel(mesh, opt)Promise.<void>

건물 Mesh의 label(POI)을 생성해 userData.label에 연결합니다. scene에는 추가하지 않으므로 표시하려면 addScene() 또는 showLabel(true)를 사용합니다.

Name Type Description
mesh U3dModelShapeMesh

라벨을 연결할 건물 Mesh

opt U3dModelShapeLabelOptions

label 생성 옵션

Returns:
Type Description
Promise.<void> 라벨을 만들면 완료되고 mesh가 없거나 라벨을 만들지 못하면 거부되는 Promise

createModel(tile)Promise.<boolean>|undefined

타일을 입력 받아 해당 타일에 걸친 건물을 작업 버퍼에 등록하는 함수

Name Type Description
tile U3dQuadTile

레이어 레벨과 가시성 조건을 검사하고 건물을 작업 버퍼에 넣을 3D 지도 타일

Returns:
Type Description
Promise.<boolean> | undefined 타일 상태 갱신이 끝나면 true로 완료되는 Promise. 타일이 없거나 표시 조건에 맞지 않으면 undefined

dispose()Promise.<boolean>

텍스처, 건물 Mesh, 라벨, 타일 색인과 층 분리 그룹을 해제한 뒤 부모 레이어를 정리하는 함수

Returns:
Type Description
Promise.<boolean> 부모 레이어 정리가 끝나면 true로 완료되는 Promise

disposeTile(tile)

타일을 입력 받아 그 타일에서만 보이던 건물을 scene에서 제거하는 함수

Name Type Description
tile U3dQuadTile

이 타일에만 연결되어 scene에서 제거할 건물을 찾는 3D 지도 타일

getBoundingBox()Box3|undefined

shp 모델 레이어의 바운딩 영역(BoundingBox)을 반환하는 함수

Returns:
Type Description
Box3 | undefined 마지막 addFeatureCollection() 뒤 계산한 내부 월드 좌표 바운딩 박스. 직접 변경하면 레이어 상태에도 반영되며, 계산된 적이 없으면 undefined

getDrawnModel()Array.<Mesh>

현재 레이어 scene의 직계 자식인 Mesh 목록을 반환합니다. 가시성이나 화면 절두체 포함 여부는 검사하지 않습니다.

Returns:
Type Description
Array.<Mesh> 새 배열에 담은 scene 내부 Mesh 참조. Mesh는 레이어에서 제거될 때 해제됨

getFeatureCollection()Array.<U3dModelShapeFeatureCollection>

레이어에 등록된 피처 정보 묶음(FeatureCollection) 목록을 등록 순서로 반환하는 메서드입니다.

Returns:
Type Description
Array.<U3dModelShapeFeatureCollection> 내부 목록 자체. 배열이나 항목을 변경하면 레이어 상태에도 반영됨

getFloor(model, vertices)number|'roof'|undefined

레이어에 등록된 건물의 월드 좌표 정점이 속한 층을 찾습니다. 배열을 주면 가장 낮은 정점의 층을 사용합니다.

Name Type Description
model Mesh

대상 건물 모델

vertices WorldPositionVector3 | Array.<WorldPositionVector3>

층 정보를 조회할 월드 좌표 정점 또는 정점 배열

Returns:
Type Description
number | 'roof' | undefined 1부터 시작하는 층 번호. 윗면이면 'roof', 등록된 Mesh나 층 정보를 찾지 못하면 undefined

레이어의 저장용 설정을 반환합니다. FeatureCollection과 레이어의 높이·스타일 콜백 필드는 포함하지 않지만, 공유 style 안의 multiSideFunction은 남을 수 있습니다.

Returns:
Type Description
U3dModelShapeLayerParam 새 설정 객체. style과 textureUrl 값은 내부 객체·배열을 공유함

getSourceCRS()string

원본 데이터 좌표계로 보관 중인 EPSG 식별자를 반환합니다. 현재 Feature 좌표 변환에는 이 값이 사용되지 않습니다.

Returns:
Type Description
string EPSG:5179 같은 원본 데이터 좌표계 식별자

getStyle()U3dModelShapeStyle

shp 모델 레이어의 공통 스타일 객체를 반환하는 함수. 복사본이 아니라 내부 객체를 그대로 반환합니다.

Returns:
Type Description
U3dModelShapeStyle 공통 스타일 객체

getWorkingLevel3()number

아직 처리 중인 피처 수와 작업 버퍼에 남은 타일 수의 합을 반환하는 함수

Returns:
Type Description
number 남은 작업 수

moveUserGroupPosition(x, y, z)

모든 층 그룹을 저장된 원래 위치에서 층 순서별 간격만큼 이동합니다. 먼저 setGroupOriginPosition()으로 기준 위치를 저장해야 합니다.

Name Type Default Description
x number 0 optional

한 층당 x축 이동 간격(월드 단위)

y number 0 optional

한 층당 y축 이동 간격(월드 단위)

z number 0 optional

한 층당 z축 이동 간격(월드 단위)

removeLabelToBoundingBox()

setStyle({label})로 만든 레이어 공통 라벨을 scene에서 제거하고 참조를 비웁니다. 건물별 라벨에는 영향을 주지 않습니다.

removeModel(feature)

피처 또는 같은 uuid를 가진 Mesh에 해당하는 건물을 제거합니다.
원본과 층 분리 복제 Mesh의 라벨·지오메트리·재질을 해제하고 타일 색인과 속성 목록에서도 제거하므로, 이후 기존 Mesh 참조를 사용하면 안 됩니다.

Name Type Description
feature U3dModelShapeFeature | Mesh

제거할 건물의 피처 또는 Mesh

removeModelAsFeatureCollection(featureCollection)

컬렉션에 속한 모든 건물을 제거하고 컬렉션을 레이어 목록에서 빼는 메서드입니다.

Name Type Description
featureCollection U3dModelShapeFeatureCollection

제거할 피처 정보 묶음

removeScene(mesh)

입력 받은 shp 모델 mesh를 scene에서 제거하고 라벨을 해제하는 메서드입니다.

Name Type Description
mesh U3dModelShapeMesh

scene에서 제거할 건물 Mesh. Mesh 자체와 지오메트리·재질은 보존됨

searchFeatureAsMesh(mesh)Object

건물 Mesh에 연결된 원본 피처와 피처 정보 묶음을 찾는 메서드입니다.

Name Type Description
mesh Mesh

조회할 건물 Mesh

Returns:
Type Description
Object 내부 원본 데이터 참조를 담은 새 결과 객체. 찾지 못한 항목은 undefined

searchModelAsFeature(feature)U3dModelShapeMesh|undefined

단일 피처에 해당하는 건물 Mesh를 찾는 메서드입니다.

Name Type Description
feature U3dModelShapeFeature

조회할 피처

Returns:
Type Description
U3dModelShapeMesh | undefined 내부 건물 Mesh 참조. 없으면 undefined이며, Mesh는 레이어에서 제거될 때 해제됨

searchModelAsFeatureCollection(featureCollection)Array.<U3dModelShapeMesh>

컬렉션에 속한 모든 건물 Mesh를 찾는 메서드입니다.

Name Type Description
featureCollection U3dModelShapeFeatureCollection

조회할 피처 정보 묶음

Returns:
Type Description
Array.<U3dModelShapeMesh> 새 배열에 담은 내부 건물 Mesh 참조. 없으면 빈 배열이며, Mesh는 레이어에서 제거될 때 해제됨

setFloorFromGroupName(floorCount, height, commonName, propertyName)Array.<UGroup>|undefined

속성값과 공통 이름으로 건물을 층 그룹으로 나누고, 각 그룹의 복제 Mesh를 층 높이만큼 띄운 사용자 그룹 목록을 만듭니다.
첫 번째 속성 그룹은 원본 Mesh로 남겨 두고 나머지만 복제합니다. 먼저 setGroupOriginPosition()으로 기준 위치를 저장해야 합니다.

Name Type Description
floorCount number

필수 실행 조건으로 쓰는 층 개수. 값 자체는 그룹 수 계산에 사용하지 않음

height number | undefined

층 사이 간격(월드 단위). 기본 간격 0을 쓰려면 undefined를 전달

commonName string

그룹 이름 뒤에 붙일 공통 이름

propertyName string

층 구분 값을 읽을 Feature 속성 이름

Returns:
Type Description
Array.<UGroup> | undefined 내부에 보관하는 복제 층 그룹 목록. 입력이 없거나 건물이 없으면 undefined

setGroupOriginPosition()

각 원본 건물과 자식 Mesh의 현재 위치를 층 분리 이동의 기준 위치로 저장합니다. 층 그룹을 이동하기 전에 호출해야 합니다.

setSelectFloor(model, target, option)

층 정보가 생성된 건물의 한 층을 강조합니다. 불투명도 0이면 렌더러의 로컬 클리핑을 켜고 선택 층 밖을 잘라냅니다.

Name Type Default Description
model Mesh

대상 건물 모델

target Array.<WorldPositionVector3> | WorldPositionVector3 | number

비어 있지 않은 선택 지점의 월드 좌표(EPSG:3857) 배열, 단일 좌표 또는 1부터 시작하는 층 번호

option Partial.<{color: ColorRepresentation, opacity: number}> {} optional

선택 스타일. opacity는 0부터 1이며, 생략한 값은 기존 강조 Mesh의 값을 유지함. 최초 값은 0x00ff00과 0.7

setShpAllHeight(height, type)

모든 shp 모델의 z 위치를 지정한 높이로 맞추는 함수

Name Type Default Description
height number

맞출 높이(월드 단위)

type 'center' | 'bottom' | 'top' 'bottom' optional

높이 기준. center는 Mesh 중심, bottom은 바닥, 그 외 값은 윗면

setShpMeshHeight(mesh, height, type)

shp 모델 하나의 z 위치를 지정한 높이로 맞추는 함수

Name Type Default Description
mesh U3dModelShapeMesh

이동할 건물 Mesh

height number

맞출 높이(월드 단위)

type 'center' | 'bottom' | 'top' 'bottom' optional

높이 기준. center는 Mesh 중심, bottom은 바닥, 그 외 값은 윗면

setShpPositionFromGeographic(geo)

입력한 위경도(EPSG:4326)가 현재 레이어 중심이 되도록 모든 건물을 월드 좌표(EPSG:3857)에서 같은 거리만큼 이동합니다.

Name Type Description
geo GeoPosition | Partial.<{z: number}>

x=경도, y=위도인 좌표. z는 월드 높이이며, 생략하면 현재 레이어 중심 높이를 유지

setSideStyle(mesh, opt)

건물 Mesh의 옆면 재질을 새로 만들어 재질 배열의 두 번째 항목에 넣고 기존 옆면 재질을 해제합니다.

Name Type Default Description
mesh U3dModelShapeMesh

윗면·옆면 재질 그룹을 가진 건물 Mesh

opt U3dModelShapeMaterialOptions {} optional

옆면 재질과 Mesh 배율을 정하는 옵션

setSourceCRS(sourceCRS)

원본 데이터 좌표계 식별자를 설정합니다. 현재 구현에서는 메타데이터만 바꾸며 기존·후속 Feature 좌표를 변환하지 않습니다.

Name Type Description
sourceCRS string

EPSG:5179 같은 원본 데이터 좌표계 식별자

setStyle(style)

공통 색상과 불투명도를 바꾸고 기존 건물 재질에 적용합니다. label을 주면 레이어 전체 바운딩 박스 중심의 공통 라벨도 갱신합니다.

Name Type Default Description
style Partial.<{color: ColorRepresentation, opacity: number, label: string}> {} optional

바꿀 값. opacity는 0부터 1이며, 생략한 속성은 현재 값을 유지

setTexture(url)Promise.<(Array.<void>|undefined)>

텍스처 url를 입력받아 미리 불러오는 함수

Name Type Description
url string | Array.<string>

텍스처 url 또는 url 배열

Returns:
Type Description
Promise.<(Array.<void>|undefined)> 모든 텍스처 로드가 끝나면 완료되는 Promise. url이 없으면 undefined로 완료

setTopStyle(mesh, opt)

건물 Mesh의 윗면 재질을 새로 만들어 재질 배열의 첫 번째 항목에 넣고 기존 윗면 재질을 해제합니다.

Name Type Default Description
mesh U3dModelShapeMesh

윗면·옆면 재질 그룹을 가진 건물 Mesh

opt U3dModelShapeMaterialOptions {} optional

윗면 재질과 Mesh 배율을 정하는 옵션

setUserGroupPosition(group, position, floorCount, order)

층 그룹에 속한 건물을 저장된 원래 위치에서 그룹 순서에 따라 지정한 간격만큼 이동합니다. 먼저 setGroupOriginPosition()으로 기준 위치를 저장해야 합니다.

Name Type Default Description
group UGroup

setFloorFromGroupName()으로 만든 층 그룹

position Vector3 | Vector3Like optional

기준 위치에 더할 한 층당 이동 간격(월드 단위). 생략하면 (0, 0, 0)

floorCount number 1 optional

전체 층 그룹 수

order number 0 optional

이 그룹의 순서. 클수록 적게 이동

setUvMode(geometry, mode)

백업해 둔 원본 uv와 변환 uv 중 하나를 지오메트리에 적용합니다. 같은 모드가 이미 적용되어 있으면 아무 일도 하지 않습니다.

Name Type Description
geometry BufferGeometry | undefined

텍스처 좌표를 바꿀 지오메트리. 필요한 백업 배열이 없으면 변경하지 않음

mode 'origin' | 'converted'

origin은 로드 당시 좌표, converted는 윗면·옆면용으로 다시 계산한 좌표

show(show)

shp 모델 레이어 가시화 설정 함수. 숨길 때는 라벨도 함께 숨깁니다.

Name Type Description
show boolean

가시화 설정값

showLabel(show)

모든 건물의 라벨을 만들어 표시하거나 제거하는 함수. 레이어 공통 라벨도 함께 표시·숨김 처리합니다.

Name Type Description
show boolean

true이면 라벨을 생성하거나 표시하고 false이면 제거

textureInit()Promise.<(Array.<void>|undefined)>|void

생성자에 전달된 텍스처 URL을 미리 불러옵니다.

Returns:
Type Description
Promise.<(Array.<void>|undefined)> | void 모든 텍스처 로드가 끝나면 완료되는 Promise. URL이 없으면 반환값 없음

traverseAllFloor(mesh, callback)

건물 mesh의 모든 층과 윗면을 순회하면서 면 정보를 콜백으로 전달하는 메서드입니다.
지오메트리나 층 정보가 없으면 다섯 인자를 모두 undefined로 전달해 콜백을 한 번 호출합니다.

Name Type Description
mesh U3dModelShapeMesh

multiSideFunction 처리로 층 정보가 생성된 건물 Mesh

callback U3dModelShapeFloorCallback

정상일 때 Mesh, 월드 좌표 정점, 월드 단위 너비, 층 번호와 로컬 법선을 받는 함수

traverseFloor(mesh, floor, callback)

건물 mesh에서 지정한 층의 면만 순회하면서 면 정보를 콜백으로 전달하는 메서드입니다.
지오메트리, 층 정보 또는 해당 층이 없으면 다섯 인자를 모두 undefined로 전달해 콜백을 한 번 호출하고 끝냅니다.

Name Type Description
mesh U3dModelShapeMesh

multiSideFunction 처리로 층 정보가 생성된 건물 Mesh

floor number

순회할 1 이상의 층 번호

callback U3dModelShapeFloorCallback

정상일 때 Mesh, 월드 좌표 정점, 월드 단위 너비, 층 번호와 로컬 법선을 받는 함수

update(drawArg, curTime)

작업 버퍼에 쌓인 타일의 건물을 프레임당 최대 처리 수만큼 scene에 추가하는 함수

Name Type Description
drawArg UDrawArg

scene과 프레임당 처리 한도를 제공하는 현재 렌더링 인자

curTime number optional

최근 갱신 시간. 현재 구현은 사용하지 않음

updateHeight(tile, drawArg, force)

타일의 지형 높이에 맞춰 해당 타일에 캐시된 건물의 z 위치를 갱신하는 함수

Name Type Description
tile U3dQuadTile

건물 캐시와 지형 높이를 제공하는 갱신 대상 타일

drawArg UDrawArg optional

좌표·렌더링 상태를 제공하는 인자. 생략하면 높이를 갱신하지 않음

force boolean optional

true이면 같은 레벨에서 이미 맞춘 건물도 다시 계산

updateHeightFromMesh(tile, drawArg, force)

타일 캐시에 들어 있는 건물마다 바운딩 박스 중심의 지형 높이를 구해 z 위치를 맞추는 함수

Name Type Description
tile U3dQuadTile

캐시된 건물과 지형 높이를 제공하는 타일

drawArg UDrawArg optional

좌표·렌더링 상태를 제공하는 인자. 생략하면 높이를 갱신하지 않음

force boolean optional

true이면 같은 레벨에서 이미 맞춘 건물도 다시 계산

updateLabel(mesh, position)

건물 라벨의 위치를 옮기는 함수. 라벨이 없으면 아무 일도 하지 않습니다.

Name Type Description
mesh U3dModelShapeMesh

라벨을 가진 건물 Mesh

position Vector3 optional

새 라벨 위치(월드 좌표). 생략하면 Mesh 위치

updateStyle()

styleFunction을 다시 실행하고 모든 건물 Mesh의 재질을 갱신합니다. 교체된 기존 재질과 텍스처 자원은 해제됩니다.

Type Definitions

U3dModelShapeActiveIntervalobject

animateInterval()이 진행 중인 층 분리 애니메이션을 보관하는 상태입니다.

Properties:
Name Type Description
timer ReturnType.<Class.<setInterval>>

진행 중인 타이머

promise DeferredObject.<void>

애니메이션 완료를 알리는 대기 객체

U3dModelShapeFaceStyleobject

multiSideFunction이 한 면에 대해 반환하는 재질 선택 결과입니다.

Properties:
Name Type Argument Description
materialIndex Array.<number>

textureurl 배열 범위 안의 재질 인덱스 1~2개. 두 개면 두 번째 텍스처를 첫 번째 위에 합성함

imageScale number <optional>

두 텍스처를 합성할 때 두 번째 이미지의 상대 크기. 기본값 1

imageSize number <optional>

repeat이 1보다 클 때 필요한 캔버스 한 변의 양수 픽셀 크기

repeat number <optional>

텍스처를 가로·세로로 반복할 횟수. 1 초과일 때만 적용

U3dModelShapeFaceStyleResultundefined U3dModelShapeLayer.types~U3dModelShapeFaceStyle

multiSideFunction의 반환값입니다. undefined이면 해당 면을 재질 그룹에 넣지 않아 그리지 않습니다.

U3dModelShapeFeatureobject

Shape Feature
Feature 구조를 기반으로 하는 단일 도형 요소입니다. uuid는 건물 생성 시 레이어가 Mesh의 uuid로 채웁니다.

Properties:
Name Type Argument Description
uuid string <optional>

연결된 건물 Mesh의 uuid. 건물 생성 전에는 없음

id string <optional>

Feature를 식별하거나 라벨·Mesh 키를 만드는 데 쓰는 문자열 ID

properties KeyValue <optional>

높이·라벨·층과 사용자 속성을 읽는 객체. 생략하면 건물 생성 시 빈 객체로 채움

geometry U3dModelShapeLayer.types~U3dModelShapeGeoJSONGeometry

피처 geometry 정보

U3dModelShapeFeatureCollectionobject

Shape FeatureCollection
여러 개의 Feature를 하나로 묶은 컬렉션입니다. uuid는 addFeatureCollection()이 채웁니다.

Properties:
Name Type Argument Description
type string <optional>

GeoJSON 종류. 보통 FeatureCollection

uuid string <optional>

레이어가 등록 시 부여하는 컬렉션 식별자

features Array.<U3dModelShapeLayer.types~U3dModelShapeFeature>

컬렉션에 속한 Feature 목록

U3dModelShapeFloorCallback()

층 순회 콜백입니다. 인접한 두 삼각형을 한 면으로 묶어 호출하며, 층 정보가 없으면 모든 인수가 undefined인 채 한 번 호출됩니다.

U3dModelShapeFloorFaceobject

건물 Mesh의 한 층을 구성하는 삼각형 면 정보입니다. 정점과 법선은 Mesh 중심을 기준으로 한 로컬 좌표입니다.

Properties:
Name Type Description
floor number | 'roof'

1부터 시작하는 층 번호. 수평 윗면은 'roof'

vertices Array.<Vector3>

면을 이루는 세 정점의 로컬 좌표

normals Array.<Vector3>

세 정점의 법선 벡터

width number

삼각형의 가장 긴 변에서 층 높이를 제거해 계산한 가로 폭(월드 단위)

U3dModelShapeGeoJSONGeometryobject

addFeature()가 처리하는 GeoJSON 도형입니다. 좌표는 [경도, 위도] 순서의 EPSG:4326이며 현재 구현은 첫 외곽선만 건물 윤곽으로 사용합니다.

Properties:
Name Type Description
type 'Polygon' | 'MultiPolygon' | 'LineString'

현재 지원하는 GeoJSON 도형 종류

coordinates Double_Array.<number> | Triple_Array.<number> | Array.<Triple_Array.<number>>

도형 종류에 맞게 중첩된 [경도, 위도] 좌표 배열. 빈 배열은 처리하지 않음

U3dModelShapeGeometryobject

평면 윤곽을 높이 방향으로 늘려 만든 건물 지오메트리가 층 선택을 위해 보관하는 층별 면 목록입니다.

U3dModelShapeHighlightMeshobject

선택한 층을 덮는 강조 Mesh입니다. Mesh는 화면에 그릴 지오메트리와 재질을 묶은 객체이며, 이 타입은 한 층 높이로 압출한 지오메트리를 사용합니다.

Properties:
Name Type Description
material MeshBasicMaterial

강조 색상과 불투명도를 가진 재질

geometry UExtrudeGeometry

한 층 높이의 압출 지오메트리

setManualUpdate function

행렬 자동 갱신을 끄고 현재 행렬을 확정하는 함수

U3dModelShapeLabelOptionsobject

createLabel()에 전달하는 라벨 생성 옵션입니다. label 또는 image 중 하나는 있어야 합니다.

Properties:
Name Type Argument Default Description
name string <optional>

라벨 POI 이름

label string <optional>

라벨 문자열

image string <optional>

이미지 데이터 URL

position Vector3 <optional>

라벨 위치(월드 좌표). 생략하면 건물 중심 위

color ColorRepresentation <optional>

라벨 색상

size number <optional>

화면에 그릴 텍스트 크기

heightOffset number <optional>
0

POI 캔버스 안에서 라벨을 세로로 보정하는 픽셀 값

imageSize number <optional>
20

화면에 그릴 이미지의 픽셀 크기

U3dModelShapeLayerCOobject

~extends U3dModelLayer~U3dModelLayerCO
U3dModelShapeLayer 생성자 옵션

Properties:
Name Type Argument Default Description
name string <optional>

레이어 이름

drawline boolean <optional>
true

SHP 모델 외관선 생성 여부

crs string <optional>
'EPSG:3857'

레이어 좌표계

sourceCRS string <optional>
'EPSG:5179'

SHP 모델 원본 소스의 좌표계

minlevel number <optional>
17

레이어를 출력할 최소 타일 레벨

opacity number <optional>
1

0부터 1까지의 레이어 불투명도

transparent boolean <optional>
false

호환용 부모 옵션. 현재 구현은 전달값 대신 opacity < 1로 결정함

url string <optional>

SHP 모델 Data source URL

featureCollection U3dModelShapeLayer.types~U3dModelShapeFeatureCollection <optional>

설정값으로 보관할 SHP 모델 featureCollection. 건물 Mesh는 만들지 않음

labelInfo Array.<KeyValue> <optional>

라벨 정보 목록. 현재 구현은 보관만 함

style U3dModelShapeLayer.types~U3dModelShapeStyle <optional>

모든 건물에 적용할 공통 스타일

setTopSideStyle boolean <optional>
false

SHP 모델 출력 시 Mesh의 윗면과 옆면의 스타일을 별도로 지정할지 여부

showLabel boolean <optional>
false

SHP 모델에 POI Label을 출력할지 여부

fieldheight string <optional>

건물 전체 높이를 읽을 Feature 속성 이름

fieldlandheight string <optional>

지면(지형)에서 띄울 높이를 읽을 Feature 속성 이름

fieldlabeltext string <optional>

라벨 문자열을 읽을 Feature 속성 이름

fieldFloor string <optional>

층수를 읽을 Feature 속성 이름

floorHeight number <optional>
4

공통 층 높이(m). 층수로 전체 높이를 계산하고 층 선택 경계를 나눌 때 사용

fieldFloorHeight string <optional>

건물마다 층 높이를 읽을 Feature 속성 이름. 지정하면 floorHeight보다 우선

heightFunction function <optional>

Feature별 건물 전체 높이(m)를 반환하는 함수

landHeightFunction function <optional>

Feature별 지면 기준 높이(m)를 반환하는 함수

depthOffset number <optional>
1

윗면·옆면이 겹쳐 깜빡이는 Z-fighting을 줄이는 깊이 보정 계수

styleFunction U3dModelShapeLayer.types~U3dModelShapeStyleFunction <optional>

Feature별 표시 스타일을 반환하는 함수

usetexture boolean <optional>
false

SHP 모델에 텍스처를 지정할지 여부

textureurl string | Array.<string> <optional>

미리 불러올 텍스처 URL 또는 URL 배열. 두 값을 모두 생략하면 빈 배열

textureUrl string | Array.<string> <optional>

textureurl의 별칭

proxyurl string <optional>
''

텍스처 요청 앞에 붙일 프록시 URL. 현재 생성 경로에는 프록시 활성 옵션이 없어 빈 문자열로 초기화됨

U3dModelShapeLayerParamobject

getParam()이 반환하는 SHP 모델 레이어의 저장 가능한 설정입니다. FeatureCollection과 레이어의 높이·스타일 콜백 필드는 제외되지만, 공유 style 안의 multiSideFunction은 남을 수 있습니다.

Properties:
Name Type Description
name string

레이어 이름

minlevel number

카메라 거리별 상세도를 나누는 타일 레벨 중 건물을 표시하기 시작하는 값

maxlevel number

건물을 표시하는 마지막 타일 레벨. 현재 구현은 minlevel과 같은 값

transparent boolean

투명도 적용 여부. true면 불투명도가 1 미만

url string | undefined

생성자에 전달한 데이터 URL

sourceCRS string

원본 데이터 좌표계로 보관한 EPSG 식별자

style U3dModelShapeLayer.types~U3dModelShapeStyle

모든 건물에 적용하는 내부 공통 스타일 객체의 공유 참조

fieldHeight string | undefined

건물 전체 높이를 읽는 Feature 속성 이름

fieldLandHeight string | undefined

지면 기준 높이를 읽는 Feature 속성 이름

fieldLabelText string | undefined

라벨 문자열을 읽는 Feature 속성 이름

fieldFloor string | undefined

층수를 읽는 Feature 속성 이름

floorHeight number

공통 층 높이(m)

useTexture boolean

생성 시 텍스처를 적용하는지 여부

textureUrl string | Array.<string>

내부에서 공유하는 텍스처 URL 또는 URL 배열. 배열을 변경하면 이후 재질 생성에도 반영됨

proxyurl string

텍스처 요청 앞에 붙이는 프록시 URL

useproxy boolean | undefined

프록시 사용 여부. 현재 구현은 설정 경로가 없어 항상 undefined

U3dModelShapeLayerRuntimeFieldsPartial.<{_activeInterval: U3dModelShapeLayer.types~U3dModelShapeActiveInterval, _allModelIsAddScene: boolean, _useproxy: boolean}>

생성자 밖에서 필요할 때만 기록되는 레이어 런타임 필드입니다. 값이 없을 수 있으므로 모두 선택 속성입니다.

U3dModelShapeMaterialOptionsobject

setSideStyle()과 setTopStyle()에 전달하는 재질 옵션입니다.

Properties:
Name Type Argument Description
color ColorRepresentation <optional>

재질 색상. 기본값 0xfaebd7

emissive ColorRepresentation <optional>

발광 색상. 기본값 0x000000

metalness number <optional>

0부터 1까지의 금속성. 기본값 0

roughness number <optional>

0부터 1까지의 표면 거칠기. 기본값 0.8

opacity number <optional>

0부터 1까지의 불투명도. 옆면 기본값 1, 윗면 기본값은 레이어 불투명도

transparent boolean <optional>

투명 처리 여부. 생략하면 opacity < 1

side Side <optional>

카메라를 향한 앞면·뒷면 중 렌더링할 방향. 기본값 DoubleSide

setGrayscale boolean <optional>

true이면 색상을 회색조로 바꾸고 발광색으로도 사용

depthWrite boolean <optional>

다른 물체와의 앞뒤 판정에 쓰는 깊이 버퍼 기록 여부. 기본값 true

polygonOffset number <optional>

겹친 면의 깜빡임을 줄이는 깊이 보정 계수. 0이 아니면 polygonOffsetFactor로 사용

scale number | Vector3Like <optional>

양수인 Mesh 크기 배율. 숫자면 세 축에 같은 값, 객체면 축별 값

U3dModelShapeMeshobject

레이어가 건물 Mesh에 추가로 기록하는 속성과 런타임 확장 메서드입니다.

Properties:
Name Type Description
geometry U3dModelShapeLayer.types~U3dModelShapeGeometry

층 정보를 포함하는 압출 지오메트리

userData U3dModelShapeLayer.types~U3dModelShapeMeshUserData

레이어가 기록하는 사용자 데이터

setManualUpdate function

행렬 자동 갱신을 끄고 현재 행렬을 확정하는 함수

U3dModelShapeMeshUserDataobject

건물 Mesh의 userData에 레이어가 기록하는 값입니다.

Properties:
Name Type Argument Description
label U3dPOI <optional>

건물 라벨 POI. 라벨을 끄면 제거됨

landHeight number <optional>

월드 스케일로 변환한 지면 기준 높이

buildHeight number <optional>

월드 스케일로 변환한 건물 전체 높이

id string <optional>

Feature id 또는 위치 기반 생성 키

styleinfo Object <optional>

마지막으로 적용한 스타일의 표시 여부

originMeshID string <optional>

층 분리 복제 Mesh가 가리키는 원본 Mesh의 uuid

U3dModelShapeModelIndexObject Record.<string, (boolean|U3dModelShapeLayer.types~U3dModelShapeMesh)>

타일 키별로 어떤 건물이 걸쳐 있는지와 건물별로 어떤 타일이 그려졌는지 기록하는 색인 항목입니다.

U3dModelShapeMultiSideFunction()

면마다 재질을 선택하는 사용자 함수입니다. Mesh, 월드 좌표 정점, 월드 단위 폭, 1부터 시작하는 층 번호와 Mesh 로컬 법선을 받습니다. undefined를 반환하면 그 면을 그리지 않습니다.

U3dModelShapeSelectedFloorobject

setSelectFloor()가 건물별로 보관하는 층 선택 상태입니다. 클리핑 평면은 카메라에 표시할 공간을 경계면 기준으로 잘라내는 렌더링 설정입니다.

Properties:
Name Type Argument Description
highLight U3dModelShapeLayer.types~U3dModelShapeHighlightMesh

선택한 층을 덮는 강조 Mesh

upPlane Plane <optional>

투명 선택 시 위쪽 클리핑 평면

downPlane Plane <optional>

투명 선택 시 아래쪽 클리핑 평면

U3dModelShapeStyleobject

건물 Mesh에 적용하는 표시 스타일입니다. 공통 style은 전체 형태를 사용하고 styleFunction은 필요한 속성만 반환할 수 있습니다. 색상은 CSS 색상 문자열, 16진수 숫자 또는 Color이고 불투명도는 0(완전 투명)부터 1(완전 불투명)입니다.

Properties:
Name Type Argument Description
color ColorRepresentation

건물 색상

opacity number

건물 불투명도

visible boolean

건물 표시 여부. false이면 Mesh를 만들되 화면에 그리지 않음

side Side <optional>

재질의 렌더링 면. 기본 스타일에서만 사용

label string <optional>

레이어 전체 바운딩 박스 중심에 표시할 공통 라벨. setStyle()에서 사용

imgvisible boolean <optional>

true이면 레이어 옵션과 무관하게 텍스처 재질을 만들고, false이면 단색 재질을 만듦

imgurl string | Array.<string> <optional>

이 건물에만 사용할 텍스처 URL 또는 URL 배열. 생략하면 레이어의 textureurl을 사용

multipleTexture boolean <optional>

true이면 textureurl의 모든 텍스처를 재질 배열로 만들고 multiSideFunction으로 면마다 재질을 고름

multiSideFunction U3dModelShapeLayer.types~U3dModelShapeMultiSideFunction <optional>

건물의 각 면에 사용할 재질 인덱스와 반복 설정을 반환하는 함수

U3dModelShapeStyleFunction()

Feature별 표시 스타일을 정하는 사용자 함수입니다.

U3dModelShapeStyleResultundefined Partial.<U3dModelShapeLayer.types~U3dModelShapeStyle>

styleFunction의 반환값입니다. undefined이면 공통 style을 사용합니다.