GeOnDT GeOnDT for JS

Class: U3dMultipleComponentLayer

U3dMultipleComponentLayer

~extends U3dModelBasicLayer

컴포넌트(Component) 레이어 클래스.
여러 종류의 3D 에셋으로 컴포넌트를 생성하고 화면에 추가·편집·제거하는 기능을 제공한다.
일반 컴포넌트와 인스턴스 컴포넌트(Instanced Component)를 지원한다.

<<----용어 정리---->>
[3D 에셋(Asset)]
3ds, glb, obj, fbx 등 3D 파일 포맷으로 제공되는 원본 파일 데이터.
[컴포넌트(Component)]
3D 에셋을 로드하여 화면에 배치 가능한 상태로 만든 시설물 객체. (예: 가로수, 드론, 건물, 도로)
[Instanced Mesh]
동일한 Mesh를 복사 없이 여러 위치에 빠르게 렌더링하는 방식. 메모리 효율이 높으나 환경에 따라 렌더링 부하가 발생할 수 있다.
[인스턴스 컴포넌트(Instanced Component)]
Instanced Mesh로 생성된 컴포넌트. 대규모·대용량 시설물 출력에 유리하다.

new U3dMultipleComponentLayer(opt)

컴포넌트(Component) 레이어 생성옵션

Name Type Description
opt Partial.<U3dMultipleComponentLayer~U3dMultipleComponentLayerCO>
Example
const componentLayer = new GeOnDT.model.U3dMultipleComponentLayer({
     name: "ComponentLayer",
     setInstanced: true
});

app.addLayer(componentLayer);
app.showLayer("ComponentLayer", true);

Members

EVENTany

OPT_KEYS

Methods

addPosition(opt)U3dMultipleComponentLayer~Component|undefined

컴포넌트를 생성할 랜더링 위치를 지정하고 컴포넌트를 생성하는 메서드입니다. style의 밝기·대비는 생성 전에 검증합니다. 숫자가 아니면 TypeError, 음수·비유한 값·Float32 표현 범위 초과이면 RangeError를 발생시키며 객체와 인스턴스 ID를 생성하지 않습니다.

Name Type Description
opt U3dMultipleComponentLayer~ComponentCreateOption

컴포넌트 생성 옵션입니다.

Returns:
Type Description
U3dMultipleComponentLayer~Component | undefined 컴포넌트 생성 실패 시 undefined를 반환합니다.

changeObject(id, option)

현재 출력되고 있는 컴포넌트 3D 에셋을 다른 3D 에셋으로 변경하는 메서드입니다.
변경하려는 3D 에셋은 사전에 load되어 (_listModel) 프로퍼티에 저장되어 있어야 합니다.

Name Type Description
id string

레이어의 등록된 컴포넌트의 아이디

option U3dMultipleComponentLayer~ChangeObjectOpt

변경옵션

Example
layer.changeObject('path_5680' , {
            object : 'drone_01',
            animationNum : 2,
            rotation :{x: 0, y: 0, z: 0},
            scale : {x: 1, y: 1, z: 1}
   });

checkObjectSize(model)boolean

Name Type Description
model Object3D
Returns:
Type Description
boolean

debugBound(isDebug, color)boolean

Name Type Default Description
isDebug boolean
color ColorRepresentation 16776960
Returns:
Type Description
boolean

dispose()

getBbox(key)UBox3|undefined

로드 된 3d 에셋의 박스영역 정보를 이름으로 찾는 메서드입니다.

Name Type Description
key string

3d 에셋 이름

Returns:
Type Description
UBox3 | undefined 박스영역

getComponentByName(name)U3dMultipleComponentLayer~Component|undefined

이름으로 컴포넌트를 찾아 반환하는 메서드.
컴포넌트를 찾을 수 없으면 undefined를 반환한다.

Name Type Description
name string

컴포넌트 이름

Returns:
Type Description
U3dMultipleComponentLayer~Component | undefined 컴포넌트

getComponentList()

