VertexElement — Aspose.3D TypeScript API Reference

Paket: @aspose/3d (v24.12.0)

VertexElement är den abstrakta basklassen för per-vertex-attributkanaler som är fästa vid en Geometry. Varje kanal innehåller en typad dataarray och mappingMode / referenceMode metadata som styr hur data relaterar till geometriprimitiver. Subklasserna är: VertexElementNormal, VertexElementUV, och VertexElementVertexColor.

import { VertexElement, VertexElementNormal, VertexElementUV, VertexElementVertexColor } from '@aspose/3d';

ImageRenderOptions

export abstract class VertexElement implements IIndexedVertexElement

ImageRenderOptions

constructor(
  elementType: VertexElementType,
  name: string = '',
  mappingMode: MappingMode | null = null,
  referenceMode: ReferenceMode | null = null,
)

ImageRenderOptions mappingMode är MappingMode.CONTROL_POINT; standard referenceMode är ReferenceMode.DIRECT.

ImageRenderOptions

ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
vertexElementTypeVertexElementTypeläsaSemantisk typ för detta lager.
namestringläsa/skrivaValfri etikett för detta lager.
mappingModeMappingModeläsa/skrivaStyr vilken geometriprimitiv varje värde är associerat med.
referenceModeReferenceModeläsa/skrivaStyr huruvida värden adresseras direkt eller via en indexarray.
indicesnumber[]läsaIndexarray för IndexToDirect referensläge.

ImageRenderOptions

setIndices(data)

NOT IMPLEMENTED. På basen VertexElement klass, kastar den här metoden Error('set_indices is not implemented') vid körning. Subklasserna VertexElementFVector och VertexElementIntsTemplate tillhandahåller fungerande implementationer.

Ersätt indexarrayen.

setIndices(data: number[]): void

clear()

NOT IMPLEMENTED. På basen VertexElement klass, kastar den här metoden Error('clear is not implemented') vid körning. Subklasserna VertexElementFVector och VertexElementIntsTemplate tillhandahåller fungerande implementationer.

Ta bort all data och alla index från lagret.

clear(): void

VertexElementNormal

Lagrar ytnormala vektorer. Normaldata krävs av de flesta renderare för korrekt ljussättning.

export class VertexElementNormal extends VertexElementFVector

ImageRenderOptions

VertexElementVertexElementFVectorVertexElementNormal

ImageRenderOptions

new VertexElementNormal(
  name: string = '',
  mappingMode: MappingMode | null = null,
  referenceMode: ReferenceMode | null = null,
)

vertexElementType är fastställd till VertexElementType.NORMAL.


VertexElementUV

Lagrar 2D-texturkoordinater. Ett mesh kan ha flera UV-lager för olika texturkanaler. Den textureMapping egenskapen identifierar kanalens syfte.

export class VertexElementUV extends VertexElementFVector

ImageRenderOptions

VertexElementVertexElementFVectorVertexElementUV

ImageRenderOptions

new VertexElementUV(
  textureMapping: TextureMapping | null = null,
  name: string = '',
  mappingMode: MappingMode | null = null,
  referenceMode: ReferenceMode | null = null,
)

Standardvärde är TextureMapping.DIFFUSE när textureMapping är null.

Ytterligare egenskap

ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
textureMappingTextureMappingläsaTexturkanalen som detta UV-lager är associerat med.
dataFVector4[]läsaUV-värden exponeras som FVector4 poster (z och w är 0).
uvDataFVector2[]lästaUV-värden som FVector2 poster (endast x, y).

addData(data)

Lägg till UV-värden. Accepterar FVector2[], FVector3[], eller FVector4[].

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

VertexElementVertexColor

Lagrar RGBA‑färgvärden per vertex. Komponenterna är i intervallet 0–1.

export class VertexElementVertexColor extends VertexElementFVector

ImageRenderOptions

VertexElementVertexElementFVectorVertexElementVertexColor

ImageRenderOptions

new VertexElementVertexColor(
  name: string = '',
  mappingMode: MappingMode | null = null,
  referenceMode: ReferenceMode | null = null,
)

vertexElementType är fast på VertexElementType.VERTEX_COLOR.


ImageRenderOptions

Lägg till normaler till ett triangelnät:

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

Lägg till UV‑koordinater:

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

Se även

 Svenska