3D 그림 컨트롤은 3D 객체의 그래픽 형을 디스플레이합니다. 3D 장면은 3D 그림 컨트롤이나 별도의 장면 윈도우에서 볼 수 있는 3D 객체 또는 3D 객체의 모음입니다. 3D 장면을 디자인하면서 여러 3D 객체를 생성하고 방향, 모양, 장면에서 다른 객체와의 관계를 지정할 수 있습니다. 또한 빛 소스의 스타일과 위치 및 3D 장면과 사용자 컨트롤 카메라와의 상호작용 등 3D 장면의 특성을 설정할 수 있습니다.

다음 이미지는 단순한 3D 장면이 포함된 3D 그림 컨트롤을 보여줍니다.

3D 객체 생성하기

3D 장면에 나타나는 객체는 물리적인 객체의 그래픽 표현입니다. 3D 객체는 3D 공간에 존재하는 정점의 세트와 그 정점 사이의 연결입니다. 3D 장면을 생성할 때 하나 또는 그 이상의 3D 객체를 생성하여 3D 장면을 구성합니다. [객체 생성] VI를 사용하여 3D 객체를 생성합니다.

3D 객체를 생성한 후, 객체가 3D 장면에 어떻게 나타나는지 정의해야 합니다. 다음의 그리기 가능 속성을 3D 객체에 설정할 수 있습니다:

  • 기하―기하는 3D 객체의 모양을 지정합니다. [상자형 생성][구형 생성]과 같은 기하 VI는 간단한 기하 객체의 형을 정의합니다. 또한 메시를 사용하여 더욱 기하학적으로 복잡한 객체도 생성할 수 있습니다.
  • 텍스트―객체에 정의된 기하가 없는 경우, 객체에 텍스트 적용을 하여 텍스트 객체를 생성할 수 있습니다. 기하가 정의된 객체와 같이, 텍스트는 3D 장면을 제공할 때 나타납니다. [텍스트 생성] VI를 사용하여 새 텍스트를 생성하고 옵션으로 색이나 폰트 등과 같은 텍스트 속성을 설정합니다. 또한 장면 텍스트 프로퍼티와 장면 텍스트 메소드를 사용해서 텍스트의 속성을 설정할 수 있습니다.

LabVIEW는 기본 크기와 색으로 새 객체를 그린 후 3D 장면의 중앙에 객체를 디스플레이합니다. 그러나 변환텍스처를 사용하여 3D 장면에 있는 3D 객체의 크기, 방향, 위치, 또는 표면 모양을 변경할 수 있습니다. 또한 장면 객체 프로퍼티와 장면 객체 메소드를 사용하여 3D 객체를 설정할 수 있습니다.

노트 텍스트 객체에는 텍스처를 적용할 수 없습니다.

변환 적용하기

변환은 수학적 규칙에 따라 3D 객체의 방향이나 모양을 바꿉니다. 변환 VI를 사용하여 3D 장면에서 객체의 크기, 방향, 위치를 변경합니다. 다음의 세 가지 일반적인 변환을 3D 객체에 적용할 수 있습니다:

  • 변환―3D 객체를 이동시키면 3D 장면에서 객체가 새 위치로 움직입니다. 3D 객체의 새 위치를 지정하려면 객체를 이동시킬 벡터를 정의해야 합니다.
  • 회전―3D 객체를 회전하면 3D 객체의 방향이 변경됩니다. 3D 객체의 새 방향을 지정하려면 객체 회전의 기준이 되는 축과 각도를 지정해야 합니다.
  • 스케일링―3D 객체의 스케일링은 3D 객체의 크기를 변경합니다. 3D 객체의 새 스케일을 지정하려면, 3D 장면의 x, y, z 평면에서 객체의 크기를 변경하려는 만큼 인자를 설정합니다.
노트 3D 객체의 모양이 왜곡되지 않도록 하려면 객체를 절단 평면 이상으로 스케일하지 마십시오. 뷰어에서 가장 가까운 평면을 정의하는 근거리 절단 평면의 기본값은 0 단위입니다. 뷰어에서 가장 먼 평면을 정의하는 원거리 절단 평면의 기본값은 10000 단위입니다. 투영:투시법 메소드를 사용하여 절단 평명의 값을 프로그램적으로 설정할 수 있습니다.

각 변환에서, 객체의 초기 위치에서 3D 객체를 회전하는 절대적인 회전이나 객체의 현재 위치에서 3D 객체를 회전하는 상대적인 회전을 수행할 수 있습니다. 예를 들어, [이동 설정] VI를 사용하여 3D 객체를 절대적으로 이동합니다. [객체 이동] VI를 사용하여 3D 객체를 상대적으로 이동합니다.

