声明: 本博客文章原创类别的均为个人原创,版权所有。转载请注明出处:http://blog.csdn.net/ml3947,另外本人的个人博客:http://www.wjfxgame.com。
众所周知,3D模块是JavaFX 8中非常重要的组成部分。而在JavaFX 8的目前版本中,JavaFX 3D的各种特性也在陆续添加中。下面,我来对JavaFX 8中现有的3D部分进行简单的介绍。
3D Shapes
JavaFX 3D Graphics目前提供了对3D Shape的创建。其中包括,内置定义的3D物体,和用户自定义的3D物体。
内置的3D物体包括:boxes,cylinders和spheres。其实还是很少的,如下图所示:
其中,类的继承结构如下:
java.lang.Object
javafx.scene.Node
javafx.scene.shape.Shape3D
javafx.scene.shape.MeshView
javafx.scene.shape.Box
javafx.scene.shape.Cylinder
javafx.scene.shape.Sphere
Box,Cylinder,Sphere都是继承与Shape3D,而且还是Node的子类。由此可见,3D的物体可以直接作为普通Node节点来使用。
创建起来,也是非常的简单。
Box myBox = new Box(width, height, depth);
Cylinder myCylinder = new Cylinder(radius, height);
Cylinder myCylinder2 = new Cylinder(radius, height, divisions);
Sphere mySphere = new Sphere(radius);
Sphere mySphere2 = new Sphere(radius, divisions);
下面,我们来看看用户定义的3D物体。
用户定义3D物体,主要使用的是TriangleMesh,Triangle mesh
在3D中是最常用和基础的mesh。
Triangle Mesh包含了Points的数组,纹理映射的数组以及由三角元素的mesh组成的面。(如果接触过OpenGL等的
编程的话,对这里应该是很容易理解的。)
接下来,我们来看看如何创建一个TriangleMesh。
1.首先创建一个TriangleMesh的实例。
mesh = new TriangleMesh();
2.定义描述Mesh顶点的数组
float points[] = { ... };
mesh.getPoints().addAll(points);
3.描述每个定点的纹理坐标映射
float texCoords[] = { ... };
mesh.getTexCoords().addAll(texCoords);
4.使用定点数组来创建各个三角形组成的面
int faces[] = { … };
mesh.getFaces().addAll(faces);
5.定义每个面所属的光滑组(Smoothing group)
int smoothingGroups[] = { … };
mesh.getFaceSmoothingGroups().addAll(smoothingGroups);
不论这个面是smooth还是faceted,Smoothing group都会调整上面的顶点的法线。如果,每个单独的面都有一个相同的Smoothing group,那么这个mesh将会变得非常的光滑,否则,则相反。
------------------------------------------------------------------------------------------------------
有一段时间没有写博客了,工作的中心由android转为Unity3D了,所以最近一直在做Unity3D相关的。抽空看了下JavaFX 3D API,在这里就做一点简单的评价,JavaFX 3D API 没有Unity3D方便,但比Unity3D自由一些(例如可以自定义3D物体,自定义顶点数组,纹理映射等),没有OpenGL自由(封装过的必然缺陷),但比OpenGL方便简单些(不用写那么多看得头晕的GL函数),属于折中的情况。大家可以根据自己的情况来使用。
------------------------------------------------------------------------------------------------------
本博客文章原创类别的均为个人原创,版权所有。转载请注明出处:http://blog.csdn.net/ml3947,另外本人的个人博客:http://www.wjfxgame.com。
分享到:
相关推荐
"JavaFX3D-ManeuvringACamera"项目是一个示例应用程序,旨在帮助开发者了解如何在JavaFX 3D场景中控制相机视角。 1. **JavaFX 3D基础**: - JavaFX 3D 提供了一组高级图形API,使得开发人员能够创建复杂的3D场景,...
它是Java平台的一部分,提供了一系列高级特性,包括2D和3D图形处理、媒体支持、CSS样式以及强大的数据绑定机制。本JavaFX Demo模板案例将帮助我们了解如何使用JavaFX构建一个简单的应用程序。 首先,JavaFX提供了...
JavaFX支持2D和3D图形,通过JavaFX的Shape类和Group类,开发者可以创建和组合各种几何形状,实现复杂图形的绘制。对于3D,JavaFX提供了一个强大的Stage3D API,可以创建具有深度和透视的3D场景。 5. **媒体支持**...
1. **几何形状**:JavaFX 3D 支持多种基本几何形状,如立方体、球体、圆柱体、锥体等。这些形状可以通过` javafx.scene.shape`包中的类创建,例如`Box`, `Sphere`, `Cylinder` 和 `Cone`。开发者可以组合这些基本...
4. **2D和3D图形**:JavaFX提供了强大的2D和3D图形库,如javafx.scene.shape和javafx.scene.image,可以创建复杂的几何形状、图像处理以及动画效果。 5. **媒体处理**:JavaFX内建了媒体API(javafx.media),可以...
对于2D和3D图形的支持,JavaFX提供了javafx.scene.shape和javafx.scene.image包,其中包含各种形状和图像类。同时,javafx.scene.media包提供了音频和视频的播放功能,可以创建多媒体应用程序。 在"EssentialJavaFX...
JavaFX包括一组预定义的控件、样式表(CSS)支持、2D和3D图形API、媒体支持、动画工具等特性。它的核心是Scene类,它是所有可视元素的容器,而Node类则是所有可视元素的基类,包括Rectangle(矩形)、Circle(圆形)...
在JavaFX中,3D图形的核心是`javafx.scene`包,特别是`javafx.scene.shape`和`javafx.scene.transform`这两个子包。`shape`包包含了各种基本3D形状,如`Box`, `Sphere`, `Cylinder`等,而`transform`包则提供了旋转...
Java 3D是一款由Sun Microsystems开发的开源三维图形库,它是Java平台的一部分,旨在提供一个功能强大、易于使用的API来创建和操作复杂的3D场景。Java 3D库基于OpenGL,能够实现高质量的3D图形渲染,使得开发者可以...
1. **JavaFX基础知识**:首先,你需要熟悉JavaFX的基础,包括控件、布局管理器、事件处理和样式表。例如,Scene是所有UI内容的容器,而Nodes(如Button、Label)是构成场景的基本元素。布局管理器如GridPane和...
5. **2D和3D图形**: JavaFX 1.3.1提供了强大的2D和3D图形渲染能力,开发者可以使用`Group`, `Shape`, `Camera`等类创建复杂的视觉效果。虽然3D功能相对较新且可能有限,但它开启了JavaFX在3D应用程序领域的可能性。 ...
1. **Java 3D库**:Java 3D是Java平台上的一个开源库,用于构建和展示三维图形应用。它提供了一组高级API,使得开发者可以轻松地创建、操作和展示3D对象。Java 3D支持基本的几何形状创建、变换、光照、纹理映射等...
同时,2D和3D图形功能让开发者能够创建富有视觉吸引力的应用,例如使用Shape类创建几何形状,或者使用Canvas进行低级的像素操作。 在实际开发中,JavaFX通常与JavaFX Scene Builder结合使用,这是一个可视化工具,...
Java 3D是Java Advanced Imaging (JAI) 的一部分,它基于OpenGL标准,但在Java环境中提供了一个更易用的API。Java 3D的核心概念包括: 1. **场景图(Scene Graph)**:Java 3D通过场景图来组织三维对象。场景图是由...
JavaFX是Java平台上的一个强大的用户界面工具包,主要用于创建桌面、移动以及嵌入式的富客户端应用程序。...在深入研究时,可以进一步探索JavaFX的高级特性,如3D图形、媒体支持、图表组件以及跨平台部署策略。
对于3D图形,JavaFX提供了诸如Shape、Group和Scene等类,帮助我们构建复杂的3D场景。 在给出的代码示例中,我们创建了一个简单的立方体模型并将其添加到3D底图上。以下是对代码的详细解析: 1. 首先,我们导入了...
在JavaFX中,我们可以使用`javafx.scene.shape`包中的类来构建3D几何形状,如`Sphere`, `Box`, 或者 `Cylinder`。对于3D爱心,我们需要一个非标准的形状,可能需要自定义的几何体。这通常通过继承`javafx.scene....
此外,JavaFX支持3D图形,可以通过`javafx.scene.shape`和`javafx.scene.transform`包中的类创建和操作3D对象。这使得JavaFX成为开发交互式3D应用的一个强大工具。 总的来说,JavaFX为Java开发者提供了一套强大的...
2. **JavaFX 3D**:JavaFX 8增强了对3D图形的支持,提供了如`Shape3D`(Box, Cylinder, MeshView, Sphere等子类),`SubScene`, `Material`, `PickResult`, `LightBase`(包括AmbientLight和PointLight子类),以及`...