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() | – | Масив от индекси (използва се, когато режимът на референция е 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 | Тангенциални вектори за нормално картографиране. |
BINORMAL | Бинормални (битангенциални) вектори. |
MATERIAL | Индекс на материал за всеки полигон. |
POLYGON_GROUP | Индекс за групиране на полигони. |
VERTEX_CREASE | Тегла за гънки на върхове при подразделяне. |
EDGE_CREASE | Тегла за гънки на ръбове при подразделяне. |
USER_DATA | Произволни данни, дефинирани от потребителя. |
VISIBILITY | Флагове за видимост за всеки елемент. |
SPECULAR | Спекулативен цвят или интензитет. |
WEIGHT | Тежести за смесване за skinning. |
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());
}
}
}