VertexElement

VertexElement — Aspose.3D FOSS for Java

包:: com.aspose.threed (aspose-3d-foss 26.1.0)

VertexElement 是用于附加到 a 的每顶点(或每多边形、每边)数据层的抽象基类 Mesh.每个子类存储一种特定的几何属性——法线、UV 坐标、顶点颜色或平滑组。.


Example

Example

ExampleExampleExampleExampleExample
vertexElementTypeVertexElementTypegetVertexElementType()此元素的语义类型(只读)。.
mappingModeMappingModegetMappingMode()setMappingMode(MappingMode)控制每个值映射到哪个基元。.
referenceModeReferenceModegetReferenceMode()setReferenceMode(ReferenceMode)控制值的索引方式。.
indicesList<Integer>getIndices()索引数组(在引用模式为 INDEX_TO_DIRECT).
nameStringgetName()setName(String)此顶点元素层的可选名称。.

VertexElementNormal

根据, 为每个顶点或每个多边形角存储一个法向量。 getMappingMode(). 数据值为 Vector4 实例具有 w 未使用。.

import com.aspose.threed.*;

VertexElement normals = mesh.createElement(
    VertexElementType.NORMAL,
    MappingMode.CONTROL_POINT,
    ReferenceMode.DIRECT
);

Example

ExampleExampleExampleExample
dataList<Vector4>getData()法线向量。该 w 组件未使用(通常 0.0).

返回:VertexElementUV

存储纹理坐标对(Vector2)每个顶点或每个多边形角。网格可以携带多个 UV 层以用于不同的纹理通道。.


VertexElementUV uv = mesh.createElementUV(
    TextureMapping.DIFFUSE,
    MappingMode.POLYGON_VERTEX,
    ReferenceMode.INDEX_TO_DIRECT
);

Example

ExampleExampleExampleExample
dataList<Vector2>getData()UV 坐标对。.

VertexElementVertexColor

存储每顶点或每角的 RGBA 颜色数据,形式为 Vector4 (r、g、b、a 的范围在 0–1 之间)。.

Example

ExampleExampleExampleExample
dataList<Vector4>getData()RGBA 颜色值。.

VertexElementType 枚举

标识顶点元素层的语义角色。.

import com.aspose.threed.*;
ExampleExample
NORMAL表面法线向量。.
UV纹理 UV 坐标。.
VERTEX_COLOR每顶点 RGBA 颜色。.
TANGENT用于法线贴图的切线向量。.
BINORMAL副法线(双切线)向量。.
MATERIAL每多边形材质索引。.
POLYGON_GROUP多边形分组索引。.
VERTEX_CREASE细分顶点折痕权重。.
EDGE_CREASE细分边缘折痕权重。.
USER_DATA任意用户自定义数据。.
VISIBILITY每元素可见性标志。.
SPECULAR镜面颜色或强度。.
WEIGHT用于蒙皮的混合权重。.
HOLE多边形孔标志。.

MappingMode 枚举

控制每个顶点元素值关联的几何基元。.

ExampleExample
CONTROL_POINT每个控制点(顶点)一个值。.
POLYGON_VERTEX每个多边形角(面-顶点)一个值。.
POLYGON每个多边形一个值。.

ReferenceMode 枚举

控制顶点元素数据数组的索引方式。.

ExampleExample
DIRECT数据按顺序访问,无需单独的索引数组。.
INDEX数据通过单独的索引数组访问。.
INDEX_TO_DIRECT索引数组将每个映射基元映射到数据数组中的位置。.

Example

import com.aspose.threed.Scene;
import com.aspose.threed.*;

Scene scene = Scene.fromFile("model.obj");

for (Node node : scene.getRootNode().getChildNodes()) {
    if (node.getEntity() instanceof Mesh) {
        Mesh mesh = (Mesh) node.getEntity();
        for (VertexElement ve : mesh.getVertexElements()) {
            System.out.println("  Element: " + ve.getVertexElementType()
                + " mapping=" + ve.getMappingMode()
                + " ref=" + ve.getReferenceMode());
        }
    }
}

另见

 中文