`

JavaFX 3D部分介绍(1) 3D Shape

 
阅读更多

声明: 本博客文章原创类别的均为个人原创,版权所有。转载请注明出处: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,cylindersspheres。其实还是很少的,如下图所示:


其中,类的继承结构如下:

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物体,主要使用的是TriangleMeshTriangle 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中操纵相机的方法的应用程序

    "JavaFX3D-ManeuvringACamera"项目是一个示例应用程序,旨在帮助开发者了解如何在JavaFX 3D场景中控制相机视角。 1. **JavaFX 3D基础**: - JavaFX 3D 提供了一组高级图形API,使得开发人员能够创建复杂的3D场景,...

    javaFX Demo 模板案例

    它是Java平台的一部分,提供了一系列高级特性,包括2D和3D图形处理、媒体支持、CSS样式以及强大的数据绑定机制。本JavaFX Demo模板案例将帮助我们了解如何使用JavaFX构建一个简单的应用程序。 首先,JavaFX提供了...

    《JavaFX Essentials》 源码

    JavaFX支持2D和3D图形,通过JavaFX的Shape类和Group类,开发者可以创建和组合各种几何形状,实现复杂图形的绘制。对于3D,JavaFX提供了一个强大的Stage3D API,可以创建具有深度和透视的3D场景。 5. **媒体支持**...

    explore-javaFX-3D:探索 JavaFX 3D

    1. **几何形状**:JavaFX 3D 支持多种基本几何形状,如立方体、球体、圆柱体、锥体等。这些形状可以通过` javafx.scene.shape`包中的类创建,例如`Box`, `Sphere`, `Cylinder` 和 `Cone`。开发者可以组合这些基本...

    javafx-src.zip

    4. **2D和3D图形**:JavaFX提供了强大的2D和3D图形库,如javafx.scene.shape和javafx.scene.image,可以创建复杂的几何形状、图像处理以及动画效果。 5. **媒体处理**:JavaFX内建了媒体API(javafx.media),可以...

    JavaFx本质论源代码

    对于2D和3D图形的支持,JavaFX提供了javafx.scene.shape和javafx.scene.image包,其中包含各种形状和图像类。同时,javafx.scene.media包提供了音频和视频的播放功能,可以创建多媒体应用程序。 在"EssentialJavaFX...

    javafx画板-源码

    JavaFX包括一组预定义的控件、样式表(CSS)支持、2D和3D图形API、媒体支持、动画工具等特性。它的核心是Scene类,它是所有可视元素的容器,而Node类则是所有可视元素的基类,包括Rectangle(矩形)、Circle(圆形)...

    moon3d:JavaFX的3D Moon

    在JavaFX中,3D图形的核心是`javafx.scene`包,特别是`javafx.scene.shape`和`javafx.scene.transform`这两个子包。`shape`包包含了各种基本3D形状,如`Box`, `Sphere`, `Cylinder`等,而`transform`包则提供了旋转...

    j3d-1_5_2-windows-amd64.zip

    Java 3D是一款由Sun Microsystems开发的开源三维图形库,它是Java平台的一部分,旨在提供一个功能强大、易于使用的API来创建和操作复杂的3D场景。Java 3D库基于OpenGL,能够实现高质量的3D图形渲染,使得开发者可以...

    JavaFX编程程序

    1. **JavaFX基础知识**:首先,你需要熟悉JavaFX的基础,包括控件、布局管理器、事件处理和样式表。例如,Scene是所有UI内容的容器,而Nodes(如Button、Label)是构成场景的基本元素。布局管理器如GridPane和...

    JavaFX 1.3.1 API

    5. **2D和3D图形**: JavaFX 1.3.1提供了强大的2D和3D图形渲染能力,开发者可以使用`Group`, `Shape`, `Camera`等类创建复杂的视觉效果。虽然3D功能相对较新且可能有限,但它开启了JavaFX在3D应用程序领域的可能性。 ...

    java做的3D魔方

    1. **Java 3D库**:Java 3D是Java平台上的一个开源库,用于构建和展示三维图形应用。它提供了一组高级API,使得开发者可以轻松地创建、操作和展示3D对象。Java 3D支持基本的几何形状创建、变换、光照、纹理映射等...

    javafx-scr.zip

    同时,2D和3D图形功能让开发者能够创建富有视觉吸引力的应用,例如使用Shape类创建几何形状,或者使用Canvas进行低级的像素操作。 在实际开发中,JavaFX通常与JavaFX Scene Builder结合使用,这是一个可视化工具,...

    用Java 3D实现三维演示系统

    Java 3D是Java Advanced Imaging (JAI) 的一部分,它基于OpenGL标准,但在Java环境中提供了一个更易用的API。Java 3D的核心概念包括: 1. **场景图(Scene Graph)**:Java 3D通过场景图来组织三维对象。场景图是由...

    JavaFX初识

    JavaFX是Java平台上的一个强大的用户界面工具包,主要用于创建桌面、移动以及嵌入式的富客户端应用程序。...在深入研究时,可以进一步探索JavaFX的高级特性,如3D图形、媒体支持、图表组件以及跨平台部署策略。

    java 实现3d底图上面灵活增加模型的源码范例(由浅入深代码范例和详细说明).docx

    对于3D图形,JavaFX提供了诸如Shape、Group和Scene等类,帮助我们构建复杂的3D场景。 在给出的代码示例中,我们创建了一个简单的立方体模型并将其添加到3D底图上。以下是对代码的详细解析: 1. 首先,我们导入了...

    java实现3D爱心效果.zip

    在JavaFX中,我们可以使用`javafx.scene.shape`包中的类来构建3D几何形状,如`Sphere`, `Box`, 或者 `Cylinder`。对于3D爱心,我们需要一个非标准的形状,可能需要自定义的几何体。这通常通过继承`javafx.scene....

    JavaFX:简单的JavaFX应用程序

    此外,JavaFX支持3D图形,可以通过`javafx.scene.shape`和`javafx.scene.transform`包中的类创建和操作3D对象。这使得JavaFX成为开发交互式3D应用的一个强大工具。 总的来说,JavaFX为Java开发者提供了一套强大的...

    Java8新特性之JavaFX 8_动力节点Java学院整理

    2. **JavaFX 3D**:JavaFX 8增强了对3D图形的支持,提供了如`Shape3D`(Box, Cylinder, MeshView, Sphere等子类),`SubScene`, `Material`, `PickResult`, `LightBase`(包括AmbientLight和PointLight子类),以及`...

Global site tag (gtag.js) - Google Analytics