声明: 本博客文章原创类别的均为个人原创,版权所有。转载请注明出处:http://blog.csdn.net/ml3947,另外本人的个人博客:http://www.wjfxgame.com。
本篇文章将紧接着上一篇进行JavaFX 3D API的讲解。
JavaFX 3D Graphics API中,Camera是一个Node,并且可以被直接添加到JavaFX的Scene中。我们可以在3D UI布局中随意的移动Camera,这将不同于2D布局。
首先,Camera的坐标体系是这样的:
X轴指向右边,Y轴指向下面,Z轴指向屏幕远离观察者的方向。
我们可以创建一个Camera,然后添加到场景中:
Camera camera = new PerspectiveCamera(true);
scene.setCamera(camera);
添加到场景:
Group cameraGroup = new Group();
cameraGroup.getChildren().add(camera);
root.getChildren().add(cameraGroup);
旋转Camera,然后移动CameraGroup:
camera.rotate(45);
cameraGroup.setTranslateZ(-75);
Perspective Camera
JavaFX提供透视相机来渲染3D场景,并为透视投影定义了一个值。我们可以通过修改fieldOfView来改变这个值。
创建Perspective Camera的构造函数:
PerspectiveCamera()
erspectiveCamera(boolean fixedEyeAtCameraZero)
后一个构造函数是在JavaFX8中新增的,我们可以在初始化的时候指定一个fixedEyeAtCameraZero值,这个可以让
场景渲染的像是在3D环境里。
所以如果是开发3D项目,我们应该使用PerspectiveCamera(true)来初始化,在2D中使用false。
下面来介绍几个常用的方法:
setFieldOfView(double value);
setNearClip(double value);
setFarClip(double value);
第一个是调整视野的,主要是一个角度问题。后面两个是调整裁剪面的,主要是限制渲染的距离的范围,可以极大
的提升性能。
JavaFX中的Y坐标
很多3D场景中,Y轴是朝上的。然后在JavaFX 3D中,Y轴是朝下的。如果你需要Y轴朝上,我们可以创建一个xform
节点加入到根节点中。
如下所示:
root3D = new Xform();
root3D.rx.setAngle(180.0);
root.getChildren().add(root3D);
root3D.getChildren().add(...); // 添加你所有的3D物体
当然,也可以把你的Camera加入到xform中,如下所示:
Camera camera = new PerspectiveCamera(true);
Xform cameraXform = new Xform();
root.getChildren().add(cameraXform);
cameraXform.getChildren().add(camera);
cameraXform.rz.setAngle(180.0);
还有一中更好的方法是,对Camera做一个角度的旋转,如下所示:
Camera camera = new PerspectiveCamera(true);
Xform cameraXform = new Xform();
root.getChildren().add(cameraXform);
cameraXform.getChildren().add(camera);
Rotate rz = new Rotate(180.0, Rotate.Z_AXIS);
camera.getTransforms().add(rz);
由此来保证我们使用JavaFX 3D的时候,坐标系如其他的3D类引擎和工具保持一致。
本博客文章原创类别的均为个人原创,版权所有。转载请注明出处:http://blog.csdn.net/ml3947,另外本人的个人博客:http://www.wjfxgame.com。
分享到:
相关推荐
本文将介绍JavaFX中3D图形的创建与操作的基础知识。 1. JavaFX概述: JavaFX是一种用于创建富互联网应用程序(RIA)的Java库,提供了一种新的方式来构建图形用户界面,以替代较为老旧的Swing和AWT。JavaFX以Java...
"JavaFX3D-ManeuvringACamera"项目是一个示例应用程序,旨在帮助开发者了解如何在JavaFX 3D场景中控制相机视角。 1. **JavaFX 3D基础**: - JavaFX 3D 提供了一组高级图形API,使得开发人员能够创建复杂的3D场景,...
4. **视图和相机**:在 JavaFX 3D 中,视图是由`Camera`类控制的,它决定了观察者看到的场景部分。` PerspectiveCamera` 是默认的相机类型,提供透视效果,而` OrthographicCamera` 则用于创建正交视图,适合制图和2...
在“mediaplayer”部分,JavaFX的MediaPlayer类是用于播放音频和视频的。它可以处理各种媒体格式,包括本地文件和网络资源。MediaPlayer提供了一系列方法来控制播放,如播放、暂停、停止、快进、快退等,还可以调整...
5. **2D和3D图形**: JavaFX 1.3.1提供了强大的2D和3D图形渲染能力,开发者可以使用`Group`, `Shape`, `Camera`等类创建复杂的视觉效果。虽然3D功能相对较新且可能有限,但它开启了JavaFX在3D应用程序领域的可能性。 ...
为了将3D图形与Java应用程序的其他部分集成,Java3D提供了一些高级功能,如导入和导出3D模型文件(如.obj或.3ds格式)、使用动画和时间控制、以及与其他Java库(如Swing或JavaFX)的集成。 总的来说,"JAVA3D交互式...
2. **Java 3D**: 虽然JavaFX通常用于创建3D界面,但Java也提供了一个名为Java 3D的库,它是Java Advanced Imaging (JAI)的一部分。开发者可能使用Java 3D API来构建复杂的3D模型和场景。 3. **几何对象和变换**: 在...
如果项目扩展到3D模拟,那么开发者需要了解如何使用`Group`、`Mesh`和`Camera`等类来构建和展示三维植被模型。 4. **随机生成**:为了创建动态且多样化的植被景观,开发者可能需要利用Java的随机数生成器来决定植物...
通过Scene、Node和Camera等类,开发者可以创建出具有深度感的3D场景,并且JavaFX还支持CSS样式表,使用户界面的定制更加简单。 在文档和系统方面,可能包含的内容有: 1. **理论基础**:介绍图形图像处理的基本...
在JavaFX中,可以使用`Camera`和`PerspectiveCamera`来实现3D效果。通过调整相机的位置和视角,可以实现从不同角度查看2D图像的3D效果。在更复杂的场景中,可能还需要使用3D图形库如jMonkeyEngine。 4. **地图处理*...
5. **3D图形**:如果包含JavaFX,可能会有如何创建3D场景、物体和光照效果的代码。 6. **用户交互**:如何监听和响应用户的鼠标和键盘事件,实现图形的动态响应。 7. **图像处理**:使用BufferedImage类进行图像...