VertexElement — Aspose.3D Python API Reference

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

VertexElement 是所有可附加到对象的每顶点数据层的抽象基类 Geometry 对象。每个层持有一个数据值数组以及 mapping_mode 以及 reference_mode 描述数据如何映射到底层几何体的元数据。子类专用于法线、UV 坐标、顶点颜色、切线、双切线和平滑组。.


from aspose.threed.entities import VertexElement

VertexElement

vertex_element_typeVertexElementTypeRead此层的语义类型(例如,., NORMAL, UV, VERTEX_COLOR).
namestrRead/Write此层的可选名称。.
mapping_modeMappingModeRead/Write控制每个数据值关联的几何体基元。.
reference_modeReferenceModeRead/Write控制值是直接寻址还是通过索引数组寻址。.
indiceslist[int]Read在以下情况下使用的索引数组 reference_modeINDEX_TO_DIRECT.
datalist[FVector4]读取原始数据值存储为 FVector4 条目(可在 VertexElementFVector 子类).

set_data(data)None替换数据数组。接受 list[FVector2], list[FVector3],,或 list[FVector4];;值将标准化为 FVector4 内部。.
set_indices(data)None将索引数组替换为整数列表。.
clear()None从图层中移除所有数据值和索引。.
copy_to(target)None将数据和索引复制到另一个 VertexElementFVector 实例。.

VertexElementNormal

存储表面法线向量。法线数据通常被渲染器用于光照计算。.

from aspose.threed.entities import VertexElementNormal

VertexElementVertexElementFVectorVertexElementNormal

VertexElementNormal(name="", mapping_mode=None, reference_mode=None)

vertex_element_type 被固定为 VertexElementType.NORMAL.


VertexElementUV

存储 UV 纹理坐标。一个网格可以携带多个 UV 层,以对应不同的纹理通道。.

from aspose.threed.entities import VertexElementUV

VertexElementVertexElementFVectorVertexElementUV

VertexElementUV(texture_mapping=None, name="", mapping_mode=None, reference_mode=None)
texture_mappingTextureMapping此 UV 层所服务的纹理通道。默认是 TextureMapping.DIFFUSE.

附加属性

texture_mappingTextureMapping读取此 UV 层关联的纹理通道。.

add_data(data)

追加 UV 坐标数据。接受 list[Vector2], list[Vector3], list[FVector2], list[FVector3],,或 list[FVector4].。所有值在内部存储为 FVector4 未使用的分量设为 0.0.


VertexElementVertexColor

存储每顶点的 RGBA 颜色值,范围为 0–1。.

from aspose.threed.entities import VertexElementVertexColor

VertexElementVertexElementFVectorVertexElementVertexColor

VertexElementVertexColor(name="", mapping_mode=None, reference_mode=None)

vertex_element_type 被固定为 VertexElementType.VERTEX_COLOR.


VertexElementTangent

存储每顶点或每角的切线向量,用于法线贴图渲染。.

from aspose.threed.entities import VertexElementTangent

VertexElementVertexElementFVectorVertexElementTangent

vertex_element_type 被固定为 VertexElementType.TANGENT.


VertexElementBinormal

存储每顶点或每角的双法线(副切线)向量,补充 VertexElementTangent 用于切线空间法线贴图。.

from aspose.threed.entities import VertexElementBinormal

VertexElementVertexElementFVectorVertexElementBinormal

vertex_element_type 被固定为 VertexElementType.BINORMAL.


VertexElementSmoothingGroup

存储每多边形的整数平滑组 ID。加载包含 s 声明。.

from aspose.threed.entities import VertexElementSmoothingGroup

VertexElementVertexElementIntsTemplateVertexElementSmoothingGroup

vertex_element_type 被固定为 VertexElementType.SMOOTHING_GROUP.


VertexElementType 枚举

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

from aspose.threed.entities import VertexElementType
NORMAL表面法线向量。.
UV纹理 UV 坐标。.
VERTEX_COLOR每顶点 RGBA 颜色。.
TANGENT用于法线贴图的切线向量。.
BINORMALBinormal(bitangent)向量。.
SMOOTHING_GROUP每多边形平滑组整数 ID。.
MATERIAL每多边形材质索引。.
POLYGON_GROUP多边形分组索引。.
VERTEX_CREASE细分顶点折痕权重。.
EDGE_CREASE细分边折痕权重。.
USER_DATA任意用户自定义数据。.
VISIBILITY每元素可见性标志。.
SPECULAR高光颜色或强度。.
WEIGHT蒙皮混合权重。.
HOLE多边形孔洞标志。.

MappingMode 枚举

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

from aspose.threed.entities import MappingMode
CONTROL_POINT每个控制点(顶点)一个值。.
POLYGON_VERTEX每个多边形角(面顶点)一个值。.
POLYGON每个多边形一个值。.
EDGE每条边一个值。.
ALL_SAME单个值适用于整个网格。.

ReferenceMode 枚举

控制数据数组的索引方式。.

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

为网格附加法线层(DIRECT 映射)::

from aspose.threed import Scene
from aspose.threed.entities import Mesh, VertexElementType, MappingMode, ReferenceMode, VertexElementNormal
from aspose.threed.utilities import Vector4, FVector4

mesh = Mesh()
mesh.control_points.append(Vector4(0.0, 0.0, 0.0, 1.0))
mesh.control_points.append(Vector4(1.0, 0.0, 0.0, 1.0))
mesh.control_points.append(Vector4(0.5, 1.0, 0.0, 1.0))
mesh.create_polygon(0, 1, 2)

normals: VertexElementNormal = mesh.create_element(
    VertexElementType.NORMAL,
    MappingMode.CONTROL_POINT,
    ReferenceMode.DIRECT,
)
normals.set_data([
    FVector4(0.0, 0.0, 1.0, 0.0),
    FVector4(0.0, 0.0, 1.0, 0.0),
    FVector4(0.0, 0.0, 1.0, 0.0),
])

scene = Scene()
scene.root_node.create_child_node("tri", mesh)
scene.save("triangle_normals.glb")

附加 UV 坐标(INDEX_TO_DIRECT 映射)::

from aspose.threed import Scene
from aspose.threed.entities import Mesh, TextureMapping, MappingMode, ReferenceMode
from aspose.threed.utilities import Vector4, FVector4

mesh = Mesh()
for x, z in [(0, 0), (1, 0), (1, 1), (0, 1)]:
    mesh.control_points.append(Vector4(float(x), 0.0, float(z), 1.0))
mesh.create_polygon(0, 1, 2, 3)

uv = mesh.create_element_uv(
    TextureMapping.DIFFUSE,
    MappingMode.POLYGON_VERTEX,
    ReferenceMode.INDEX_TO_DIRECT,
)
uv.set_data([
    FVector4(0.0, 0.0, 0.0, 0.0),
    FVector4(1.0, 0.0, 0.0, 0.0),
    FVector4(1.0, 1.0, 0.0, 0.0),
    FVector4(0.0, 1.0, 0.0, 0.0),
])
uv.set_indices([0, 1, 2, 3])

scene = Scene()
scene.root_node.create_child_node("quad", mesh)
scene.save("quad_uv.glb")

另见

 中文