目录:
视频: 10.3: An Array of Images - Processing Tutorial 2024
JavaFX内置了对逼真3D建模的支持。实际上,JavaFX场景图本质上是三维的。大多数JavaFX程序仅在两个维度上工作,仅指定x坐标和y坐标。但是,要进入第三个维度,您只需指定z坐标即可将场景图的节点放置在三维空间中。 JavaFX包含一组丰富的类,专门用于在3D世界中创建和可视化3D对象。您可以创建三维形状,例如立方体和圆柱体。您可以在三维空间内移动虚拟相机,从不同角度和不同角度查看3D对象。
<! --1 - >
你甚至可以添加光源,仔细控制虚拟世界的最终外观。总之,JavaFX能够产生惊人的3D场景。在您的Java世界中添加3D框
在此步骤中,将对象添加到3D世界中:在这种情况下,框由Box类表示。这是代码:
Box box = new Box(100,100,100);框。 setMaterial(blueStuff);框。 setTranslateX(150);框。 setTranslateY(-100);框。 setTranslateZ(-100);根。的getChildren()。添加(盒); Box构造函数接受三个代表框的宽度,高度和深度的参数。在这个例子中,所有三个都被设置为100.因此,框将被绘制成一个立方体,每一边测量100个单位。
<! - 2 - >
盒子的材质与圆柱相同。然后,它将在所有三个轴上进行翻译,以便您可以看到该框的透视图。该图显示了该框在呈现时如何显示。正如你所看到的,盒子的左侧和底部是可见的,因为你把盒子的位置向上和向右平移,这样相机就可以获得一些视角。
旋转3D框
在此步骤中,旋转框以创建更有趣的透视图。有两种方法来旋转3D对象。最简单的方法是调用对象的setRotate方法并提供一个旋转角度:框。 setRotate(25);
默认情况下,这将在z轴上旋转对象。如果难以形象化,可以想象用一根与Z轴平行的长棒来歪斜物体。然后,旋转对象的串。
如果要沿不同的轴旋转对象,首先调用setRotationAxis。例如,要在x轴上旋转对象,请使用以下序列:
框。 setRotationAxis(Rotate。X_AXIS);框。 setRotate(25);
想象一下,将串串通过与x轴平行的串,然后将框旋转25度。
使用setRotate方法旋转3D对象的唯一问题是它一次只能在一个轴上工作。例如,假设您想要在z轴和x轴上旋转方框25度。以下代码将
不是
完成此操作: 框。 setRotationAxis(Rotate。X_AXIS);框。 setRotate(25);框。 setRotationAxis(Rotate。Z_AXIS);框。 setRotate(25); 当第二次调用setRotate方法旋转z轴上的方框时,将重置x轴旋转。
要在多个轴上旋转,您必须使用Rotate类。您可以为要旋转对象的每个轴创建一个单独的Rotate实例,然后通过getTransforms()将所有的Rotate实例添加到对象的Transforms集合中。 addAll方法,如下所示:
旋转rxBox = new旋转(0,0,0,0,Rotate。X_AXIS);旋转ryBox = new旋转(0,0,0,0,Rotate。Y_AXIS);旋转rzBox = new旋转(0,0,0,0,Rotate。Z_AXIS); rxBox。 setAngle(30); ryBox。 setAngle(50); rzBox。 setAngle(30);框。 getTransforms()。 addAll(rxBox,ryBox,rzBox); Rotate构造函数接受四个参数。前三个是旋转轴将通过的对象内点的x,y和z坐标。通常,您可以为这些参数指定零以围绕其中心点旋转对象。第四个参数指定旋转轴。
该图显示了旋转后框出现的方式。
旋转后的盒子。