GeOnDT GeOnDT for JS

Class: U3dSphere

U3dSphere

~extends U3dGeometry
지정한 좌표에 구체(Sphere) 형태의 3D 도형을 생성하는 클래스입니다.
반지름·세그먼트로 크기와 매끄러움을, phi/theta 각도로 반구·부분 구 등을 표현할 수 있으며, 색상·투명도·외곽선 등도 지정할 수 있습니다. 좌표는 생성 후 setVertex(월드) 또는 setPositions(위경도)로 지정하며, 첫 번째 좌표에 구체가 놓입니다.

new U3dSphere(opt)

구체(Sphere) 도형을 생성합니다.
좌표는 생성 후 setVertex(월드) 또는 setPositions(위경도)로 지정합니다.

Name Type Default Description
opt U3dSphere~U3dSphereCO {} optional

생성 옵션 (반지름·세그먼트·각도·색상·투명도·외곽선 등)

Members

구체에서 발생하는 이벤트 이름 모음입니다. 도형 공통 이벤트와 같으며, 해제 시점을 알리는 DISPOSE는 dispose()가 자원을 정리한 뒤 발생합니다.

distanceMaterialShaderMaterial undefined

setDistanceMaterial: true로 만든 구체들이 공유하는 셰이더 재질 원본입니다. 처음 필요할 때 한 번만 만들어지고, 각 구체는 이 재질을 복제(clone)해 사용합니다. 참조 수를 세어 마지막 구체가 dispose될 때 함께 해제되므로 직접 dispose하지 않습니다.

heightSegmentsnumber

세로(위아래) 방향 분할 수 (기본값 6, 최소 2).
클수록 표면이 매끄러워지고 정점 수가 늘어납니다. 변경은 setParam으로 합니다.

phiLengthnumber

가로 방향으로 그릴 각도 범위 (라디안, 기본값 Math.PI * 2).
360도면 둘레 전체를 그리고, 줄이면 수박 조각처럼 일부만 남습니다. 변경은 setParam으로 합니다.

phiStartnumber

가로 방향으로 그리기 시작할 각도 (라디안, 기본값 0). 변경은 setParam으로 합니다.

radiusnumber

구체의 반지름 (미터, 기본값 5).
화면에 그릴 때는 좌표가 지정된 위도의 보정 배율이 곱해지므로 실제 지오메트리 반지름과 다를 수 있습니다. 직접 대입하면 형상에 반영되지 않으므로 변경은 setParam으로 합니다.

setDistanceMaterialboolean

카메라 거리에 따라 색과 밝기가 달라지는 셰이더 재질을 사용하는지 여부 (기본값 false).
false면 단색 재질을 사용합니다. 생성 시에만 적용되며 setParam으로는 바꿀 수 없습니다.

thetaLengthnumber

세로 방향으로 그릴 각도 범위 (라디안, 기본값 Math.PI).
Math.PI / 2를 넣으면 반구가 됩니다. 변경은 setParam으로 합니다.

thetaStartnumber

세로 방향으로 그리기 시작할 각도 (라디안, 기본값 0). 변경은 setParam으로 합니다.

uselineboolean

외곽선(모서리 선) 표시 여부 (기본값 false).
켜면 구체의 모서리를 따라 선 객체가 자식으로 추가되며, 선 색은 lineColor 옵션 값(없으면 검정)을 사용합니다. 생성 옵션과 setParam에서는 outline(별칭 useline/useLine/edge) 이름을 사용합니다.

widthSegmentsnumber

가로(둘레) 방향 분할 수 (기본값 8, 최소 3).
클수록 옆에서 본 윤곽이 원에 가까워지고 정점 수가 늘어납니다. 변경은 setParam으로 합니다.

Methods

dispose()

구체와 관련 리소스(지오메트리·재질·자식 객체)를 해제합니다.
더 이상 사용하지 않는 구체는 이 함수로 정리하면 메모리 누수를 방지할 수 있습니다. 해제가 끝나면 DISPOSE 이벤트가 발생하며, 호출한 뒤에는 같은 구체를 다시 사용할 수 없습니다.

