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_typeVertexElementTypeчтениеСемантический тип этого слоя (например,., NORMAL, UV, VERTEX_COLOR).
namestrчтение/записьНеобязательное имя для этого слоя.
mapping_modeMappingModeчтение/записьОпределяет, с какой геометрической примитивой связано каждое значение данных.
reference_modeReferenceModeчтение/записьОпределяет, адресуются ли значения напрямую или через массив индексов.
indiceslist[int]чтениеМассив индексов, используемый когда reference_mode является INDEX_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

Хранит целочисленные идентификаторы групп сглаживания для каждого полигона. Загружается из 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Тангенциальные векторы для normal mapping.
BINORMALBinormal (bitangent) векторы.
SMOOTHING_GROUPЦелочисленные ID smoothing group для каждого полигона.
MATERIALИндекс материала для каждого полигона.
POLYGON_GROUPИндекс группировки полигонов.
VERTEX_CREASEВеса сгибов вершин при Subdivision.
EDGE_CREASEВеса сгибов ребер при Subdivision.
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Данные доступны последовательно без отдельного indices array.
INDEXДанные доступны через отдельный indices array.
INDEX_TO_DIRECTIndices array сопоставляет каждый mapping primitive с позицией в data array.

Присоединить слой нормалей к сетке (прямое отображение):

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")

См. также

 Русский