3 Шага к созданию 3D-мира Java

3 Шага к созданию 3D-Java World - манекены

За несколько коротких шагов вы можете начать создавать относительно простую 3D-программу в JavaFX, которая отображает трехмерный мир (пример показан ниже) , Как вы можете видеть, это трехмерное пространство включает в себя четыре формы: шар, куб, цилиндр и пирамиду. Этот короткий список показывает, как начать работу с цилиндром.

Положите свой мыслящий колпачок, так как этот пример довольно техничен порой, и многие из концепций, связанных с построением 3D-миров, могут сбивать с толку, особенно если это ваш первый опыт программирования в 3D.

Пример 3D-программы в JavaFX.

Шаг первый: добавьте цилиндр

. На этом шаге вы добавите базовый 3D-объект в свой мир. JavaFX предоставляет три основные формы, которые вы можете добавить: цилиндры, коробки и сферы. Начните с добавления цилиндра:

 Цилиндр цилиндра = новый цилиндр (100, 50); корень. GetChildren (). добавить (цилиндр); 

Конструктор класса Cylinder принимает два аргумента: радиус цилиндра и его высоту. Этот пример создает цилиндр примерно в форме хоккейной шайбы, в четыре раза шире, чем высокий; то он добавляет цилиндр в корневой узел сцены.

В этот момент цилиндр существует в мире, но не виден. Основываясь на том, что вы знаете о 2D-фигурах, может возникнуть соблазн сделать его видимым, добавив цвет заливки (setFill) или цвет штриха (setStroke). Но это не то, как работают 3D-объекты. На следующем шаге вы узнаете, как наносить материал на поверхность цилиндра так, чтобы он был виден на сцене.

Шаг второй: создайте материал

Оказание граней 3D-объекта намного сложнее, чем рендеринг плоских двумерных объектов. Для 2D-объекта вы просто применяете объект Paint через метод setFill. Краска может быть простым цветом, градиентным цветом или изображением.

Для трехмерных объектов вы не применяете краску. Вместо этого вы применяете специальный объект под названием Phong material , представленный классом PhongMaterial. Материал Phong (названный в честь Bui Tuong Phong, новаторского эксперта по компьютерной графике в 1970-х годах) предоставляет средства, с помощью которых лица 3D-объекта реалистично визуализируются.

Следующий код создает простой материал Фонга на основе двух оттенков синего, а затем применяет материал к цилиндру:

 PhongMaterial blueStuff = новый PhongMaterial (); blueStuff. setDiffuseColor (цвет. LIGHTBLUE); blueStuff. setSpecularColor (цвет. ГОЛУБОЙ); цилиндр. setMaterial (blueStuff); 

После того, как материал Phong был нанесен на цилиндр, цилиндр будет виден внутри сцены, как показано.

3D-цилиндр с материалом Phong.

Шаг третий: Перевести цилиндр

Вы, несомненно, заметили, что цилиндр не выглядит очень трехмерным. Это потому, что вы смотрите на него краем: камера указывает прямо на пересечение осей x и y, а цилиндр центрируется на этом самом месте.

Чтобы получить некоторую перспективу на цилиндре, вы можете переместить его в другое место в 3D-пространстве, переведя координаты x, y- и z. Например: цилиндр

 . setTranslateX (-200); цилиндр. setTranslateY (200); цилиндр. setTranslateZ (200); 

Здесь цилиндр перемещается на 200 единиц влево, 200 единиц вниз и на 200 единиц от камеры. Полученный вид больше похож на цилиндр, как вы можете видеть здесь.

Переведенный 3D-цилиндр.

На этом рисунке видно, что цилиндр повернут вперед, чтобы вы могли видеть немного верхней поверхности. Однако это не так. На самом деле произошло то, что вы больше не смотрите на край цилиндра.

Вместо этого, поскольку цилиндр находится ниже камеры, вы смотрите на него. Таким образом, вы можете видеть немного верхнего лица. Вы также смотрите на нее со стороны, что объясняет, почему она кажется чуть-чуть наклоненной.