getParam()object

구체의 현재 속성을 반환합니다. (setParam에 다시 넘길 수 있습니다)

Returns:
Type Description
object 현재 속성 객체 (radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength, outline과 도형 공통 속성)

setColor(color)

구체의 색상을 설정합니다. 재질에 즉시 반영됩니다.

Name Type Description
color ColorRepresentation

표면 색상. 16진수 숫자(0xff0000), CSS 색 문자열('#ff0000') 또는 THREE.Color를 넣습니다

setOpacity(opacity)

구체의 투명도를 설정합니다. (0이면 완전 투명, 1이면 불투명) 재질에 즉시 반영됩니다.

Name Type Description
opacity number

투명도 (0~1). 1보다 작으면 투명 처리가 켜집니다

setParam(param)

구체의 속성(색상·투명도·반지름·세그먼트·각도·외곽선)을 한 번에 변경합니다.
전달한 값만 반영되고 나머지는 기존 값이 유지되며, 형태 관련 값을 바꾸면 지오메트리가 즉시 다시 생성됩니다. setDistanceMaterial은 생성 시에만 적용되어 여기서 변경되지 않습니다.

Name Type Description
param U3dSphere~U3dSphereCO optional

변경할 속성 객체. 생략한 속성은 현재 값을 유지합니다

updateVertex()

설정된 좌표(vertices)의 첫 번째 점으로 구체 위치를 이동시키고 지오메트리를 갱신합니다.
이때 그 지점의 위도로 크기 보정 배율을 다시 계산하므로, 좌표를 옮기면 화면에 그려지는 반지름도 함께 조정됩니다.

Type Definitions

U3dSphereCOobject

U3dSphere(구체) 생성자에 넘기는 옵션입니다. 외곽선 옵션(outline과 별칭)은 U3dOutlineAliasCO가, 색상·투명도 같은 도형 공통 옵션은 U3dGeometryCO가 정의합니다.

Properties:
Name Type Argument Default Description
radius number <optional>
5

구체의 반지름 (미터). 화면에 그릴 때는 좌표가 지정된 위도의 보정 배율이 곱해집니다

widthSegments number <optional>
8

가로(둘레) 방향 분할 수. 클수록 옆에서 본 윤곽이 원에 가까워지고 정점 수가 늘어납니다. 최소 3

heightSegments number <optional>
6

세로(위아래) 방향 분할 수. 클수록 표면이 매끄러워지고 정점 수가 늘어납니다. 최소 2

phiStart number <optional>
0

가로 방향으로 그리기 시작할 각도 (라디안)

phiLength number <optional>

가로 방향으로 그릴 각도 범위 (라디안). 기본값은 Math.PI * 2(360도)로 둘레 전체를 그리며, 줄이면 수박 조각처럼 일부만 남습니다

thetaStart number <optional>
0

세로 방향으로 그리기 시작할 각도 (라디안)

thetaLength number <optional>

세로 방향으로 그릴 각도 범위 (라디안). 기본값은 Math.PI(180도)로 위아래 전체를 그리며, Math.PI / 2를 넣으면 반구가 됩니다

opacity number <optional>
1

불투명도. 0이면 완전 투명, 1이면 불투명하며 1보다 작으면 투명 처리가 켜집니다

setDistanceMaterial boolean <optional>
false

카메라 거리에 따라 색과 밝기가 달라지는 셰이더 재질을 쓸지 여부. false면 단색 재질을 사용하며, 생성 시에만 적용되고 setParam으로는 바꿀 수 없습니다

color ColorRepresentation <optional>

구체 표면 색상. 16진수 숫자(0xff0000), CSS 색 문자열('#ff0000') 또는 THREE.Color를 넣습니다

type string <optional>

도형 종류 식별자 (기본값 'basic'). 구체는 이 값으로 재질이 달라지지 않으며, 재질 종류는 setDistanceMaterial이 정합니다