VertexElement — Aspose.3D FOSS for Java
Paket: com.aspose.threed (aspose-3d-foss 26.1.0)
VertexElement är den abstrakta basklassen för per-vertex (eller per-polygon, per-edge) datalager som är fästa vid en Mesh.Varje underklass lagrar en specifik typ av geometrisk attribut – normaler, UV-koordinater, vertexfärger eller mjukgöringsgrupper.
Example
Example
| Example | Example | Example | Example | Example |
|---|---|---|---|---|
vertexElementType | VertexElementType | getVertexElementType() | – | Semantisk typ för detta element (skrivskyddad). |
mappingMode | MappingMode | getMappingMode() | setMappingMode(MappingMode) | Styr vilken primitiv varje värde mappar till. |
referenceMode | ReferenceMode | getReferenceMode() | setReferenceMode(ReferenceMode) | Styr hur värden indexeras. |
indices | List<Integer> | getIndices() | – | Indexarray (används när referensläge är INDEX_TO_DIRECT). |
name | String | getName() | setName(String) | Valfritt namn för detta vertex-elementlager. |
VertexElementNormal
Lagrar en normalvektor per vertex eller per polygonhörn, beroende på getMappingMode(). Datavärden är Vector4 instanser med w oanvända.
import com.aspose.threed.*;
VertexElement normals = mesh.createElement(
VertexElementType.NORMAL,
MappingMode.CONTROL_POINT,
ReferenceMode.DIRECT
);Example
| Example | Example | Example | Example |
|---|---|---|---|
data | List<Vector4> | getData() | Normalvektorer. Den w komponenten är oanvänd (vanligtvis 0.0). |
Returnerar: VertexElementUV
Lagrar texturkoordinatpar (Vector2) per vertex eller per polygonhörn. Ett mesh kan ha flera UV-lager för olika texturkanaler.
VertexElementUV uv = mesh.createElementUV(
TextureMapping.DIFFUSE,
MappingMode.POLYGON_VERTEX,
ReferenceMode.INDEX_TO_DIRECT
);Example
| Example | Example | Example | Example |
|---|---|---|---|
data | List<Vector2> | getData() | UV-koordinatpar. |
VertexElementVertexColor
Lagrar per-vertex eller per-corner RGBA-färgdata som Vector4 (r, g, b, a i intervallet 0–1).
Example
| Example | Example | Example | Example |
|---|---|---|---|
data | List<Vector4> | getData() | RGBA-färgvärden. |
VertexElementType‑uppräkning
Identifierar det semantiska rollen för ett vertex‑elementlager.
import com.aspose.threed.*;| Example | Example |
|---|---|
NORMAL | Ytnormala vektorer. |
UV | UV-koordinater för textur. |
VERTEX_COLOR | Per-vertex RGBA-färg. |
TANGENT | Tangentialvektorer för normalmappning. |
BINORMAL | Binormala (bitangent) vektorer. |
MATERIAL | Per-polygon materialindex. |
POLYGON_GROUP | Polygongrupperingsindex. |
VERTEX_CREASE | Subdivision vertex-veckvikter. |
EDGE_CREASE | Subdivision edge-veckvikter. |
USER_DATA | Godtyckliga användardefinierade data. |
VISIBILITY | Per-element synlighetsflaggor. |
SPECULAR | Speculär färg eller intensitet. |
WEIGHT | Blandningsvikter för skinning. |
HOLE | Polygonhålsflaggor. |
MappingMode‑uppräkning
Styr vilken geometrisk primitiv varje vertex‑elementvärde är associerat med.
| Example | Example |
|---|---|
CONTROL_POINT | Ett värde per kontrollpunkt (vertex). |
POLYGON_VERTEX | Ett värde per polygonhörn (face-vertex). |
POLYGON | Ett värde per polygon. |
ReferenceMode‑uppräkning
Styr hur vertex‑elementdatatabellen indexeras.
| Example | Example |
|---|---|
DIRECT | Data nås sekventiellt utan en separat indices array. |
INDEX | Data nås via en separat indices array. |
INDEX_TO_DIRECT | En indices array mappar varje mapping primitive till en position i data array. |
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());
}
}
}