3D 객체에 변환을 적용하는 방법에 대한 예제는 labview\examples\Graphics and Sound\3D Picture Control 디렉토리에 있는Order of Transformations VI를 참조하십시오.

텍스처 적용하기

3D 객체 주변에 2D 이미지를 둘러싸서 3D 객체의 표면 모양을 변경할 수 있습니다. 이 과정을 텍스처 적용이라고 부릅니다. 예를 들면, 구형에 특정 행성 표면의 2D 이미지를 적용하여 구형을 행성으로 만들 수 있습니다. 행성 표면의 이미지가 텍스처입니다. 특수 기능:텍스처링 프로퍼티를 사용하여 텍스처를 적용하려는 각 3D 객체에 텍스처링을 활성화합니다. 그 후 [텍스처] VI를 사용하여 새 텍스처를 생성합니다. 장면 텍스처 프로퍼티와 장면 텍스처 메소드를 사용하여 텍스처를 설정합니다.

3D 객체에 텍스처를 적용하는 예제는 labview\examples\Graphics and Sound\3D Picture Control 디렉토리에 있는 3D Model of Solar System VI를 참조하십시오.

3D 객체간 관계 생성하기

3D 장면에서 객체 사이의 관계를 생성할 수 있습니다. 객체는 상위 또는 하위로 동작합니다. 상위 객체에 변경 사항을 적용하면 하위 객체에도 변경 사항이 반영됩니다. 큰 3D 장면과 객체의 움직임이 서로 관련된 3D 장면에서 객체 관계 기능을 사용하여 보다 효율적으로 프로그램할 수 있습니다. 예를 들어 태양계 시스템 모형에서 지구의 공전 속도 변화는 달의 공전 속도에 영향을 미칩니다. 달을 지구의 직하위로 생성하여 두 객체 모두에 대한 변환 변경 설정을 피합니다.

3D 객체 간에 관계를 생성하는 예제는 labview\examples\Graphics and Sound\3D Picture Control 디렉토리에 있는 3D Model of Solar System VI를 참조하십시오.

빛 소스 설정하기

LabVIEW는 빛 소스 설정 유무에 관계없이 보이는 3D 장면을 제공할 수 있습니다. 빛 소스를 설정하여 3D 장면에서 햇빛이나 스포트라이트와 같은 시각 효과를 얻을 수 있습니다. 3D 장면에서 세 가지 타입의 빛을 생성할 수 있습니다: 빛 방향, 빛 위치, 스포트라이트. [새 빛] VI를 사용하여 새 빛 소스를 생성합니다. 또한 장면 빛 프로퍼티를 사용하여 색, 감쇠, 강도와 같은 빛 소스의 추가적인 속성을 설정할 수 있습니다.

빛 방향

빛 방향을 사용하여 3D 장면에서 햇빛 효과처럼 객체에서 무한히 멀리 있는 빛 소스를 생성할 수 있습니다. 빛 방향의 위치가 무한대이므로, 빛의 방향만 지정하면 됩니다. 방향 프로퍼티를 사용하여 빛 방향을 설정합니다.

빛 위치

빛의 특정한 위치 또는 근원을 설정하려는 경우 빛 위치를 사용합니다. 빛 위치의 경우, 빛 소스의 위치와 빛의 방향에 대한 x, y, z 좌표를 지정하십시오. 빛의 위치를 지정하는 x, y, z 좌표는 해당 빛이 속해 있는 장면의 객체에 상대적입니다. 이 때 소유 객체의 위치는 좌표 0, 0, 0을 나타냅니다. 예를 들어 빛 소스를 3D 객체 바로 아래에 놓으려는 경우, 좌표 0, -1, 0을 사용하여 빛 소스의 위치를 3D 객체의 아래의 1 객체 좌표로 설정할 수 있습니다. 다른 3D 객체가 위치 빛의 아래에 나타나는 첫번째 객체에 상대적으로 0, -3, 0의 위치에 있으며 빛의 방향이 첫번째 객체를 향하고 있다고 가정하면 빛 소스는 두번째 객체에 영향을 주지 않습니다.

3D 장면에 위치 빛을 추가하려면, 객체 참조 번호와 빛 참조 번호를 빛:빛 추가 메소드에 연결하여 빛을 3D 장면의 객체에 연결합니다. 그러면 객체가 빛을 소유하게 됩니다. 방향 프로퍼티를 사용하여 빛 방향을 설정하고, 위치 프로퍼티를 사용하여 빛 위치를 설정합니다.

스포트라이트

