3D 뷰어
The class E3DViewer is an interactive 3D viewer for point clouds, ZMaps, meshes and basic shapes (lines, planes, boxes and spheres).
□ | 다중 소스 디스플레이, 색상 램프, 3D 포인트 선택 및 텍스트 라벨 디스플레이가 특징입니다. |
□ | Windows 및 Linux와 호환되며 Win32, MFC 및 QT 프레임워크에 통합할 수 있습니다. |
3D 뷰어 만들기
● | The general constructor of a 3D viewer is: E3DViewer(EUIAPI uiApi, int orgX, int orgY, int width, int height, void* parent) |
● | 사용 방법은 운영 체제 및 사용자 인터페이스 API에 따라 다릅니다. |
Windows 전용
● | 3D 뷰어 독립 실행형 창을 만들려면: |
□ | E3DViewer(EUIAP::EUIAPI_Win32, orgX, orgY, width, height)을 사용합니다. |
● | MFC 응용 프로그램에서 다른 창의 일부로 3D 뷰어를 만들려면: |
□ | E3DViewer(EUIAP::EUIAPI_Win32, orgX, orgY, width, height, handle to the parent window)을 사용합니다. |
□ | See the MsVc or MsVcs Easy3DViewer sample. |
Windows 및 Linux
● | Qt 응용 프로그램에서 3D 뷰어를 만들려면: |
□ | E3DViewer(EUIAP::EUIAPI_Qt, orgX, orgY, width, height)을 사용합니다. |
□ | QOpenGLWidget 객체 내부에 클래스를 인스턴스화해야 합니다. |
□ | See the Easy3DViewer Qt sample. |
렌더 소스 관리하기
● | 렌더 소스는 표시된 엔티티입니다. It can be an EPointCloud, an EZMap, an EMesh, an E3DBox, an E3DLine, an E3DPlane or and E3DSphere. 3D 뷰어에서 하나 이상의 렌더 소스를 동시에 표시할 수 있습니다. |
3D 뷰어에서 그레이 스케일로 표시된 포인트 클라우드와 허위 색상의 메시
● | 렌더 소스 목록을 관리하려면 다음 메서드를 사용합니다. |
□ | AddRenderSource를 사용하여 현재 목록에 다른 렌더 소스를 추가합니다. 렌더 소스에는 추가 참조를 위한 이름이 있습니다. |
□ | SetRenderSource를 사용하여 렌더 소스의 내용을 변경합니다. |
□ | RemoveRenderSource를 사용하여 현재 목록에서 렌더 소스를 제거합니다. |
● | 렌더 소스 API는 다음과 같은 여러 표시 속성을 노출합니다. |
□ | Visibility (controlled by ShowRenderSource/ HideRenderSource) |
□ | Color mode (SetRenderSourceColorMode): choose between constant color (the only option for basic shapes), color ramp or point cloud color attributes. |
□ | Color (SetRenderSourceConstantColor) for render sources with constant color. |
□ | Opacity (SetRenderSourceOpacity) |
□ | Point size (SetRenderSourcePointSize): applies to point clouds and ZMaps only. |
□ | Wire frame (SetRenderSourceWireFrame): applies to meshes, boxes and planes. |
일정한 색상, 색상 램프 또는 색상 속성으로 표시되는 포인트 클라우드
(Zivid가 데이터 제공)
색상 램프가 있는 포인트 클라우드와 결합된 와이어프레임 및 투명도가 있는 메쉬
Shading
E3DViewer can shade rendering sources using a custom version of the Eye Dome Lighting (EDL) technique.
● | Use SetEnableEDLShading to enable the shading. |
● | Use SetEDLShadingFactor to adjust the shading between 0 and 1: |
□ | 0 means no chasding. |
□ | 1 means strong shading.and 1, respectively meaning no shading and strong shading. |
EDL is a post processing technique. It impacts all opaque render sources all together. With EDL, pixels that are closer to the camera occlude neighbor pixels that are further away from the camera.
A mesh without and with EDL enabled
색상 램프 사용하기
● | 렌더 소스의 색상 모드가 ESourceColorMode_Ramp인 경우, 각 점의 색상은 점의 위치 또는 속성으로 계산합니다. |
● | Use SetColorRampMode to choose the color ramp: |
□ | EColorRampMode_HueFromX/Y/Z는 각각의 X/Y/Z 점 좌표에서 색상을 계산합니다(EColorRampMode_HueFromZ는 기본 색상 램프 모드입니다). |
□ | EColorRampMode_RGBCube는 X,Y,Z 점 좌표를 혼합하여 색상을 계산합니다. |
□ | EColorRampMode_HueFromIntensity는 점의 강도 속성에서 색상을 계산합니다. |
□ | EColorRampMode_HueFromNormal computes the colors from the normal attribute of the point. |
□ | EColorRampMode_HueFromConfidence는 점의 신뢰도 속성에서 색상을 계산합니다. |
□ | EColorRampMode_HueFromDistance는 점의 거리 속성에서 색상을 계산합니다. |
X/Y/Z 및 RGB 큐브의 색상 램프 모드 채도
● | 색상 램프가 정의되면 창 오른쪽(기본 위치)에 범례를 표시할 수 있습니다. 색상 램프 범례 측면을 제어하려면 Show/HideColorRampLegend, SetColorRampGraduationColor 및 SetColorRampLocation 메서드를 사용합니다. |
● | SetEnableSmartColorRamp 메서드로 ‘스마트 색상 램프’가 활성화되면 이상치 필터링 처리가 적용되어 노이즈를 제거하고 객체의 주요 부분에 색상을 분산합니다. 그런 다음 이상치는 일정한 빨간색 또는 파란색으로 표시됩니다. |
To keep the same color ramp bounds instead of adaptive ones, use SetFixColorRampBounds.
A color ramp EColorRampMode_HueFromZ with outlier removal process:
- Z좌표가 8.3~18.8인 극단점은 빨간색으로 표시
- 98% 점의 Z 좌표는 -6.7~8.3 사이
대화형 컨트롤
Windows에서 대화형 컨트롤은 E3DViewer 클래스에 빌드됩니다.
● | 다음과 같은 상호 작용이 가능합니다. |
전환 |
컨트롤 |
---|---|
뷰 회전 |
왼쪽 클릭 + 마우스 움직임 |
뷰 변환 |
오른쪽 클릭 + 마우스 움직임 |
뷰 거리 변경 |
마우스 휠 |
뷰 재설정 |
r |
양/음 X축을 따라 보기 |
x / Shift+x |
양/음 Y축을 따라 보기 |
y / Shift+y |
양/음 Z축을 따라 보기 |
z / Shift+z |
축 표시/숨기기 |
a |
와이어 프레임 모드 활성화/비활성화 |
w |
점 크기 증가/감소 |
플러스 표시(+) / 마이너스 표시(-) |
● | 사용자 정의 보기 컨트롤을 구현하려면 다음 방법을 사용합니다. |
□ | LockRotationInitialPosition, UpdateRotationPosition 및 LockRotationFinalPosition는 회전에 의해 시점을 변경하는 시퀀스 클릭-드래그-릴리스에 해당합니다. |
□ | LockTranslationInitialPosition, UpdateTranslationPosition 및 LockTranslationFinalPosition는 변환에 의해 시점을 변경하는 시퀀스 클릭-드래그-릴리스에 해당합니다. |
□ | UpdateViewDistance는 일반적으로 마우스 휠로 제어되는 뷰 거리를 변경합니다. |
□ | ResetView는 기본 뷰포인트를 복원합니다. |
See the Qt Easy3DViewer sample for a use case of this view control API.
● | 다음 방법을 사용하여 뷰 위치를 직접 구성할 수도 있습니다. |
□ | SetViewTarget(기본적으로 객체의 중심입니다). |
□ | 뷰 방향을 선택하려면 SetViewAngle. |
□ | 뷰 대상까지의 거리를 선택하려면 SetViewDistance. |
매개변수 보기
3D 뷰를 사용자 정의하고 다음을 수행할 수 있습니다.
□ | SetFieldOfView로 시야를 변경합니다. |
□ | SetProjectionType를 사용하여 투시도와 직교 뷰 사이를 전환합니다. |
□ | SetRenderAxis를 사용하여 X, Y 및 Z 축 표시를 활성화 또는 비활성화합니다. |
□ | SetAxisOrigin를 사용하여 실제 원점과 객체 중심 사이의 축 원점을 전환합니다. |
□ | SetRenderGrid가 있는 그리드 표시를 활성화 또는 비활성화합니다. |
□ | SetAutoRotate로 자동 회전 애니메이션을 활성화합니다. |
□ | SetRenderDecimationLevel와 함께 데시메이션 레벨을 사용합니다(렌더링 속도를 높이려면 일부 점 제거). |
축 없음 / 실제 중심 축 / 윤곽 상자 축 / 그리드가 있는 축
3D 포인트 선택
● | 점을 선택한다는 것은 E3DViewer 창에서 주어진 좌표에 가장 가까운 점을 감지하는 것을 의미합니다. 그런 다음 속성과 함께 감지된 3D 점을 텍스트 레이블로 표시할 수 있습니다. |
3D 뷰에서 선택한 점의 좌표 및 속성 표시
● | 선택한 점을 선택하는 데 사용되는 거리 임계값은 SetPickingDistanceThreshold로 정의됩니다. 선택한 위치까지의 포인트 클라우드 거리가 이 임계값보다 크면 선택한 포인트가 없습니다. |
● | On the Win32 interface framework, the built-in control for the picking is Ctrl + mouse button. |
□ | To control the picking, use the methods Pick3DPoint, GetLastPickedPoint and ResetPicking. |
□ | To configure the E3DViewer to call a specified function when you pick a point, use the method SetPickedPointCallBack. |
● | 피킹 레이블의 표시를 구성하려면, SetPickingDisplay, SetPickingLabelSize, SetPickingLabelColor 및SetPickingLabelFixed을 사용합니다. |
텍스트 레이블 및 3D 객체
● | 3D 뷰어의 현재 뷰에 사용자 정의 텍스트 레이블 및 3D 객체를 추가할 수 있습니다. |
왼쪽 상단 모서리에 있는 화면 레이블 및 3D 앵커가 있는 텍스트 레이블
● | 텍스트 레이블 표시를 제어하려면 다음을 사용하십시오. |
□ | AddTextLabel를 사용하여 3D 앵커가 있거나 없는 텍스트 레이블을 추가합니다. AddTextLabel는 추가 참조에 사용되는 ID를 반환합니다. |
□ | EditTextLabel를 사용하여 레이블의 위치, 색상, 크기 또는 텍스트를 변경합니다. |
□ | GetTextLabel를 사용하여 레이블의 속성을 가져옵니다. |
□ | 레이블을 제거하려면 RemoveTextLabel. |
□ | 모든 레이블을 제거하려면 ClearTextLabels. |
● | E3DViewer 클래스는 포인트 클라우드, Z맵 또는 메시 위에 E3DObject를 표시할 수도 있습니다. Use the tools |
● | Register3DObjects 및 RemoveCurrent3DObjects 메서드를 사용하여 표시하려는 E3DObjects 목록을 관리합니다. |
E3DObject에는 여러 기능(중심점, 윤곽 상자, 기본 평면...)이 포함됩니다. Show / HideFeatureFor3DObject 및 Show / HideFeatureForAll3DObjects 메서드를 사용하여 표시된 기능을 선택합니다.
See the Easy3DObjectExtract MSCV sample as an example for the display of E3DObjects.
윤곽 상자와 상단 위치를 표시하는 포인트 클라우드로 그린 3D 객체