目录:
在JavaFX中创建虚拟3D世界比以往任何时候都容易。在这个例子中,你学习了在你的JavaFX程序中添加一个球体,为它添加动画,并为它添加一个光源。
第一步:添加一个球体
首先,添加一个由Sphere类表示的球体。 Sphere构造函数只接受一个参数,它指定球体的半径。例如,这些线创建一个半径为100的球体,然后将其转换为离开虚拟世界的中心点:
<! - 1 - >球体=新球体(100);领域。 setTranslateX(-180);领域。 setTranslateY(-100);领域。 setTranslateZ(100);根。的getChildren()。添加(球);
与其将相同的蓝色Phong材质应用于球体,您可以做一些更有趣的事情:使用以下代码应用从地球柱面投影图像构建的Phong材质:
Image earthImage = new Image( “file:earth。jpg”); PhongMaterial earthPhong =新的PhongMaterial(); earthPhong。 setDiffuseMap(earthImage);领域。 setMaterial(earthPhong);
该图显示了最终的球体。
<! - 2 - > 一个圆柱形地球投影作为Phong材料。您可以使用此技术将任何图像包裹在球体(或任何其他3D对象,就此而言)中。您也可以从维基百科获取该程序的图像。只要搜索 Behrmann投影 ,然后下载文件。 (使用“Windows画图”来修剪图像的边缘,因为维基百科上可用的图像在边缘有一个小边框。)
第二步:动画对象
嗖!你的3D虚拟世界现在有一个对象:一个看起来像地球的球体。您现在也可以添加其他对象。在此步骤中,为所有对象添加一个动画以使其旋转。每个对象都有一个简单的RotationTransition动画。首先,球体:
RotateTransition rt4 = new RotateTransition(); RT4。 setNode(球); RT4。 setDuration(Duration。millis(9000)); RT4。 setAxis(Rotate。Y_AXIS); RT4。 setByAngle(360); RT4。 setCycleCount(Animation。INDEFINITE); RT4。 setInterpolator(Interpolator。LINEAR); RT4。玩();
调用play方法之后,球体开始旋转,每三秒钟完成一次完整的Z轴旋转。
球体围绕y轴旋转,产生世界正在旋转的印象。对于球体,速度每10秒设置一次。
第三步:添加光源
进入3D编程世界的最后一步是添加一个光源。光源将改变整个场景的外观,如下所示。
要添加光源,请使用以下代码:
使用光源的3D世界。
PointLight指示灯=新的指示灯(Color。WHITE);光。 setTranslateX(-1000);光。 setTranslateY(100);光。 setTranslateZ(-1000);根。的getChildren()。添加(光);PointLight类定义了一个源于场景中的特定点的光源,并投射给定颜色的光(在这种情况下,是好的旧白色)。为了产生照明效果,通过将其坐标1,000转换为左侧,100下降和1,000单位来将光重新定位到用户。结果在旋转物体的背面投下了不错的阴影。