빛의 위치 및 방향을 모드 지정하려는 경우 스포트라이트를 사용합니다. 스포트라이트는 방향과 각도가 정의된 빛 위치입니다. 빛을 위치 빛으로 설정하되, 컷오프 프로퍼티를 사용하여 스포트라이트의 각도를 정의합니다. 이 프로퍼티에 연결하는 값은 실제 스포트라이트 각도의 절반 값입니다. 예를 들어, 스포트라이트가 빛의 40도 각도에서 방출되게 하려면, 이 프로퍼티를 20으로 설정하십시오. 이 프로퍼티는 0 ~ 90 및 180의 값을 받습니다. 이때 180은 컷오프가 없는 상태를 나타냅니다.

빛 소스 설정에 대한 예제는 labview\examples\Graphics and Sound\3D Picture Control 디렉토리에 있는 Using Meshes VI를 참조하십시오.

3D 장면 보기

3D 장면과 사용자 컨트롤 카메라가 상호작용하는 방식을 설정하고, 3D 장면을 디스플레이하는 다른 장면 윈도우를 설정하고, 3D 장면이 실시간 데이터를 디스플레이하도록 연속적으로 업데이트하도록 설정할 수 있습니다.

장면 카메라 설정하기

3D 그림 컨트롤에서 마우스 오른쪽 버튼을 클릭하고 바로 가기 메뉴에서 카메라 컨트롤을 선택하여 카메라가 어떻게 3D 장면과 상호작용하는지 지정합니다. 수행 도구는 3D 장면에서 이동시킬 때 카메라와 같이 동작합니다. 장면 그래프 디스플레이 프로퍼티나 장면 윈도우 프로퍼티를 사용하여 프로그램적으로 장면 카메라를 설정할 수 있습니다.

장면 윈도우 설정하기

VI를 실행할 때 3D 장면을 디스플레이하는 다른 장면 윈도우를 설정할 수 있습니다. [윈도우 설정] VI를 사용하여 새 장면 윈도우를 설정합니다. 또한 장면 윈도우 프로퍼티와 장면 윈도우 메소드를 사용하여, 3D 장면의 투영, 장면 윈도우의 크기 및 활성 상태와 같은 속성을 설정할 수 있습니다.

라이브 데이터

실시간(또는 연속적으로 변화하는) 3D 데이터를 계속 업데이트하도록 3D 장면을 설정할 수 있습니다. 루프 안에 3D 장면 포함하고 다음 방법 중 하나 사용하기:

  • (권장) 루프 안의 3D 그림 또는 다시 그리려는 장면에 다시 그리기 메소드를 사용합니다.
  • 새로 고치려는 장면에 3D 그림 컨트롤 터미널 또는 로컬 변수를 놓습니다.

장면 카메라와 장면 윈도우를 설정하는 예제는 labview\examples\Graphics and Sound\3D Picture Control 디렉토리에 있는 3D Model of Solar System VI를 참조하십시오.

3D 모델에 데이터 디스플레이하기

독립 센서 및 NI-DAQmx 채널을 사용하여 현실 세계의 데이터를 3D 모델에 맵핑할 수 있습니다. 센서 맵핑 익스프레스 VI를 사용하여 센서 설정 대화 상자를 통해 설정하는 센서를 나타내는 데이터 값 배열을 와이어로 연결합니다. 예를 들어, 2 개의 채널을 포함하는 NI-DAQmx 태스크를 갖고 있고 2 개의 독립 센서를 3D 모델에 놓은 경우, LabVIEW가 기대하는 데이터 값 입력은 daqsensor1, daqsensor2, freesensor1, freesensor2입니다. 최소한 1 개의 NI-DAQmx 채널을 3D 모델에 놓는 경우, LabVIEW는 NI-DAQmx 태스크에 있는 모든 채널에 대해 각각 공간을 할당합니다. NI-DAQmx 채널의 사용에 대한 추가적인 정보는 NI-DAQmx 도움말을 참조하십시오.

노트 DAQ 어시스턴스 익스프레스 VI를 사용하여 NI-DAQmx 태스크를 생성할 수 있습니다. 그러나, 센서 맵핑 익스프레스 VI는 DAQ 어시스턴트 익스프레스 VI로부터 채널을 가져올 수 없습니다. 데이터를 센서 맵핑 익스프레스 VI의 센서 값 입력에 와이어로 연결할 수 있습니다. 센서를 놓으려면 3D 모델에서 마우스 오른쪽 버튼을 클릭하여 채널을 3D 모델에 맵핑합니다.

3D 그림 컨트롤을 익스프레스 VI의 장면 참조 출력에 와이어로 연결합니다. 익스프레스 VI에 연결하는 데이터는 3D 모델에 나타납니다. 3D 모델에 놓는 센서는 센서가 나타내는 데이터 값에 따라 센서 포인트에 있는 3D 모델의 색상에 영향을 미칩니다.