VertexElement — Aspose.3D TypeScript API Reference

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

VertexElement je apstraktna osnovna klasa za kanale atributa po vrhu koji su prikačeni na a Geometry. Svaki kanal sadrži tipizirani niz podataka i mappingMode / referenceMode metapodatke koji kontrolišu kako se podaci odnose na geometrijske primitive. Podklase su: VertexElementNormal, VertexElementUV, i VertexElementVertexColor.

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

export abstract class VertexElement implements IIndexedVertexElement

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

mappingMode je MappingMode.CONTROL_POINT; podrazumevano referenceMode je ReferenceMode.DIRECT.

vertexElementTypeVertexElementTypečitanjeSemantički tip ovog sloja.
namestringčitanje/pisanjeOpcionalna oznaka za ovaj sloj.
mappingModeMappingModečitanje/pisanjeUpravlja kojim geometrijskim primitivom je svaka vrednost povezana.
referenceModeReferenceModečitanje/pisanjeUpravlja da li se vrednosti adresiraju direktno ili putem indeksnog niza.
indicesnumber[]čitanjeIndeksni niz za IndexToDirect režim referenciranja.

setIndices(data)

NOT IMPLEMENTED. Na osnovnoj VertexElement klasi, ova metoda baca Error('set_indices is not implemented') prilikom izvršavanja. Podklase VertexElementFVector i VertexElementIntsTemplate pružaju radne implementacije.

Zameni niz indeksa.

setIndices(data: number[]): void

clear()

NOT IMPLEMENTED. Na osnovnoj VertexElement klasi, ova metoda baca Error('clear is not implemented') u vreme izvršavanja. Podklase VertexElementFVector i VertexElementIntsTemplate pružaju radne implementacije.

Ukloni sve podatke i indekse iz sloja.

clear(): void

VertexElementNormal

Čuva vektore površinskih normala. Normalni podaci su neophodni većini renderera za pravilno osvetljenje.

export class VertexElementNormal extends VertexElementFVector

VertexElementVertexElementFVectorVertexElementNormal

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

vertexElementType je fiksiran na VertexElementType.NORMAL.


VertexElementUV

Čuva 2D teksturne koordinate. Mreža može imati više UV slojeva za različite teksturne kanale. Ovaj textureMapping svojstvo identifikuje svrhu kanala.

export class VertexElementUV extends VertexElementFVector

VertexElementVertexElementFVectorVertexElementUV

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

Podrazumevano je TextureMapping.DIFFUSE kada textureMapping je null.

Dodatna svojstva

textureMappingTextureMappingčitanjeTeksturni kanal sa kojim je ovaj UV sloj povezan.
dataFVector4[]čitanjeUV vrednosti izložene kao FVector4 unosi (z i w su 0).
uvDataFVector2[]čitaneUV vrednosti kao FVector2 unosi (samo x, y).

addData(data)

Dodaj UV vrednosti. Prihvata FVector2[], FVector3[], ili FVector4[].

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

VertexElementVertexColor

Čuva RGBA vrednosti boje po vrhu. Komponente su u opsegu 0–1.

export class VertexElementVertexColor extends VertexElementFVector

VertexElementVertexElementFVectorVertexElementVertexColor

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

vertexElementType je fiksirano na VertexElementType.VERTEX_COLOR.


Dodajte normale u trouglasti mesh:

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

Dodajte UV koordinate:

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

Vidi i

 Српски