VertexElement — Aspose.3D TypeScript API Reference
Paket: @aspose/3d (v24.12.0)
VertexElement ist die abstrakte Basisklasse für pro-Vertex-Attributkanäle, die an ein Geometry.Jeder Kanal enthält ein typisiertes Datenarray und mappingMode / referenceMode Metadaten, die steuern, wie die Daten zu geometrischen Primitivelementen in Beziehung stehen. Die Unterklassen sind: VertexElementNormal, VertexElementUV, und VertexElementVertexColor.
import { VertexElement, VertexElementNormal, VertexElementUV, VertexElementVertexColor } from '@aspose/3d';Properties
export abstract class VertexElement implements IIndexedVertexElementProperties
constructor(
elementType: VertexElementType,
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)Properties mappingMode ist MappingMode.CONTROL_POINT; Standard referenceMode ist ReferenceMode.DIRECT.
Properties
| Properties | Properties | Properties | Properties |
|---|---|---|---|
vertexElementType | VertexElementType | lesen | Semantischer Typ dieser Ebene. |
name | string | lesen/schreiben | Optionales Label für diese Ebene. |
mappingMode | MappingMode | lesen/schreiben | Steuert, welchem Geometrie-Primitive jeder Wert zugeordnet ist. |
referenceMode | ReferenceMode | lesen/schreiben | Steuert, ob Werte direkt oder über ein Index-Array adressiert werden. |
indices | number[] | lesen | Index-Array für IndexToDirect Referenzmodus. |
Properties
setIndices(data)
NOT IMPLEMENTED. Auf der Basis VertexElement Klasse, diese Methode wirft Error('set_indices is not implemented') zur Laufzeit. Die Unterklassen VertexElementFVector und VertexElementIntsTemplate stellen funktionierende Implementierungen bereit.
Ersetzt das Index‑Array.
setIndices(data: number[]): voidclear()
NOT IMPLEMENTED. In der Basisklasse VertexElement Klasse, diese Methode wirft Error('clear is not implemented') zur Laufzeit. Die Unterklassen VertexElementFVector und VertexElementIntsTemplate stellen funktionierende Implementierungen bereit.
Entfernt alle Daten und Indizes aus der Schicht.
clear(): voidVertexElementNormal
Speichert Oberflächen‑Normalenvektoren. Normaldaten werden von den meisten Renderern für korrekte Beleuchtung benötigt.
export class VertexElementNormal extends VertexElementFVectorProperties
VertexElement → VertexElementFVector → VertexElementNormal
Properties
new VertexElementNormal(
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)vertexElementType ist festgelegt auf VertexElementType.NORMAL.
Rückgabe: VertexElementUV
Speichert 2D-Texturkoordinaten. Ein Mesh kann mehrere UV-Schichten für verschiedene Texturkanäle enthalten. Der textureMapping Die Eigenschaft identifiziert den Zweck des Kanals.
export class VertexElementUV extends VertexElementFVectorProperties
VertexElement → VertexElementFVector → VertexElementUV
Properties
new VertexElementUV(
textureMapping: TextureMapping | null = null,
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)Standardwert ist TextureMapping.DIFFUSE wenn textureMapping ist null.
Speichert Texturkoordinatenpaare (Vector2) pro Vertex oder pro Polygon‑Ecke. Ein Mesh kann mehrere UV‑Ebenen enthalten.
| Properties | Properties | Properties | Properties |
|---|---|---|---|
textureMapping | TextureMapping | lesen | Der Texturkanal, dem diese UV-Schicht zugeordnet ist. |
data | FVector4[] | lesen | UV-Werte dargestellt als FVector4 Einträge (z und w sind 0). |
uvData | FVector2[] | lesen | UV-Werte als FVector2 Einträge (nur x, y). |
addData(data)
UV-Werte anhängen. Akzeptiert FVector2[], FVector3[], oder FVector4[].
addData(data: FVector2[] | FVector3[] | FVector4[]): voidVertexElementVertexColor
Speichert pro-Vertex RGBA-Farbwerte. Die Komponenten liegen im Bereich 0–1.
export class VertexElementVertexColor extends VertexElementFVectorProperties
VertexElement → VertexElementFVector → VertexElementVertexColor
Properties
new VertexElementVertexColor(
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)vertexElementType ist festgelegt auf VertexElementType.VERTEX_COLOR.
Properties
Normalen zu einem Dreiecksnetz hinzufügen:
import { Scene, Mesh, Vector4, VertexElementType, MappingMode, ReferenceMode, FVector4 } from '@aspose/3d';
const mesh = new Mesh();
mesh.controlPoints.push(new Vector4(0, 0, 0, 1));
mesh.controlPoints.push(new Vector4(1, 0, 0, 1));
mesh.controlPoints.push(new Vector4(0.5, 1, 0, 1));
mesh.createPolygon(0, 1, 2);
const normals = mesh.createElement(
VertexElementType.NORMAL,
MappingMode.CONTROL_POINT,
ReferenceMode.DIRECT,
);
normals.setData([
new FVector4(0, 0, 1, 0),
new FVector4(0, 0, 1, 0),
new FVector4(0, 0, 1, 0),
]);
const scene = new Scene();
scene.rootNode.createChildNode('tri', mesh);
scene.save('triangle_normals.glb');UV-Koordinaten hinzufügen:
import { Scene, Mesh, Vector4, TextureMapping, MappingMode, ReferenceMode, FVector2 } from '@aspose/3d';
const mesh = new Mesh();
for (const [x, z] of [[0,0],[1,0],[1,1],[0,1]]) {
mesh.controlPoints.push(new Vector4(x, 0, z, 1));
}
mesh.createPolygon(0, 1, 2, 3);
const uv = mesh.createElementUV(TextureMapping.DIFFUSE, MappingMode.CONTROL_POINT, ReferenceMode.DIRECT);
uv.addData([
new FVector2(0, 0),
new FVector2(1, 0),
new FVector2(1, 1),
new FVector2(0, 1),
]);
const scene = new Scene();
scene.rootNode.createChildNode('quad', mesh);
scene.save('quad_uv.glb');