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 IIndexedVertexElement

Properties

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

PropertiesPropertiesPropertiesProperties
vertexElementTypeVertexElementTypelesenSemantischer Typ dieser Ebene.
namestringlesen/schreibenOptionales Label für diese Ebene.
mappingModeMappingModelesen/schreibenSteuert, welchem Geometrie-Primitive jeder Wert zugeordnet ist.
referenceModeReferenceModelesen/schreibenSteuert, ob Werte direkt oder über ein Index-Array adressiert werden.
indicesnumber[]lesenIndex-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[]): void

clear()

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(): void

VertexElementNormal

Speichert Oberflächen‑Normalenvektoren. Normaldaten werden von den meisten Renderern für korrekte Beleuchtung benötigt.

export class VertexElementNormal extends VertexElementFVector

Properties

VertexElementVertexElementFVectorVertexElementNormal

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 VertexElementFVector

Properties

VertexElementVertexElementFVectorVertexElementUV

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.

PropertiesPropertiesPropertiesProperties
textureMappingTextureMappinglesenDer Texturkanal, dem diese UV-Schicht zugeordnet ist.
dataFVector4[]lesenUV-Werte dargestellt als FVector4 Einträge (z und w sind 0).
uvDataFVector2[]lesenUV-Werte als FVector2 Einträge (nur x, y).

addData(data)

UV-Werte anhängen. Akzeptiert FVector2[], FVector3[], oder FVector4[].

addData(data: FVector2[] | FVector3[] | FVector4[]): void

VertexElementVertexColor

Speichert pro-Vertex RGBA-Farbwerte. Die Komponenten liegen im Bereich 0–1.

export class VertexElementVertexColor extends VertexElementFVector

Properties

VertexElementVertexElementFVectorVertexElementVertexColor

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');

Siehe auch

 Deutsch