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 VertexElementVertexElement
vertex_element_type | VertexElementType | Read | 此层的语义类型(例如,., NORMAL, UV, VERTEX_COLOR). |
name | str | Read/Write | 此层的可选名称。. |
mapping_mode | MappingMode | Read/Write | 控制每个数据值关联的几何体基元。. |
reference_mode | ReferenceMode | Read/Write | 控制值是直接寻址还是通过索引数组寻址。. |
indices | list[int] | Read | 在以下情况下使用的索引数组 reference_mode 是 INDEX_TO_DIRECT. |
data | list[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 VertexElementNormalVertexElement → VertexElementFVector → VertexElementNormal
VertexElementNormal(name="", mapping_mode=None, reference_mode=None)vertex_element_type 被固定为 VertexElementType.NORMAL.
VertexElementUV
存储 UV 纹理坐标。一个网格可以携带多个 UV 层,以对应不同的纹理通道。.
from aspose.threed.entities import VertexElementUVVertexElement → VertexElementFVector → VertexElementUV
VertexElementUV(texture_mapping=None, name="", mapping_mode=None, reference_mode=None)texture_mapping | TextureMapping | 此 UV 层所服务的纹理通道。默认是 TextureMapping.DIFFUSE. |
附加属性
texture_mapping | TextureMapping | 读取 | 此 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 VertexElementVertexColorVertexElement → VertexElementFVector → VertexElementVertexColor
VertexElementVertexColor(name="", mapping_mode=None, reference_mode=None)vertex_element_type 被固定为 VertexElementType.VERTEX_COLOR.
VertexElementTangent
存储每顶点或每角的切线向量,用于法线贴图渲染。.
from aspose.threed.entities import VertexElementTangentVertexElement → VertexElementFVector → VertexElementTangent
vertex_element_type 被固定为 VertexElementType.TANGENT.
VertexElementBinormal
存储每顶点或每角的双法线(副切线)向量,补充 VertexElementTangent 用于切线空间法线贴图。.
from aspose.threed.entities import VertexElementBinormalVertexElement → VertexElementFVector → VertexElementBinormal
vertex_element_type 被固定为 VertexElementType.BINORMAL.
VertexElementSmoothingGroup
存储每多边形的整数平滑组 ID。加载包含 s 声明。.
from aspose.threed.entities import VertexElementSmoothingGroupVertexElement → VertexElementIntsTemplate → VertexElementSmoothingGroup
vertex_element_type 被固定为 VertexElementType.SMOOTHING_GROUP.
VertexElementType 枚举
标识顶点元素层的语义角色。.
from aspose.threed.entities import VertexElementTypeNORMAL | 表面法线向量。. |
UV | 纹理 UV 坐标。. |
VERTEX_COLOR | 每顶点 RGBA 颜色。. |
TANGENT | 用于法线贴图的切线向量。. |
BINORMAL | Binormal(bitangent)向量。. |
SMOOTHING_GROUP | 每多边形平滑组整数 ID。. |
MATERIAL | 每多边形材质索引。. |
POLYGON_GROUP | 多边形分组索引。. |
VERTEX_CREASE | 细分顶点折痕权重。. |
EDGE_CREASE | 细分边折痕权重。. |
USER_DATA | 任意用户自定义数据。. |
VISIBILITY | 每元素可见性标志。. |
SPECULAR | 高光颜色或强度。. |
WEIGHT | 蒙皮混合权重。. |
HOLE | 多边形孔洞标志。. |
MappingMode 枚举
控制每个顶点元素值关联的几何基元。.
from aspose.threed.entities import MappingModeCONTROL_POINT | 每个控制点(顶点)一个值。. |
POLYGON_VERTEX | 每个多边形角(面顶点)一个值。. |
POLYGON | 每个多边形一个值。. |
EDGE | 每条边一个值。. |
ALL_SAME | 单个值适用于整个网格。. |
ReferenceMode 枚举
控制数据数组的索引方式。.
from aspose.threed.entities import ReferenceModeDIRECT | 数据按顺序访问,无需单独的索引数组。. |
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")