VertexElement — Aspose.3D FOSS for Java
Пакет: com.aspose.threed (aspose-3d-foss 26.1.0)
VertexElement является абстрактным базовым классом для слоёв данных, привязанных к каждой вершине (или полигону, ребру) Mesh. Каждый подкласс хранит определённый тип геометрического атрибута — нормали, UV‑координаты, цвета вершин или группы сглаживания.
Example
Example
| Example | Example | Example | Example | Example |
|---|---|---|---|---|
vertexElementType | VertexElementType | getVertexElementType() | – | Семантический тип этого элемента (только для чтения). |
mappingMode | MappingMode | getMappingMode() | setMappingMode(MappingMode) | Определяет, к какому примитиву сопоставляется каждое значение. |
referenceMode | ReferenceMode | getReferenceMode() | setReferenceMode(ReferenceMode) | Определяет, как индексируются значения. |
indices | List<Integer> | getIndices() | – | Массив индексов (используется, когда режим ссылки is INDEX_TO_DIRECT). |
name | String | getName() | setName(String) | Необязательное имя этого слоя вершинных элементов. |
VertexElementNormal
Сохраняет один вектор нормали на вершину или на угол полигона, в зависимости от getMappingMode(). Значения данных: Vector4 экземпляры с w не используется.
import com.aspose.threed.*;
VertexElement normals = mesh.createElement(
VertexElementType.NORMAL,
MappingMode.CONTROL_POINT,
ReferenceMode.DIRECT
);Example
| Example | Example | Example | Example |
|---|---|---|---|
data | List<Vector4> | getData() | Векторы нормали. w компонент не используется (обычно 0.0). |
Возвращает: VertexElementUV
Сохраняет пары текстурных координат (Vector2) на вершине или на углу полигона. Сетка может содержать несколько UV‑слоёв для разных каналов текстур.
VertexElementUV uv = mesh.createElementUV(
TextureMapping.DIFFUSE,
MappingMode.POLYGON_VERTEX,
ReferenceMode.INDEX_TO_DIRECT
);Example
| Example | Example | Example | Example |
|---|---|---|---|
data | List<Vector2> | getData() | Пары UV‑координат. |
VertexElementVertexColor
Хранит данные цвета RGBA на вершине или на углу в виде Vector4 (r, g, b, a в диапазоне 0–1).
Example
| Example | Example | Example | Example |
|---|---|---|---|
data | List<Vector4> | getData() | RGBA цветовые значения. |
Перечисление VertexElementType
Определяет семантическую роль слоя элемента вершины.
import com.aspose.threed.*;| Example | Example |
|---|---|
NORMAL | Векторы нормали поверхности. |
UV | Текстурные UV‑координаты. |
VERTEX_COLOR | RGBA‑цвет на вершине. |
TANGENT | Векторы касательных для normal mapping. |
BINORMAL | Векторы бинормали (битангента). |
MATERIAL | Индекс материала для каждого полигона. |
POLYGON_GROUP | Индекс группировки полигонов. |
VERTEX_CREASE | Веса сгибов вершин при subdivision. |
EDGE_CREASE | Веса сгибов рёбер при subdivision. |
USER_DATA | Произвольные пользовательские данные. |
VISIBILITY | Флаги видимости для каждого элемента. |
SPECULAR | Спекулярный цвет или интенсивность. |
WEIGHT | Веса смешивания для скиннинга. |
HOLE | Флаги отверстий полигона. |
Перечисление MappingMode
Определяет, с какой геометрической примитивой связано каждое значение элемента вершины.
| Example | Example |
|---|---|
CONTROL_POINT | Одно значение на контрольную точку (вершину). |
POLYGON_VERTEX | Одно значение на угол полигона (face-vertex). |
POLYGON | Одно значение на полигон. |
Перечисление ReferenceMode
Определяет, как индексируется массив данных элемента вершины.
| Example | Example |
|---|---|
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());
}
}
}