GeOnDT GeOnDT for JS

Class: UDashLineGeometry

UDashLineGeometry

~extends BufferGeometry
점들을 스플라인 곡선으로 잇고 일정 너비를 가진 띠 형태로 만드는 라인 지오메트리 클래스입니다.
점선 재질과 함께 도로·경로 라인 표현 등에 사용하며, 너비·지형 높이 적용(ground)·곡선/직선 타입 등을 옵션으로 조절할 수 있습니다.

점을 두 개 이상 넣어야 띠가 만들어집니다. 점이 하나 이하이면 띠를 만들지 않습니다. 너비는 미터로 지정하고, setGoogleScale로 준 보정 배율을 곱해 월드 좌표(EPSG:3857) 단위로 환산합니다.

new UDashLineGeometry(options)

점선(띠) 라인 지오메트리를 생성합니다.
만든 뒤 addPoint나 setPoints로 점을 넣으면 곡선으로 이어진 일정 너비의 띠가 만들어집니다.

Name Type Description
options UDashLineGeometry~UDashLineGeometryCO optional

생성 옵션

Members

appU3dApp undefined

생성 옵션으로 받아 보관하는 앱 객체입니다. 지형 높이 조회는 drawArg가 담당합니다.

curveType'curve' 'line'

점을 잇는 방식입니다. 'line'이면 장력을 낮춰 점 사이를 곧게 잇고, 'curve'면 부드러운 곡선으로 잇습니다.

detailSegmentnumber

곡선을 훑는 간격입니다. 값이 클수록 점을 성기게 뽑아 정점 수가 줄고 모양이 각져집니다.

drawArgundefined Object

지형 높이를 조회하는 객체입니다. getRenderHeightAtPoint(x, y)가 돌려준 높이에 0.1m를 더해 띠를 지면에서 살짝 띄웁니다.

groundboolean

띠를 지형 높이에 맞출지 여부입니다. 켜져 있고 drawArg가 있을 때만 각 점의 높이를 지형 높이로 바꿉니다.

indicesArray.<number>

삼각형을 이루는 정점 번호 목록입니다. 세 개가 한 면을 이룹니다.

normalsArray.<number>

정점별 법선 벡터를 x·y·z 순서로 펼친 배열입니다.

점들을 잇는 Catmull-Rom 곡선입니다. 이 곡선을 일정 간격으로 훑어 나온 점들로 띠를 만듭니다. 점 목록은 getPoints로 읽습니다.

splineStepnumber

생성 옵션으로 받아 보관하는 값입니다. 지오메트리 계산에는 쓰이지 않습니다.

uvsArray.<number>

정점별 텍스처 좌표를 u·v 순서로 펼친 배열입니다.

verticesArray.<number>

띠를 이루는 정점 좌표를 x·y·z 순서로 펼친 배열입니다. (월드 좌표, EPSG:3857)

widthnumber

띠의 너비입니다. (미터) 지오메트리를 만들 때 setGoogleScale로 지정한 보정 배율이 곱해집니다.

Methods

addPoint(point, updateVertex)

라인 끝에 점을 하나 추가합니다.

Name Type Default Description
point WorldPositionVector3

추가할 점 (월드 좌표, EPSG:3857)

updateVertex boolean true optional

점을 넣은 뒤 곧바로 띠를 다시 만들지 여부. 여러 점을 잇달아 넣을 때 false로 두고 마지막에 한 번만 갱신하면 계산을 줄일 수 있습니다

clear()

라인의 모든 점과 정점 데이터를 비워 초기 상태로 되돌립니다.
곡선 길이 캐시도 함께 비우므로, 비운 뒤 다시 점을 넣으면 길이가 새로 계산됩니다.

getLength()number

스플라인 곡선의 전체 길이를 반환합니다.

Returns:
Type Description
number 곡선을 따라 잰 전체 길이 (월드 좌표 단위, EPSG:3857)

getPointAt(at)Vector3

곡선에서 비율 at(0~1) 위치의 점을 반환합니다. (0이 시작, 1이 끝)
길이를 기준으로 재므로 점 사이 간격이 달라도 고르게 나뉩니다.

Name Type Description
at number

곡선 시작점을 0, 끝점을 1로 본 비율

Returns:
Type Description
Vector3 그 위치의 좌표 (월드, EPSG:3857). 호출할 때마다 새 벡터를 만들어 돌려줍니다

getPoints()Array.<WorldPositionVector3>

라인을 이루는 현재 점 배열을 반환합니다.

Returns:
Type Description
Array.<WorldPositionVector3> 곡선이 지나는 점 목록 (월드 좌표, EPSG:3857). 곡선이 들고 있는 배열을 그대로 돌려주므로 고치면 곡선에도 반영됩니다

getTangentAt(at)Vector3

스플라인 곡선에서 비율 at(0~1) 위치의 접선(진행 방향) 벡터를 반환합니다.

Name Type Description
at number

곡선 시작점을 0, 끝점을 1로 본 비율

Returns:
Type Description
Vector3 그 지점에서 곡선이 나아가는 방향을 가리키는 단위 벡터. 호출할 때마다 새 벡터를 만들어 돌려줍니다

setGoogleScale(scale)

구글 좌표계 보정 스케일을 설정하고 지오메트리를 다시 생성합니다.
라인 너비(미터)를 Google 세계 좌표 단위로 변환하는 데 사용됩니다.

Name Type Description
scale number

보정 스케일 (1 / UMathEngine.getRealScaleAtGeographic(lat))

setPoints(points)

라인을 이루는 점 배열을 통째로 설정하고 즉시 갱신합니다.

Name Type Description
points Array.<WorldPositionVector3>

점 배열 (월드 좌표, EPSG:3857)

updateAttribute()

현재 정점 데이터를 buffer attribute에 반영해 갱신합니다. (위치·법선·UV·인덱스 재설정)

updateGeometry(startIndex)

현재 점들로 지오메트리(정점·면)를 다시 계산해 갱신합니다.
넘긴 인덱스와 무관하게 곡선 전체를 다시 계산합니다.

Name Type Default Description
startIndex number 0 optional

갱신을 시작할 인덱스

Type Definitions

UDashLineGeometryCOobject

UDashLineGeometry 생성자 옵션

Properties:
Name Type Argument Default Description
width number <optional>
3

띠의 너비 (미터). 지오메트리를 만들 때 setGoogleScale로 지정한 보정 배율이 곱해집니다

splineStep number <optional>
100

생성 시 보관만 하는 값. 지오메트리 계산에는 쓰이지 않습니다

ground boolean <optional>
false

띠를 지형 높이에 맞출지 여부. drawarg를 함께 넣어야 동작합니다

app U3dApp <optional>

생성 시 보관만 하는 앱 객체. 지형 높이 조회는 drawarg가 담당합니다

drawarg Object <optional>

지형 높이를 조회할 객체. getRenderHeightAtPoint(x, y)가 돌려준 높이에 0.1m를 더해 띠를 지면에서 살짝 띄웁니다

detailSegment number <optional>
3

곡선을 훑는 간격. 값이 클수록 점을 성기게 뽑아 정점 수가 줄고 모양이 각져집니다

curveType 'curve' | 'line' <optional>
'curve'

점을 잇는 방식. 'line'이면 장력을 낮춰 점 사이를 곧게 잇습니다

tension number <optional>

곡선의 팽팽함. curveType이 'line'일 때만 쓰이며, 넣지 않으면 0입니다