new U3dGeometry(opt, isInit)
3D 도형의 기반 객체를 생성합니다. (주로 하위 클래스에서 상속하여 사용합니다)
| Name | Type | Default | Description |
|---|---|---|---|
opt |
U3dGeometryCO | {} |
optional
생성 옵션 (이름·색상·투명도·좌표 등 공통 옵션) |
isInit |
boolean | true |
optional
true면 생성 시 즉시 초기화합니다. 상속 클래스에서 초기화를 미룰 때만 false를 사용합니다 |
Members
-
EVENTU3dGeometryEMI
-
이 도형이 발생시키는 이벤트의 이름 모음입니다.
geometry.on(U3dGeometry.EVENT.CHANGE, handler)처럼 리스너를 등록할 때 사용합니다. -
colorColor ColorRepresentation
-
도형 표면 색상입니다.
생성 시에는THREE.Color로 변환해 담고,setColor로 바꾸면 넘긴 값이 그대로 들어갑니다. 재질에 반영하려면setColor를 사용합니다. -
depthOffsetnumber undefined
-
깊이 판정을 카메라 쪽으로 당기는 보정치입니다. (미터)
지형에 반쯤 묻힌 도형이 잘려 보이는 것을 줄이는 데 사용하며, 값을 지정한 적이 없으면undefined입니다. 자세한 동작은setDepthOffset에서 설명합니다. -
dynamicDepthOffsetboolean
-
깊이 보정치를 매 프레임 자동으로 측정할지 여부입니다.
true면 렌더 직전에 지형에 묻힌 정도를 재서depthOffset대신 그 값을 사용합니다. 기본값은false입니다. -
namestring
-
도형 이름입니다.
레이어에서 도형을 찾을 때 쓰는 식별자이며, 생성 옵션에 넣지 않으면 무작위 문자열이 자동으로 만들어집니다. -
opacitynumber
-
불투명도입니다. (0~1)
0이면 완전 투명, 1이면 불투명하며 기본값은 0.7입니다. 재질에 반영하려면setOpacity를 사용합니다. -
typestring
-
도형 종류 식별자입니다.
기본값은'basic'이며, 이 값으로 무엇이 달라지는지는 하위 클래스마다 다릅니다. 예를 들어 육면체는'topimage'를 넣으면 윗면에 이미지를 입힌 재질로 만듭니다. -
wireframeboolean
-
면을 채우지 않고 삼각형 모서리만 선으로 그릴지 여부입니다.
형태와 분할 상태를 확인할 때 사용하며 기본값은false입니다.
Methods
-
addPosition(x, y, z)
-
도형에 위경도 좌표를 하나 추가합니다.
좌표를 넣어 두면 도형이 속한 레이어가 월드 좌표로 바꿔 형상에 반영합니다.Name Type Description xVector3 | number 좌표 하나를 담은
Vector3, 또는 경도 (EPSG:4326)ynumber optional 위도 (EPSG:4326). 첫 번째 인자에 숫자를 넣었을 때만 사용합니다
znumber optional 높이 (미터). 첫 번째 인자에 숫자를 넣었을 때만 사용합니다
-
addProperties(key, value)
-
사용자 정의 속성을 하나 추가합니다.
이미 같은 키가 있으면 값을 덮어쓰지 않고 콘솔에 기록을 남깁니다. 값을 바꿀 때는changeProperties를 사용합니다.Name Type Description keystring 속성을 구분할 키. 빈 문자열은 추가하지 않습니다
value* 키에 담을 값. 형식에 제한이 없고 화면 표현에는 쓰이지 않으며,
undefined와null은 추가하지 않습니다 -
addVertex(vec3)
-
꼭짓점 좌표를 추가합니다.
Name Type Description vec3WorldPositionVector3 추가할 꼭짓점 좌표 (월드 좌표, EPSG:3857)
-
addWorldPosition(x, y, z)
-
월드 좌표를 위경도로 변환해 도형에 좌표로 추가합니다.
월드 좌표를 그대로 두려면addVertex를 사용합니다.Name Type Description xnumber 월드 X좌표 (EPSG:3857)
ynumber 월드 Y좌표 (EPSG:3857)
znumber 월드 Z좌표 (EPSG:3857). 위도 보정 배율을 곱해 미터 높이로 바뀝니다
-
changeProperties(key, value)
-
이미 있는 사용자 정의 속성의 값을 바꿉니다.
없는 키를 넘기면 값을 만들지 않고 콘솔에 기록을 남깁니다. 새로 넣을 때는addProperties를 사용합니다.Name Type Description keystring 값을 바꿀 속성의 키
value* 새로 넣을 값.
undefined와null은 반영하지 않습니다 -
getCenter()Vector3
-
도형의 중심점을 반환합니다. (지오메트리 경계 상자의 중심 기준)
Returns:
Type Description Vector3 도형 로컬 좌표 기준 중심점. 호출할 때마다 새 벡터를 만들어 돌려줍니다 -
getDepthOffset()number|undefined
-
현재 깊이 보정값을 반환합니다.
Returns:
Type Description number | undefined 깊이 보정값 (미터). 깊이 보정하지 않으면 undefined를 반환합니다. -
getDepthOffsetFunction()function|undefined
-
현재 설정된 depthOffset 측정 함수를 반환합니다. (
setDepthOffsetFunction과 짝을 이룹니다)Returns:
Type Description function | undefined 설정해 둔 측정 함수. 설정한 적이 없으면 undefined이며 이때는 기본 측정 함수를 사용합니다 -
getDynamicDepthOffset()boolean
-
깊이 보정치를 매 프레임 자동으로 측정하는 상태인지 반환합니다. (
setDynamicDepthOffset과 짝을 이룹니다)Returns:
Type Description boolean 자동 측정을 사용하면 true -
getGeometry()UBufferGeometry
-
이 도형이 사용하는 BufferGeometry 객체를 반환합니다.
Returns:
Type Description UBufferGeometry 정점·법선 같은 형상 데이터를 담은 지오메트리. 이 도형이 쓰고 있는 객체이므로 고치면 화면에도 반영됩니다 -
getImage()string|undefined
-
도형 재질에 적용된 이미지 텍스처의 URL을 반환합니다. (
setImage와 짝을 이룹니다)Returns:
Type Description string | undefined 마지막으로 setImage에 넘긴 URL. 호출한 적이 없으면undefined이며, 재질이 없어 실제로 입히지 못한 경우에도 넘긴 URL이 그대로 남습니다 -
getLineColor()ColorLike
-
외곽선 색상을 반환합니다. (
setLineColor와 짝을 이룹니다)
지정한 적이 없으면 기본값'#000000'입니다. 외곽선이 없는 도형에서는setLineColor가 값을 저장하지 않으므로 생성 옵션에 넣은 값이 그대로 남습니다.Returns:
Type Description ColorLike 외곽선 색상 -
도형에 적용된 재질(Material) 객체를 반환합니다.
Returns:
Type Description Material | Array.<Material> | undefined 이 도형이 쓰고 있는 재질. 면마다 다른 재질을 쓰는 도형은 배열이며, 재질을 만들기 전이면 undefined -
getParam()*
-
모든 도형이 공통으로 갖는 속성(색상·투명도·그림자·와이어프레임)을 반환합니다. (
setParam과 짝을 이룹니다)
각 도형의 고유 속성은 하위 클래스가 이 메서드를 오버라이드해서 덧붙이며, 그 안에서super.getParam()을 펼쳐 공통 속성을 함께 담습니다. 다만U3dFlowPipe처럼 공통 속성을 담지 않고 자체 속성 객체만 돌려주는 도형도 있어, 반환 타입은 도형마다 다릅니다.Returns:
Type Description * 현재 속성 객체. color·opacity·lineColor·shadow·wireframe·depthOffset·dynamicDepthOffset·depthOffsetFunction이 담기며, 호출할 때마다 새 객체를 만들어 돌려줍니다Example
const param = geometry.getParam(); other.setParam(param); // 같은 속성으로 맞추기 -
getPositions()Array.<GeoPositionVector3>
-
도형의 위경도 좌표 배열을 반환합니다.
Returns:
Type Description Array.<GeoPositionVector3> 위경도 좌표 배열 (EPSG:4326) -
getProperties()KeyValue
-
도형에 저장된 사용자 정의 속성(properties)을 반환합니다.
properties는 id·이름·업무 데이터 등 임의의 부가 정보를 key-value 형태로 담아 두는 공간입니다.Returns:
Type Description KeyValue 사용자 정의 속성 (key-value) -
getShowLabel()boolean
-
라벨을 표시하는 상태인지 반환합니다. (
setShowLabel과 짝을 이룹니다)Returns:
Type Description boolean 라벨을 표시하면 true -
getVertex()Array.<WorldPositionVector3>
-
도형의 꼭짓점 좌표(월드 좌표) 배열을 반환합니다.
Returns:
Type Description Array.<WorldPositionVector3> 꼭짓점 좌표 배열 (월드 좌표, EPSG:3857) -
getVertexIndex(vec3)number
-
좌표의 인덱스를 조회합니다. 내부
_coordinates배열(위경도)에서 동일 참조의 인덱스를 반환합니다.Name Type Description vec3GeoPositionVector3 조회할 좌표 (위경도, EPSG:4326)
Returns:
Type Description number 일치하는 좌표의 인덱스, 없으면 -1 -
isShadow()boolean
-
도형의 그림자가 켜져 있는지 여부를 반환합니다.
Returns:
Type Description boolean 그림자를 드리우면 true. 그림자를 드리우는 설정만 확인합니다 -
removePosition(idx)
-
지정한 인덱스의 위경도 좌표를 제거합니다.
Name Type Description idxnumber 제거할 좌표 인덱스
-
removeProperties(key)
-
지정한 키의 사용자 정의 속성을 제거합니다.
없는 키를 넘기면 아무것도 바뀌지 않습니다.Name Type Description keystring 제거할 속성의 키
-
removeVertex(idx)
-
지정한 인덱스의 꼭짓점 좌표를 제거하고 지오메트리를 갱신합니다.
Name Type Description idxnumber 제거할 꼭짓점 인덱스
-
setColor(color)
-
도형의 색상을 설정합니다.
Name Type Description colorColorRepresentation 도형 색상. 16진수 숫자(
0xff0000), CSS 색 문자열('#ff0000') 또는THREE.Color를 넣습니다 -
setDepthOffset(depthOffset)
-
도형이 지형이나 다른 모델에 가려지는 것을 완화하도록 깊이 값을 카메라 쪽으로 당깁니다.
0보다 크면 그만큼 앞에 있는 것처럼 깊이 판정을 받아, 지면에 반쯤 묻힌 도형이 경사지에서 지형에 잘려 보이는 문제를 줄일 수 있습니다. 깊이 테스트는 그대로 켜져 있으므로, 이 범위를 넘어서 앞에 있는 것은 여전히 이 도형을 가립니다.사용자는 미터 단위로 지정하며, 렌더 직전에 월드 단위로 변환됩니다.
dynamicDepthOffset이 켜져 있으면 동적 계산값을 적용하고, 계산할 수 없을 때만 사용자 지정값을 사용합니다.Name Type Description depthOffsetnumber 카메라 쪽으로 당길 최소 거리 (미터). 0을 넣으면 보정하지 않는 것과 같고, 음수는 0으로 맞춥니다. 숫자로 바꿀 수 없는 값을 넣으면
undefined가 되어getDepthOffset도undefined를 돌려줍니다Example
disc.setDepthOffset(10); // 10m -
setDepthOffsetFunction(func)
-
dynamicDepthOffset이 true일 때 매 프레임 지형 묻힘 정도를 측정하는 데 사용할 함수를 설정합니다.
측정 함수는{drawArg, object, camPos, size, cameraDistance}를 인자로 받아 미터 단위 depthOffset을 돌려줍니다.
함수가 아닌 값은 등록하지 않고 지금 설정을 유지합니다. 설정한 적이 없으면 기본 측정 함수(measureGroundDepthOffset)를 사용합니다.Name Type Description funcfunction 깊이 보정치를 재는 함수.
{drawArg, object, camPos, size, cameraDistance}를 받아 미터 단위 값을 반환합니다Example
disc.setDepthOffsetFunction(({cameraDistance}) => cameraDistance * 0.001); -
setDynamicDepthOffset(enabled)
-
렌더 직전에 지형 묻힘 정도를 자동으로 측정할지 지정합니다.
Name Type Description enabledboolean true면 렌더 직전에 묻힘 정도를 재서 쓰고,false면depthOffset에 지정한 값을 그대로 씁니다 -
setGeometry(geometry)
-
이 도형의 BufferGeometry 객체를 교체합니다.
Name Type Description geometryUBufferGeometry 새로 사용할 지오메트리. 이전 지오메트리는 자동으로 해제되지 않습니다
-
setImage(url)
-
도형 재질에 이미지 텍스처를 입힙니다.
이미지는 비동기로 내려받으며, 다 받은 뒤 가로가 길면 좌우를, 세로가 길면 상하를 뒤집어 붙입니다. 이미 붙여 둔 이미지가 있으면 함께 해제합니다.Name Type Description urlstring 이미지 URL
-
setLineColor(lineColor)
-
외곽선(테두리 선) 색상을 설정합니다.
외곽선을 가진 도형에만 적용되며, 외곽선이 없는 도형에서 호출하면 색을 바꾸지 않고 콘솔에 기록을 남깁니다.Name Type Description lineColorColorLike 외곽선 색상. 16진수 숫자(
0x000000), CSS 색 문자열('#000000') 또는THREE.Color를 넣습니다 -
setMaterial(material)
-
도형의 재질(Material) 객체를 설정합니다.
Name Type Description material* 새로 사용할 재질. 면마다 다르게 하려면 배열을 넘깁니다. 하위 클래스는 이 메서드를 재정의해 다른 값을 받기도 합니다
-
setOpacity(opacity)
-
도형의 투명도를 설정합니다. (0이면 완전 투명, 1이면 불투명)
Name Type Description opacitynumber 투명도 (0~1)
-
setParam(param)
-
모든 도형이 공통으로 갖는 속성을 일괄 적용합니다.
각 도형의 고유 속성(width, piperadius 등)은 하위 클래스가 이 메서드를 오버라이드해서 처리하며, 그 안에서super.setParam(param)으로 이 공통 처리를 먼저 수행합니다.Name Type Description param* optional 변경할 속성 객체.
color·opacity·shadow·lineColor·wireframe·depthOffset·dynamicDepthOffset·depthOffsetFunction을 읽으며, 넣지 않은 항목은 현재 값을 유지합니다Example
geometry.setParam({ color: '#ff0000', opacity: 0.5 }); -
setPosition(x, y, z)
-
도형의 위경도 좌표를 이 좌표 하나로 바꿉니다. (기존 좌표는 모두 대체됩니다)
Name Type Description xVector3 | number 좌표 하나를 담은
Vector3, 또는 경도 (EPSG:4326)ynumber optional 위도 (EPSG:4326). 첫 번째 인자에 숫자를 넣었을 때만 사용합니다
znumber optional 높이 (미터). 첫 번째 인자에 숫자를 넣었을 때만 사용합니다
-
setPositions(coordinates)
-
위경도 좌표 배열을 설정합니다.
Name Type Description coordinatesArray.<GeoPositionVector3> 위경도 좌표 배열 (EPSG:4326)
-
setProperties(input)
-
도형의 사용자 정의 속성 전체를 통째로 설정합니다. (기존 속성은 대체됩니다)
객체 또는 JSON 문자열을 받아 내부에 깊은 복사로 저장하며, 객체가 아니면 무시됩니다.Name Type Description inputKeyValue | string 속성 객체 또는 JSON 문자열
-
setRotation(rotation)
-
도형의 회전값을 설정합니다.
세 축의 각도를 한 번에 지정하며, 값에서x·y·z만 읽습니다. 하위 클래스가 이 메서드를 다르게 재정의하기도 합니다.U3dAdaptedGeometry는 도(degree) 단위 숫자 세 개를 받습니다.Name Type Description rotationEuler 각 축 기준 회전 각도 (라디안).
Math.PI / 2가 90도입니다 -
setShadow(enabled)
-
도형의 그림자(그림자를 드리우고 받는 것) 사용 여부를 설정합니다.
Name Type Default Description enabledboolean true optional 그림자 활성화 여부 (true면 켜고, false면 끕니다)
-
setShowLabel(val)
-
도형에 붙은 라벨을 화면에 표시할지 정합니다. (기본값
true)Name Type Description valboolean true면 라벨을 표시하고false면 감춥니다 -
setTransparent(val)
-
도형 재질의 투명 처리(transparent)를 켜거나 끕니다.
재질이 하나인 도형에서는 이미 켜져 있는 투명 처리를 끄지 않으므로, 불투명하게 되돌릴 때는setOpacity(1)을 사용합니다.Name Type Description valboolean true면 투명 처리를 켭니다 -
setVertex(vertex)
-
도형의 꼭짓점 좌표(월드 좌표)를 설정하고 지오메트리를 갱신합니다.
Name Type Description vertexArray.<WorldPositionVector3> 꼭짓점 좌표 배열 (월드 좌표, EPSG:3857)
Type Definitions
-
U3dGeometryCOobject
-
~extends UEventDispatcher~UEventDispatcherCO
U3dGeometry 생성자 옵션 입니다.Properties:
Name Type Argument Default Description namestring <optional>
도형 이름. 레이어에서 도형을 찾을 때 쓰는 식별자이며, 넣지 않으면 무작위 문자열이 자동으로 만들어집니다
colorColorRepresentation <optional>
'#ff0000' 도형 표면 색상. 16진수 숫자(
0xff0000), CSS 색 문자열('#ff0000') 또는THREE.Color를 넣습니다. 검정은 16진수0x000000이 0으로 취급되어 기본값이 적용되므로'#000000'처럼 문자열로 넣습니다opacitynumber <optional>
0.7 불투명도 (0~1). 넣지 않으면 0.7이며, 값을 재질에 어떻게 반영하는지는 도형 종류마다 다릅니다. 만든 뒤에 바꿀 때는
setOpacity를 사용합니다typestring <optional>
타입 식별자 (하위 클래스마다 의미가 다름)
wireframeboolean <optional>
false 면을 채우지 않고 삼각형 모서리만 선으로 그릴지 여부. 형태와 분할 상태를 확인할 때 사용합니다
depthOffsetnumber <optional>
지형이나 다른 객체에 묻혀 가려지는 것을 완화하도록 깊이(depth) 값을 카메라 쪽으로 당기는 보정치 (미터). 1이면 1m만큼 당기며, 넣지 않으면 보정하지 않습니다
dynamicDepthOffsetboolean <optional>
false 카메라 이동에 따라 동적으로 depthOffset을 연산할지 여부.
depthOffsetFunctionClass.<measureGroundDepthOffset> <optional>
dynamicDepthOffset이 true일 때, depthOffset을 동적으로 측정하는 데 사용되는 함수.
verticesArray.<WorldPositionVector3> <optional>
꼭짓점 좌표 배열 (월드 좌표, EPSG:3857)
coordinatesArray.<GeoPositionVector3> <optional>
위치 좌표 배열 (위경도, EPSG:4326)
showLabelboolean <optional>
true 도형에 붙은 라벨을 화면에 표시할지 여부
propertiesKeyValue <optional>
도형과 함께 보관할 사용자 정의 속성. 화면 표현에는 쓰이지 않으며 클릭한 도형의 부가 정보를 담을 때 사용합니다
lineColorColorLike <optional>
'#000000' 외곽선(테두리 선) 색상. 외곽선을 그리는 도형에만 적용됩니다
-
U3dGeometryEMIobject
-
모든 도형이 공통으로 발생시키는 이벤트 이름입니다.
geometry.on(U3dGeometry.EVENT.CHANGE, handler)처럼 리스너를 등록할 때 사용합니다.Properties:
Name Type Description CHANGEstring 좌표·회전·투명 처리·투명도가 바뀔 때 발생합니다.
data에 도형 객체가 담기며, 하위 클래스가 자신의 변경 시점에도 발생시킵니다.setColor는 이 이벤트를 발생시키지 않습니다BEFORE_DISPOSEstring 도형을 정리할 때 발생합니다. 벡터 레이어의
removeGeometry·clear가DISPOSE와 잇달아 발생시킵니다DISPOSEstring 도형 정리가 끝났음을 알립니다. 일부 도형은 자체
dispose()에서도 발생시킵니다 -
U3dGeometryStyleParamobject
-
모든 도형이 공통으로 갖는 속성입니다.
setParam에 넘기는 값이자getParam이 돌려주는 값이며, 도형 고유 속성은 하위 클래스가 여기에 덧붙입니다.Properties:
Name Type Argument Description colorColorRepresentation <optional>
도형 표면 색상. 16진수 숫자, CSS 색 문자열 또는
THREE.Coloropacitynumber <optional>
불투명도 (0~1). 1보다 작으면 투명 처리가 켜집니다
lineColorColorLike <optional>
외곽선(테두리 선) 색상
shadowboolean <optional>
그림자를 드리우고 받을지 여부
wireframeboolean <optional>
면을 채우지 않고 모서리만 선으로 그릴지 여부
depthOffsetnumber <optional>
깊이 판정을 카메라 쪽으로 당기는 보정치 (미터)
dynamicDepthOffsetboolean <optional>
렌더 직전에 묻힘 정도를 재서 depthOffset을 대신할지 여부
depthOffsetFunctionfunction <optional>
dynamicDepthOffset이 켜져 있을 때 보정치를 재는 함수 -
U3dOutlineAliasCOobject
-
외곽선(테두리 선) 표시 여부를 지정하는 옵션입니다.
도형 종류와 무관하게outline하나로 지정하며, 나머지 셋은 예전 코드가 쓰던 같은 뜻의 이름입니다. 여러 이름을 함께 넣으면outline→useline→useLine→edge순으로 먼저 찾은 값을 사용합니다.Properties:
Name Type Argument Description outlineboolean <optional>
외곽선을 표시할지 여부. 켜면 면과 면이 만나는 모서리를 선으로 덧그리며, 선 색은
lineColor로 정합니다uselineboolean <optional>
outline의 예전 이름. 새 코드에서는 사용하지 않습니다useLineboolean <optional>
outline의 예전 이름. 새 코드에서는 사용하지 않습니다edgeboolean <optional>
outline의 예전 이름. 새 코드에서는 사용하지 않습니다