차례:
비디오: Drone Simulation and Control, Part 3: How to Build the Flight Code 2024
몇 가지 간단한 단계를 통해 JavaFX에서 비교적 단순한 3D 프로그램을 작성하여 3 차원 세계를 표시 할 수 있습니다 (아래 예 참조). 보시다시피,이 3D 공간에는 4 개의 모양이 포함됩니다: 구, 정육면체, 원통 및 피라미드. 이 짧은 목록은 원통을 시작하는 방법을 보여줍니다.
이 예는 때때로 기술적 인 부분이 많으므로 Thinking Cap을 사용하십시오. 특히 3D 프로그래밍을 처음 사용하는 경우에는 3D 세계를 만드는 데 관련된 많은 개념이 혼란 스러울 수 있습니다.
1 단계: 원통 추가
이 단계에서는 기본 3D 객체를 월드에 추가합니다. JavaFX는 실린더, 상자 및 구체와 같은 세 가지 기본 모양을 추가 할 수 있습니다. 실린더를 추가하여 시작하십시오.
실린더 실린더 = 새 실린더 (100, 50); 뿌리. getChildren (). 추가 (원통형);
Cylinder 클래스 생성자는 실린더의 반경과 높이의 두 인수를받습니다. 이 예제는 대략 높이가 4 배인 하키 퍽 모양의 실린더를 만듭니다. 그런 다음 장면의 루트 노드에 원통을 추가합니다.
이 시점에서 실린더는 세계에 존재하지만 보이지 않습니다. 2D 도형에 대해 알고있는 것을 기반으로 채우기 색상 (setFill) 또는 획 색상 (setStroke)을 추가하여 눈에 보이게 할 수 있습니다. 그러나 이것이 3D 객체가 작동하는 방식이 아닙니다. 다음 단계에서는 실린더의 표면에 재질을 적용하여 장면에서 볼 수 있도록하는 방법을 알아 봅니다.
2 단계: 자료 만들기
3D 객체의면을 렌더링하는 것은 평면의 2 차원 객체를 렌더링하는 것보다 훨씬 복잡합니다. 2D 오브젝트의 경우, setFill 메소드를 사용해 Paint 오브젝트를 적용하면됩니다. 페인트는 단순한 색상, 그라디언트 색상 또는 이미지 일 수 있습니다.
3D 오브젝트의 경우 페인트를 적용하지 않습니다. 대신 PhongMaterial 클래스로 대표되는 Phong 머티리얼 이라는 특수 객체를 적용합니다. 퐁 (Phong) 소재 (1970 년대 선구적인 컴퓨터 그래픽 전문가 인 Bui Tuong Phong의 이름을 따서 명명 됨)는 3D 오브젝트의 얼굴이 사실적으로 렌더링되는 방법을 제공합니다.
다음 코드는 두 개의 음영을 기반으로 간단한 Phong 재질을 생성 한 다음 해당 재질을 실린더에 적용합니다.
PhongMaterial blueStuff = new PhongMaterial (); blueStuff. setDiffuseColor (색상. 라이트 블루); blueStuff. setSpecularColor (Color.Blue); 실린더. setMaterial (blueStuff);
Phong 재질이 실린더에 적용된 후 그림과 같이 실린더가 장면 내에서 보입니다.
퐁 (Phong) 재질의 3D 실린더.3 단계: 실린더 변환
실린더가 매우 입체적으로 보이지 않는다는 것을 의심 할 여지없이 알게되었습니다. 그것은 여러분이 그것을보고 있기 때문입니다: 카메라가 x 축과 y 축의 교차점을 똑바로 가리키고 있으며 실린더가 그 바로 그 지점에 집중되어 있습니다.
실린더에 대한 원근감을 얻기 위해 x, y 및 z 좌표를 변환하여 3D 공간의 다른 위치로 이동할 수 있습니다. 예:
실린더. setTranslateX (-200); 실린더. setTranslateY (200); 실린더. setTranslateZ (200);
여기서 실린더는 왼쪽에서 200 단위, 아래쪽에서 200 단위, 카메라에서 200 단위 멀리 이동합니다. 결과 뷰는 여기에서 볼 수 있듯이 원통처럼 보입니다.
번역 된 3D 실린더.이 그림에서는 실린더가 앞으로 회전하여 약간의 상단 표면을 볼 수있는 것처럼 보입니다. 그러나 이것은 사실이 아닙니다. 실제로 일어난 일은 실린더 가장자리를 더 이상 보지 않는다는 것입니다.
대신 실린더가 카메라 아래에 있기 때문에 카메라를 내려다 보았습니다. 따라서, 당신은 약간의 윗면을 볼 수 있습니다. 당신은 또한 측면에서 그것을보고 있는데, 그것은 단지 왜 약간 기울어 진 것처럼 보입니다.