DOC-02-02 3D形状(Shape3D)

本章给出了在JavaFX 3D 图形库中可用的Shape3D API的相关信息。

这里有两种类型的3D形状:

● 预定义形状

● 用户自定义形状

预定义形状

预定义3D形状用于简化快速创建3D对象。这些形状包括盒子、圆柱和球体。样例用法如图2-1所示。

图2-1 预定义形状

2_1_1 container3d-small

例2-1展示了Shape3D类的层级结构。其中包括MeshView类,它用于使用指定的3D网格数据来定义一个表面。其中还包括Box、Cylinder和Sphere子类。

例2-1 Shape3D类层级结构

使用下面的信息来创建预定义形状:

● 创建一个Box对象,指定宽度、高度和深度的大小。

● 创建一个Cylinder对象,指定半径和高度

● 创建一个Sphere对象,指定半径

例2-2的代码行演示了预定义3D形状的用法。

例2-2 预定义3D形状的样例用法

用户自定义形状

例2-3展示了JavaFX Mesh类的层级结构,其中包括了TriangleMesh子类。在3D布局中三角形网格(Triangle Mesh)是最典型的网格类型。

例2-3 Mesh类层级结构

TriangleMesh中包括了独立的点数组、纹理坐标以及描述三角形构成几何网格的面。光滑组(Smoothing Group)用于对曲面中的三角形进行分组管理。在不同的Smoothiing Group中的三角形组成了硬边(Hard Edge)。

使用下面的步骤来创建一个TriangleMesh实例:

1. 创建一个新的TriangleMesh实例

2. 定义点集合,它们表示网格的定点。

3. 为每个顶点描述纹理坐标

4. 使用顶点来构造面,这些面使用三角形来描述其拓扑结构。

5. 定义每个面所属的Smothing Group。

Smoothing Group可以调整各个面的顶点使其变得光滑或碎片化。如果每个面都有不同的Smoothing Group,那么网格会变得非常碎片化。如果所有的面都在同一个Smoothing Group中,则网格会看起来非常平滑。

打赏一下
支付宝
微信
除非注明,博客文章均为原创,转载请标明文章地址
本文地址: http://www.javafxchina.net/blog/2015/08/graphics_shape3d/
百度已收录