- java.lang.Object
-
- javafx.scene.shape.Mesh
-
- javafx.scene.shape.TriangleMesh
-
public class TriangleMesh extends Mesh
定义一个三角形三角形网格,由其相关联的VertexFormat
和一组独立的顶点组件阵列组成,例如点,法线,纹理坐标和定义网格的各个三角形的面阵列。注意,方法名称和方法描述中使用的术语点实际上是指代表单个顶点的位置的空间中的3D点(x,y,z)。 术语点(复数)用于指示多个顶点的3D点集合。 类似地,术语“法线”用于表示代表单个顶点方向的空间中的三维向量(nx,ny,nz)。 术语“常数”(复数)用于指示多个顶点的3D向量集合。 术语texCoord用于指示单个顶点的单对2D纹理坐标(u,v),而术语texCoords(复数)用于指示多个顶点的纹理坐标集合。 最后,术语face用于指示3组交织点,法线(可选,取决于相关联的VertexFormat)和纹理坐标,它们一起表示单个三角形的几何拓扑,而术语“面(多)”用于指示三角形组(每个由一个面代表)。
例如,表示使用2个三角形的单个纹理矩形的面为
VertexFormat.POINT_TEXCOORD
的面具有以下数据顺序:p0,t0,p1,t1,p3,t3,//纹理矩形的第一个三角形
p1,t1,p2,t2,p3,t3 //纹理矩形的第二个三角形
]
而表示使用2个三角形的单个纹理矩形的面为
VertexFormat.POINT_NORMAL_TEXCOORD
的面具有以下数据顺序:p0,n0,t0,p1,n1,t1,p3,n3,t3,//纹理矩形的第一个三角形
p1,n1,t1,p2,n2,t2,p3,n3,t3 //纹理矩形的第二个三角形
]
其中p0,p1,p2和p3是点阵列中的索引,n0,n1,n2和n3是法线阵列中的索引,t0,t1,t2和t3是texCoords阵列的索引。
三角形有一个正面和背面。 三角形顶点的绕组顺序决定了哪一面是前脸。 JavaFX选择逆时针(或右手规则)卷绕顺序作为正面。 默认情况下,仅渲染三角形的正面。 有关详细信息,请参阅
CullFace
。的长度
points
,normals
和texCoords
必须由3,3,和2分别整除。 的长度faces
,如果它是必须是整除6VertexFormat.POINT_TEXCOORD
否则它必须是整除9,如果它是VertexFormat.POINT_NORMAL_TEXCOORD
。 面数组中的值必须在点索引的点数组中的顶点数(0到点。长度/ 3 - 1)的范围内,在法线数组(0)中的顶点数范围内对于正常索引,并且在纹理坐标索引的texCoords数组(0到texCoords.length / 2 - 1)中的顶点数量的范围内,对于normals.length / 3 - 1)。如果任何数组长度无效或面阵列中的任何值超出范围,则记录器将记录警告,并且网格不会被渲染(并且将具有空的边界)。
- 从以下版本开始:
- JavaFX 8.0
-
-
Property Summary
Properties Type Property 描述 ObjectProperty<VertexFormat>
vertexFormat
指定此TriangleMesh
的顶点格式,VertexFormat.POINT_TEXCOORD
或VertexFormat.POINT_NORMAL_TEXCOORD
。
-
构造方法摘要
构造方法 Constructor 描述 TriangleMesh()
使用默认的VertexFormat.POINT_TEXCOORD
格式类型创建一个TriangleMesh
类的新实例。TriangleMesh(VertexFormat vertexFormat)
使用指定的VertexFormat
创建一个TriangleMesh
类的新实例。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 int
getFaceElementSize()
返回表示面部的元素数。ObservableFaceArray
getFaces()
获取faces
阵列,索引到points
,normals
(可选,如果它是一个VertexFormat.POINT_NORMAL_TEXCOORD
目)和texCoords
阵列,此的TriangleMesh
。ObservableIntegerArray
getFaceSmoothingGroups()
获取此TriangleMesh
的faceSmoothingGroups
数组。int
getNormalElementSize()
返回表示法线的元素数。ObservableFloatArray
getNormals()
获取normals
阵列如此TriangleMesh
。int
getPointElementSize()
返回表示点的元素数。ObservableFloatArray
getPoints()
获取points
这个TriangleMesh
数组。int
getTexCoordElementSize()
返回表示纹理坐标的元素数。ObservableFloatArray
getTexCoords()
获取此TriangleMesh
的texCoords
数组。VertexFormat
getVertexFormat()
获取属性vertexFormat的值。void
setVertexFormat(VertexFormat value)
设置属性vertexFormat的值。ObjectProperty<VertexFormat>
vertexFormatProperty()
指定TriangleMesh
的顶点格式,VertexFormat.POINT_TEXCOORD
或VertexFormat.POINT_NORMAL_TEXCOORD
。
-
-
-
Property Detail
-
vertexFormat
public final ObjectProperty<VertexFormat> vertexFormatProperty
指定TriangleMesh
的顶点格式,VertexFormat.POINT_TEXCOORD
或VertexFormat.POINT_NORMAL_TEXCOORD
。- Default value:
- VertexFormat.POINT_TEXCOORD
- 从以下版本开始:
- JavaFX 8u40
- 另请参见:
-
getVertexFormat()
,setVertexFormat(VertexFormat)
-
-
构造方法详细信息
-
TriangleMesh
public TriangleMesh()
使用默认的VertexFormat.POINT_TEXCOORD
格式类型创建一个TriangleMesh
类的新实例。
-
TriangleMesh
public TriangleMesh(VertexFormat vertexFormat)
使用指定的VertexFormat
创建一个新的TriangleMesh
类的实例。- 参数
-
vertexFormat
- 指定顶点格式类型。 - 从以下版本开始:
- JavaFX 8u40
-
-
方法详细信息
-
setVertexFormat
public final void setVertexFormat(VertexFormat value)
设置属性vertexFormat的值。- Property description:
-
指定
TriangleMesh
的顶点格式,VertexFormat.POINT_TEXCOORD
或VertexFormat.POINT_NORMAL_TEXCOORD
。 - Default value:
- VertexFormat.POINT_TEXCOORD
- 从以下版本开始:
- JavaFX 8u40
-
getVertexFormat
public final VertexFormat getVertexFormat()
获取属性vertexFormat的值。- Property description:
-
指定
TriangleMesh
的顶点格式,VertexFormat.POINT_TEXCOORD
或VertexFormat.POINT_NORMAL_TEXCOORD
。 - Default value:
- VertexFormat.POINT_TEXCOORD
- 从以下版本开始:
- JavaFX 8u40
-
vertexFormatProperty
public final ObjectProperty<VertexFormat> vertexFormatProperty()
指定TriangleMesh
的顶点格式,VertexFormat.POINT_TEXCOORD
或VertexFormat.POINT_NORMAL_TEXCOORD
。- Default value:
- VertexFormat.POINT_TEXCOORD
- 从以下版本开始:
- JavaFX 8u40
- 另请参见:
-
getVertexFormat()
,setVertexFormat(VertexFormat)
-
getPointElementSize
public final int getPointElementSize()
返回表示点的元素数。- 结果
- 元素数量
-
getNormalElementSize
public final int getNormalElementSize()
返回表示法线的元素数。- 结果
- 元素数量
- 从以下版本开始:
- JavaFX 8u40
-
getTexCoordElementSize
public final int getTexCoordElementSize()
返回表示纹理坐标的元素数。- 结果
- 元素数量
-
getFaceElementSize
public final int getFaceElementSize()
返回表示面部的元素数。- 结果
- 元素数量
-
getPoints
public final ObservableFloatArray getPoints()
获取points
这个TriangleMesh
数组。- 结果
-
points
数组,其中每个点由3个浮点值x,y和z按顺序表示。
-
getNormals
public final ObservableFloatArray getNormals()
获取normals
这个TriangleMesh
数组。- 结果
-
normals
数组,其中每个法线按顺序由3个浮点值nx,ny和nz表示。 - 从以下版本开始:
- JavaFX 8u40
-
getTexCoords
public final ObservableFloatArray getTexCoords()
获取texCoords
阵列如此TriangleMesh
。 坐标是比例的,所以纹理的左上角是[0,0],右下角是[1,1]。- 结果
-
texCoord
数组,其中每个纹理坐标由2个浮点值表示:u和v,texCoord
顺序。
-
getFaces
public final ObservableFaceArray getFaces()
获取faces
阵列,索引到points
,normals
(可选,如果它是一个VertexFormat.POINT_NORMAL_TEXCOORD
目)和texCoords
阵列,此的TriangleMesh
。 所有指数都是按照要点,法线或texCoords阵列而不是单个浮标的要素。- 结果
-
faces
数组,其中每个面都是3 *VertexFormat.getVertexIndexSize()
整数。
-
getFaceSmoothingGroups
public final ObservableIntegerArray getFaceSmoothingGroups()
获取faceSmoothingGroups
阵列TriangleMesh
。 平滑影响网格呈现的方式,但不影响其几何。 脸部平滑组值用于控制相邻面之间的平滑。脸部平滑组值由位阵列表示,最多可以有32个独特的组; (1 << 0)〜(1 << 31)。 脸部平滑组值可以从0(无平滑组)到所有32组的范围。 脸可以属于零个或多个平滑组。 如果设置了位N,则表示组N的成员,例如,组| =(1 << N)。 值为0表示没有平滑组或硬边。 当相邻的一对面共享平滑组时,应用平滑。 否则,脸部之间呈现硬边缘。
空的faceSmoothingGroups意味着该网格中的所有面都具有平滑组值1。
如果faceSmoothingGroups不为空,则其大小必须等于面数。
这faceSmoothingGroups在它没有影响
TriangleMesh
如果是VertexFormat.POINT_NORMAL_TEXCOORD
格式。- 结果
-
该
faceSmoothingGroups
阵列的TriangleMesh
-
-