Deprecated
  • getComponents() 를 사용하세요.

    getComponents()Array.<U3dMultipleComponentLayer~Component>

    전체 컴포넌트 목록을 반환하는 메서드.

    Returns:
    Type Description
    Array.<U3dMultipleComponentLayer~Component> 전체 컴포넌트 목록

    getComponentsByArea(points)Array.<U3dMultipleComponentLayer~Component>

    바닥 영역을 구성하는 좌표점을 입력받아, 해당 영역 내에 위치한 컴포넌트 목록을 검색하는 함수

    Name Type Description
    points Array.<GeoPosition>

    검색 영역을 구성하는 위경도 좌표 배열

    Returns:
    Type Description
    Array.<U3dMultipleComponentLayer~Component> 해당하는 component 목록 반환

    getComponentsByModel(modelName)Array.<U3dMultipleComponentLayer~Component>

    모델이름으로 생성된 component List를 반환

    Name Type Description
    modelName

    listmodel 속성 값에 생성시 model 이름

    Returns:
    Type Description
    Array.<U3dMultipleComponentLayer~Component> 해당하는 component 목록 반환

    getComponentsByProperty(callback)Array.<U3dMultipleComponentLayer~Component>

    컴포넌트의 속성 정보(Property)로 특정 컴포넌트를 검색하는 함수

    Name Type Description
    callback function

    검색 콜백함수. 파라미터로 컴포넌트 객체와 해당하는 속성정보를 입력받는다.

    Returns:
    Type Description
    Array.<U3dMultipleComponentLayer~Component> 해당하는 component 목록 반환
    Example
    const searched = componentLayer.getComponentsByProperty( function (component, properties) {
         for(let [key, value] of Object.entries(properties)) {
             if(key.equal("건축용도")) {
                  return component;
             } else if(Class}
         }
     });
    
     for(const component of searched) {
        console.log(`[${component.name}] 검색 완료!`);
     }

    인스턴스 컴포넌트의 메타데이터를 반환하는 메서드

    Returns:
    Type Description
    U3dMultipleComponentLayer~InstancedInfoStore 인스턴스 컴포넌트 정보

    로드된 3D 에셋 파일 의 원본 정보 목록을 반환하는 메서드.

    Returns:
    Type Description
    Array.<U3dMultipleComponentLayer~ModelDataInfo> 3D 에셋 원본 정보 목록

    getListModelByName(name)U3dMultipleComponentLayer~ModelDataInfo|undefined

    이름으로 3D 에셋 원본 정보를 찾아 반환하는 메서드.

    Name Type Description
    name string

    찾을 3D 에셋 이름

    Returns:
    Type Description
    U3dMultipleComponentLayer~ModelDataInfo | undefined 찾은 3D 에셋 원본 정보. 없으면 undefined

    getPositionList()

    Deprecated
    • 사용 안하는 메서드입니다. getComponents() 를 사용하세요.

      hide()

      레이어 비가시화(hide) 함수

      hideComponent(component)Promise.<void>

      특정 컴포넌트를 화면에서 감추는(hide) 메서드입니다.

      Name Type Description
      component U3dMultipleComponentLayer~Component

      대상 컴포넌트. 인스턴스 컴포넌트를 포함합니다.

      Returns:
      Type Description
      Promise.<void> 작업 성공 -> resolve(), 작업 실패 -> reject()

      hideLabel()Promise.<boolean>

      레이어의 모든 컴포넌트 라벨 POI을 비가시화(hide)하는 메서드입니다.

      Returns:
      Type Description
      Promise.<boolean> 작업 성공 -> true, 작업 실패 -> false

      isInstanced()boolean

      현재 레이어가 인스턴스 컴포넌트 생성 모드인지 확인하는 메서드.
      true일 경우, addPosition() 호출 시 컴포넌트가 인스턴스 방식으로 생성된다.

      Returns:
      Type Description
      boolean true : 인스턴스 모드 / false : 일반 모드

      loadModel(modelInfo)Promise.<(void|ModelObject3D)>

      입력한 3D 에셋 정보를 파싱해 GeOnDT가 사용할 수 있는 데이터로 로드하는 메서드입니다.

      Name Type Description
      modelInfo U3dMultipleComponentLayer~ModelDataInfo

      3D 에셋 정보

      Returns:
      Type Description
      Promise.<(void|ModelObject3D)>
      Example
      let model = {
           name: '다가구주택',
           ext: '3ds',
           baseurl: '모델 요청 URL',
           fileName: 'VIL_A.3ds'
      }
      layer.loadModel(model);

      loadWork(savedData)Promise.<Array.<(U3dComponentPosition|undefined)>>

      레이어의 작업을 불러오는 함수

      Name Type Description
      savedData ComponentParam

      저장된 작업 데이터(단일/배열 허용)

      Returns:
      Type Description
      Promise.<Array.<(U3dComponentPosition|undefined)>> 모든 컴포넌트 결과 배열

      offSelectHelperMeshes()

      컴포넌트 선택을 위한 헬퍼 메시를 비활성화하는 메서드

      onSelectHelperMeshes()

      컴포넌트 선택을 위한 헬퍼 메시를 활성화하는 메서드

      pauseAnimation()

      전체 컴포넌트의 이동/주행 애니메이션을 일시정지하는 메서드입니다..
      addMovePoint(), moveStart() 등으로 시작된 경로 기반 이동을 일시 정지합니다.

      removeAllComponent()

      전체 컴포넌트를 제거하는 메서드입니다.

      removeAllPosition()

      Deprecated
      • 사용하지 않는 메서드입니다. removeAllComponent 메서드를 사용하세요.

        removeComponent(selected)

        특정 컴포넌트를 레이어에서 제거하는 메서드입니다.

        Name Type Description
        selected U3dMultipleComponentLayer~Component

        제거할 컴포넌트

        removeComponentByName(name)

        컴포넌트의 이름을 받아 해당하는 컴포넌트를 제거하는 메서드입니다.

        Name Type Description
        name string

        제거할 컴포넌트 이름

        removeLabel()Promise.<boolean>

        레이어의 모든 컴포넌트 라벨 POI을 삭제하는 메서드입니다.

        Returns:
        Type Description
        Promise.<boolean> 작업 성공 -> true, 작업 실패 -> reject

        removeModelAlphaMap(name)

        이름으로 등록된 컴포넌트의 알파맵 속성을 제거하는 메서드입니다.

        [용어]
        알파맵(alphaMap) - 표면 전체의 불투명도를 제어하는 회색조 텍스처

        Name Type Description
        name string

        컴포넌트 이름

        removePosition(selected)

        Name Type Description
        selected U3dMultipleComponentLayer~Component
        Deprecated
        • removeComponentByName 메서드를 사용하세요.

          removePositionByName(name)

          Name Type Description
          name string

          제거하려는 컴포넌트 이름

          Deprecated
          • 사용하지 않는 메서드입니다. removeComponentByName 메서드를 사용하세요.

            resetModelAlphaMap(name)

            이름으로 등록된 컴포넌트의 알파맵 속성을 원본으로 되돌리는 메서드입니다.

            [용어]
            알파맵(alphaMap) - 표면 전체의 불투명도를 제어하는 회색조 텍스처

            Name Type Description
            name string

            컴포넌트 이름

            restartAnimation()

            전체 컴포넌트의 이동/주행 애니메이션을 재시작하는 메서드입니다.
            addMovePoint(), moveStart() 등으로 시작된 경로 기반 이동을 초기화 하고 재시작 한다.

            saveWork()Object|undefined

            컴포넌트 등 레이어의 작업을 저장하는 함수

            Returns:
            Type Description
            Object | undefined

            selectComponentByTrails(e)Array.<U3dMultipleComponentLayer~Component>

            누적 경로(trail)를 통해 해당하는 컴포넌트를 선택하는 함수

            Name Type Description
            e MouseEvent

            클릭 이벤트

            Returns:
            Type Description
            Array.<U3dMultipleComponentLayer~Component> 선택된 컴포넌트 리스트

            setBbox(key, value)

            로드 된 3d 에셋의 박스영역 정보를 key-value 형식으로 저장하는 메서드입니다.

            Name Type Description
            key string

            저장 키

            value UBox3

            박스영역

            setCameraTrace(opt)

            특정 컴포넌트를 기준으로 카메라 추적 시점을 설정합니다. 비행 시뮬레이션 등 컴포넌트 애니메이션 적용 시 카메라의 시점을 제어합니다.

            Name Type Description
            opt U3dMultipleComponentLayer~CameraViewOption

            카메라 추적 제어 옵션

            setHelperPosition(position)

            helper 포지션의 위치를 설정

            Name Type Description
            position WorldPositionVector3 optional

            설정 할 world 좌표 위치

            setInstanced(val)

            컴포넌트 출력 시 Instanced mesh로 출력할 것인지 설정하는 함수

            Name Type Description
            val boolean

            Instanced mesh 여부

            setModelAlphaTest(name, alphaFilter)

            이름으로 등록된 컴포넌트의 알파테스트 속성을 설정하는 메서드입니다.
            [용어]
            알파 테스트(Alpha Test) - 재질의 투명도 값을 기준으로 픽셀을 렌더링할지 여부를 결정 속성 값
            (opacity값이 알파테스트 값보다 낮으면 화면에 렌더링되지 않습니다.)

            Name Type Description
            name string

            컴포넌트 이름

            alphaFilter number

            알파테스트 정수

            setRotation(degree, axis)

            레이어에 회전각을 지정하는 메서드입니다.
            레이어에 출력되고 있는 컴포넌트에 일괄적으로 회전각이 지정됩니다.

            Name Type Description
            degree number

            회전각

            axis Vector3Like

            회전축 ex) {x:1, y:0, z:0} x축 기준 회전

            setScale(scale)

            레이어에 표시된 모든 컴포넌트의 크기를 전체 설정하는 메서드입니다.

            Name Type Description
            scale Vector3Like | number

            크기값.
            { x, y, z } 또는 Vector3로 입력하면 각 축을 개별적으로 설정합니다.
            숫자로 입력하면 X, Y, Z 축 모두 동일한 크기로 설정합니다.

            show()

            레이어 가시화(show) 함수

            showComponent(component)Promise.<void>

            특정 컴포넌트를 화면에 나타내는(show) 메서드입니다.

            Name Type Description
            component U3dMultipleComponentLayer~Component

            대상 컴포넌트. 인스턴스 컴포넌트를 포함합니다.

            Returns:
            Type Description
            Promise.<void> 작업 성공 -> resolve(), 작업 실패 -> reject()

            showLabel()Promise.<boolean>

            레이어의 모든 컴포넌트 라벨 POI을 가시화(show)하는 메서드입니다.

            Returns:
            Type Description
            Promise.<boolean> 작업 성공 -> true, 작업 실패 -> false

            startAnimation()

            전체 컴포넌트의 이동/주행 애니메이션을 시작하는 메서드입니다.
            addMovePoint(), moveStart() 등으로 시작된 경로 기반 이동을 시작합니다.

            startMixers()

            전체 컴포넌트의 내장 애니메이션 클립 재생을 시작하는 메서드입니다.
            프로펠러 회전, 걷기 동작처럼 3D 에셋 파일 자체에 포함된 클립 애니메이션을 시작합니다.

            stopAnimation()

            /** 전체 컴포넌트의 이동/주행 애니메이션을 정지하는 메서드입니다.
            addMovePoint(), moveStart() 등으로 시작된 경로 기반 이동을 멈춥니다.

            stopMixers()

            전체 컴포넌트의 내장 애니메이션 클립 재생을 정지하는 메서드입니다.
            프로펠러 회전, 걷기 동작처럼 3D 에셋 파일 자체에 포함된 클립 애니메이션을 멈춥니다.

            update(drawArg, curTime)

            Name Type Description
            drawArg UDrawArg optional
            curTime number optional

            visibleCumulativeRoute(isVisible)

            컴포넌트 전체 누적 경로(CumulativeRoute)의 가시화를 설정하는 함수

            Name Type Description
            isVisible boolean

            가시화 여부 (true || false)

            Type Definitions

            ModelDataInfo

            3D 에셋 파일을 로드할 때 필요한 원본 정보.
            3ds, obj, glb, fbx 등 다양한 3D 파일 포맷을 지원한다.

            Properties:
            Name Type Description
            name string

            3D 에셋 이름 (사용자가 직접 지정)

            baseurl string

            3D 에셋 파일을 불러올 URL 경로

            fileName string

            3D 에셋의 원본 파일명 (예: "building.3ds")

            ext string

            3D 에셋 파일 포맷 (예: "3ds", "obj", "glb", "fbx")