VertexElement — Aspose.3D Python API Reference

Пакет: aspose.threed.entities (aspose-3d-foss 26.1.0)

VertexElement є абстрактним базовим класом для всіх шарів даних per-vertex, які можна приєднати до Geometry об’єкта. Кожен шар містить масив значень даних разом з mapping_mode і reference_mode метаданими, які описують, як дані відображаються на базову геометрію. Підкласи спеціалізовані для нормалей, UV‑координат, кольорів вершин, тангенсів, біноормалей та груп згладжування.


from aspose.threed.entities import VertexElement

VertexElement

vertex_element_typeVertexElementTypeчитатиСемантичний тип цього шару (наприклад,., NORMAL, UV, VERTEX_COLOR).
namestrчитання/записНеобов’язкова назва для цього шару.
mapping_modeMappingModeчитання/записКерує тим, з яким примітивом геометрії пов’язане кожне значення даних.
reference_modeReferenceModeчитання/записКерує тим, чи значення адресуються безпосередньо або через масив індексів.
indiceslist[int]читанняМасив індексів, що використовується коли reference_mode є INDEX_TO_DIRECT.
datalist[FVector4]читатиНеоброблені значення даних зберігаються як FVector4 entries (доступні в 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

Зберігає цілочисельні ідентифікатори груп згладжування для кожного полігона. Завантажується з OBJ‑файлів, які містять 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_COLORRGBA-колір на вершину.
TANGENTТангенціальні вектори для нормального мапування.
BINORMALБінормальні (бітангенціальні) вектори.
SMOOTHING_GROUPЦілочисельні ідентифікатори груп згладжування для кожного полігона.
MATERIALІндекс матеріалу для кожного полігона.
POLYGON_GROUPІндекс групування полігонів.
VERTEX_CREASEВаги складок вершини під час поділу.
EDGE_CREASEВаги складок ребра під час поділу.
USER_DATAДовільні дані, визначені користувачем.
VISIBILITYПрапорці видимості для кожного елементу.
SPECULARВідбивний колір або інтенсивність.
WEIGHTВаги змішування для скинінгу.
HOLEПрапорці отворів у полігоні.

Перерахування MappingMode

Керує тим, з яким геометричним примітивом пов’язане значення елементу вершини.

from aspose.threed.entities import MappingMode
CONTROL_POINTОдне значення на контрольну точку (вершину).
POLYGON_VERTEXОдне значення на кут полігона (face-vertex).
POLYGONОдне значення на полігон.
EDGEОдне значення на ребро.
ALL_SAMEОдне значення застосовується до всього меша.

Перерахування ReferenceMode

Керує способом індексування масиву даних.

from aspose.threed.entities import ReferenceMode
DIRECTДані доступаються послідовно без окремого масиву індексів.
INDEXДані доступаються через окремий масив індексів.
INDEX_TO_DIRECTМасив індексів відображає кожен примітив маппінгу на позицію в масиві даних.

Прикріпити шар нормалей до сітки (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")

Див. також

 Українська