VertexElement

VertexElement — Aspose.3D FOSS for Java

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

VertexElement является абстрактным базовым классом для слоёв данных, привязанных к каждой вершине (или полигону, ребру) Mesh. Каждый подкласс хранит определённый тип геометрического атрибута — нормали, UV‑координаты, цвета вершин или группы сглаживания.


Example

Example

ExampleExampleExampleExampleExample
vertexElementTypeVertexElementTypegetVertexElementType()Семантический тип этого элемента (только для чтения).
mappingModeMappingModegetMappingMode()setMappingMode(MappingMode)Определяет, к какому примитиву сопоставляется каждое значение.
referenceModeReferenceModegetReferenceMode()setReferenceMode(ReferenceMode)Определяет, как индексируются значения.
indicesList<Integer>getIndices()Массив индексов (используется, когда режим ссылки is INDEX_TO_DIRECT).
nameStringgetName()setName(String)Необязательное имя этого слоя вершинных элементов.

VertexElementNormal

Сохраняет один вектор нормали на вершину или на угол полигона, в зависимости от getMappingMode(). Значения данных: Vector4 экземпляры с w не используется.

import com.aspose.threed.*;

VertexElement normals = mesh.createElement(
    VertexElementType.NORMAL,
    MappingMode.CONTROL_POINT,
    ReferenceMode.DIRECT
);

Example

ExampleExampleExampleExample
dataList<Vector4>getData()Векторы нормали. w компонент не используется (обычно 0.0).

Возвращает: VertexElementUV

Сохраняет пары текстурных координат (Vector2) на вершине или на углу полигона. Сетка может содержать несколько UV‑слоёв для разных каналов текстур.


VertexElementUV uv = mesh.createElementUV(
    TextureMapping.DIFFUSE,
    MappingMode.POLYGON_VERTEX,
    ReferenceMode.INDEX_TO_DIRECT
);

Example

ExampleExampleExampleExample
dataList<Vector2>getData()Пары UV‑координат.

VertexElementVertexColor

Хранит данные цвета RGBA на вершине или на углу в виде Vector4 (r, g, b, a в диапазоне 0–1).

Example

ExampleExampleExampleExample
dataList<Vector4>getData()RGBA цветовые значения.

Перечисление VertexElementType

Определяет семантическую роль слоя элемента вершины.

import com.aspose.threed.*;
ExampleExample
NORMALВекторы нормали поверхности.
UVТекстурные UV‑координаты.
VERTEX_COLORRGBA‑цвет на вершине.
TANGENTВекторы касательных для normal mapping.
BINORMALВекторы бинормали (битангента).
MATERIALИндекс материала для каждого полигона.
POLYGON_GROUPИндекс группировки полигонов.
VERTEX_CREASEВеса сгибов вершин при subdivision.
EDGE_CREASEВеса сгибов рёбер при subdivision.
USER_DATAПроизвольные пользовательские данные.
VISIBILITYФлаги видимости для каждого элемента.
SPECULARСпекулярный цвет или интенсивность.
WEIGHTВеса смешивания для скиннинга.
HOLEФлаги отверстий полигона.

Перечисление MappingMode

Определяет, с какой геометрической примитивой связано каждое значение элемента вершины.

ExampleExample
CONTROL_POINTОдно значение на контрольную точку (вершину).
POLYGON_VERTEXОдно значение на угол полигона (face-vertex).
POLYGONОдно значение на полигон.

Перечисление ReferenceMode

Определяет, как индексируется массив данных элемента вершины.

ExampleExample
DIRECTДанные доступны последовательно без отдельного массива индексов.
INDEXДанные доступны через отдельный массив индексов.
INDEX_TO_DIRECTМассив индексов сопоставляет каждый примитив отображения с позицией в массиве данных.

Example

import com.aspose.threed.Scene;
import com.aspose.threed.*;

Scene scene = Scene.fromFile("model.obj");

for (Node node : scene.getRootNode().getChildNodes()) {
    if (node.getEntity() instanceof Mesh) {
        Mesh mesh = (Mesh) node.getEntity();
        for (VertexElement ve : mesh.getVertexElements()) {
            System.out.println("  Element: " + ve.getVertexElementType()
                + " mapping=" + ve.getMappingMode()
                + " ref=" + ve.getReferenceMode());
        }
    }
}

См. также

 Русский