VertexElement — Aspose.3D TypeScript API Reference

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

VertexElement is de abstracte basisklasse voor per-vertex attribuutchannels die zijn gekoppeld aan een Geometry. Elk kanaal bevat een getypeerde gegevensarray en mappingMode / referenceMode metadata die bepalen hoe de gegevens zich verhouden tot geometrische primitieve. De subklassen zijn: VertexElementNormal, VertexElementUV, en 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 is MappingMode.CONTROL_POINT; standaard referenceMode is ReferenceMode.DIRECT.

ImageRenderOptions

ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
vertexElementTypeVertexElementTypelezenSemantisch type van deze laag.
namestringlezen/schrijvenOptioneel label voor deze laag.
mappingModeMappingModelezen/schrijvenBepaalt met welke geometrische primitive elke waarde is geassocieerd.
referenceModeReferenceModelezen/schrijvenBepaalt of waarden direct of via een indexarray worden benaderd.
indicesnumber[]lezenIndexarray voor IndexToDirect referentiemodus.

ImageRenderOptions

setIndices(data)

NOT IMPLEMENTED. Op de basis VertexElement klasse, deze methode gooit Error('set_indices is not implemented') tijdens runtime. De subklassen VertexElementFVector en VertexElementIntsTemplate leveren werkende implementaties.

Vervang de indexarray.

setIndices(data: number[]): void

clear()

NOT IMPLEMENTED. Op de basis VertexElement klasse, deze methode gooit Error('clear is not implemented') tijdens runtime. De subklassen VertexElementFVector en VertexElementIntsTemplate leveren werkende implementaties.

Verwijder alle data en indexen van de laag.

clear(): void

VertexElementNormal

Slaat oppervlaktennormaalvectoren op. Normale data is vereist door de meeste renderers voor correcte belichting.

export class VertexElementNormal extends VertexElementFVector

ImageRenderOptions

VertexElementVertexElementFVectorVertexElementNormal

ImageRenderOptions

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

vertexElementType is vastgezet op VertexElementType.NORMAL.


VertexElementUV

Slaat 2D textuurcoördinaten op. Een mesh kan meerdere UV-lagen bevatten voor verschillende textuurkanalen. De textureMapping eigenschap identificeert het doel van het kanaal.

export class VertexElementUV extends VertexElementFVector

ImageRenderOptions

VertexElementVertexElementFVectorVertexElementUV

ImageRenderOptions

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

Standaard is TextureMapping.DIFFUSE wanneer textureMapping is null.

Aanvullende eigenschap

ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
textureMappingTextureMappinglezenHet textuurkanaal waaraan deze UV-laag is gekoppeld.
dataFVector4[]lezenUV-waarden weergegeven als FVector4 items (z en w zijn 0).
uvDataFVector2[]gelezenUV-waarden als FVector2 items (alleen x, y).

addData(data)

Voeg UV-waarden toe. Accepteert FVector2[], FVector3[], of FVector4[].

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

VertexElementVertexColor

Slaat per-vertex RGBA-kleurwaarden op. Componenten liggen in het bereik 0–1.

export class VertexElementVertexColor extends VertexElementFVector

ImageRenderOptions

VertexElementVertexElementFVectorVertexElementVertexColor

ImageRenderOptions

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

vertexElementType is vastgezet op VertexElementType.VERTEX_COLOR.


ImageRenderOptions

Voeg normalen toe aan een driehoekmesh:

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

Voeg UV-coördinaten toe:

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

Zie ook

 Nederlands