VertexElement — Aspose.3D Python API Reference
Пакет: aspose.threed.entities (aspose-3d-foss 26.1.0)
VertexElement е абстрактен базов клас за всички слоеве от данни за всеки връх, които могат да бъдат прикрепени към Geometry обект. Всеки слой съдържа масив от стойности на данни заедно с mapping_mode и reference_mode метаданни, които описват как данните се съпоставят с подлежащата геометрия. Подкласовете са специализирани за нормали, UV координати, цветове на върховете, тангенти, бинормали и групи за изглаждане.
Methods
from aspose.threed.entities import VertexElementMethods
VertexElement
Methods
| Methods | Methods | Methods | Methods |
|---|---|---|---|
vertex_element_type | VertexElementType | четене | Семантичен тип на този слой (например,., NORMAL, UV, VERTEX_COLOR). |
name | str | четене/писане | Опционално име за този слой. |
mapping_mode | MappingMode | четене/писане | Контролира кой геометричен примитив е свързан с всяка стойност на данните. |
reference_mode | ReferenceMode | четене/писане | Контролира дали стойностите се адресират директно или чрез масив от индекси. |
indices | list[int] | четене | Масив от индекси, използван когато reference_mode е INDEX_TO_DIRECT. |
data | list[FVector4] | прочетено | Сурови данни, съхранени като FVector4 записи (достъпни на VertexElementFVector подкласове). |
Methods
| Methods | Methods | Methods |
|---|---|---|
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 VertexElementNormalMethods
VertexElement → VertexElementFVector → VertexElementNormal
Methods
VertexElementNormal(name="", mapping_mode=None, reference_mode=None)vertex_element_type е фиксирано на VertexElementType.NORMAL.
VertexElementUV
Съхранява UV текстурните координати. Мрежата може да съдържа множество UV слоеве за различни текстурни канали.
from aspose.threed.entities import VertexElementUVMethods
VertexElement → VertexElementFVector → VertexElementUV
Methods
VertexElementUV(texture_mapping=None, name="", mapping_mode=None, reference_mode=None)| Methods | Methods | Methods |
|---|---|---|
texture_mapping | TextureMapping | Текстурният канал, който обслужва този UV слой. По подразбиране е TextureMapping.DIFFUSE. |
Допълнително свойство
| Methods | Methods | Methods | Methods |
|---|---|---|---|
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 VertexElementVertexColorMethods
VertexElement → VertexElementFVector → VertexElementVertexColor
Methods
VertexElementVertexColor(name="", mapping_mode=None, reference_mode=None)vertex_element_type е фиксирано на VertexElementType.VERTEX_COLOR.
VertexElementTangent
Съхранява тангентните вектори за всеки връх или ъгъл, използвани за рендериране на нормални карти.
from aspose.threed.entities import VertexElementTangentMethods
VertexElement → VertexElementFVector → VertexElementTangent
vertex_element_type е фиксирано на VertexElementType.TANGENT.
VertexElementBinormal
Съхранява векторите на бинормал (битангенс) за всеки връх или ъгъл, допълвайки VertexElementTangent за нормално картографиране в тангенциалното пространство.
from aspose.threed.entities import VertexElementBinormalMethods
VertexElement → VertexElementFVector → VertexElementBinormal
vertex_element_type е фиксирано на VertexElementType.BINORMAL.
VertexElementSmoothingGroup
Съхранява цели числа за групи на изглаждане за всеки полигон. Зарежда се от OBJ файлове, които съдържат s декларации.
from aspose.threed.entities import VertexElementSmoothingGroupMethods
VertexElement → VertexElementIntsTemplate → VertexElementSmoothingGroup
vertex_element_type е фиксирано на VertexElementType.SMOOTHING_GROUP.
Перечисление VertexElementType
Идентифицира семантичната роля на слой от елемент на връх.
from aspose.threed.entities import VertexElementType| Methods | Methods |
|---|---|
NORMAL | Вектори на нормалите на повърхността. |
UV | UV координати на текстурата. |
VERTEX_COLOR | RGBA цвят за всеки връх. |
TANGENT | Тангенциални вектори за нормално картографиране. |
BINORMAL | Бинормални (битангенциални) вектори. |
SMOOTHING_GROUP | Целочислени ID‑та на групите за изглаждане за всеки полигон. |
MATERIAL | Индекс на материал за всеки полигон. |
POLYGON_GROUP | Индекс за групиране на полигони. |
VERTEX_CREASE | Тежести на гънка за върхове при подразделяне. |
EDGE_CREASE | Тежести на гънка за ръбове при подразделяне. |
USER_DATA | Произволни потребителски дефинирани данни. |
VISIBILITY | Флагове за видимост по елемент. |
SPECULAR | Спекуларен цвят или интензитет. |
WEIGHT | Тежести за смесване за skinning. |
HOLE | Флагове за дупки в полигон. |
Перечисление MappingMode
Контролира към коя геометрична примитивна единица е свързана стойността на елемента на връх.
from aspose.threed.entities import MappingMode| Methods | Methods |
|---|---|
CONTROL_POINT | Една стойност за всяка контролна точка (върх). |
POLYGON_VERTEX | Една стойност за всеки ъгъл на полигон (face-vertex). |
POLYGON | Една стойност за всеки полигон. |
EDGE | Една стойност за всеки ръб. |
ALL_SAME | Една стойност се прилага за цялата мрежа. |
Перечисление ReferenceMode
Контролира начина, по който се индексира масивът от данни.
from aspose.threed.entities import ReferenceMode| Methods | Methods |
|---|---|
DIRECT | Данните се достъпват последователно без отделен масив с индекси. |
INDEX | Данните се достъпват чрез отделен масив с индекси. |
INDEX_TO_DIRECT | Масивът с индекси съпоставя всеки примитив за картографиране към позиция в масива с данни. |
Methods
Прикрепете нормален слой към мрежа (DIRECT mapping):
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")