VertexElement — Aspose.3D TypeScript API Reference

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

VertexElement je apstraktna bazna klasa za kanale atributa po vrhu koji su pričvršćeni na Geometry. Svaki kanal drži tipizirani niz podataka i mappingMode / referenceMode metapodatke koji kontroliraju 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; zadano 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 vrijednost povezana.
referenceModeReferenceModečitanje/pisanjeUpravlja time hoće li se vrijednosti adresirati izravno ili putem indeksnog polja.
indicesnumber[]čitanjeIndeksno polje za IndexToDirect referencijski način.

setIndices(data)

NOT IMPLEMENTED. Na osnovi VertexElement klasa, ova metoda baca Error('set_indices is not implemented') u vrijeme izvođenja. Podklase VertexElementFVector i VertexElementIntsTemplate pružaju radne implementacije.

Zamijeni niz indeksa.

setIndices(data: number[]): void

clear()

NOT IMPLEMENTED. Na osnovi VertexElement klasa, ova metoda baca Error('clear is not implemented') u vrijeme izvođenja. Podklase VertexElementFVector i VertexElementIntsTemplate pružaju radne implementacije.

Ukloni sve podatke i indekse iz sloja.

clear(): void

VertexElementNormal

Pohranjuje vektore površinskih normala. Normalni podaci su potrebni većini renderera za ispravno osvjetljenje.

export class VertexElementNormal extends VertexElementFVector

VertexElementVertexElementFVectorVertexElementNormal

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

vertexElementType je fiksirano na VertexElementType.NORMAL.


VertexElementUV

Pohranjuje 2D koordinate teksture. Mreža može imati više UV slojeva za različite teksturne kanale. textureMapping svojstvo identificira svrhu kanala.

export class VertexElementUV extends VertexElementFVector

VertexElementVertexElementFVectorVertexElementUV

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

Zadano je TextureMapping.DIFFUSE kada textureMapping je null.

Dodatno svojstvo

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

addData(data)

Dodaj UV vrijednosti. Prihvaća FVector2[], FVector3[], ili FVector4[].

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

VertexElementVertexColor

Pohranjuje RGBA vrijednosti boje po vrhu. Komponente su u rasponu 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.


Dodaj normale u trokutnu mrežu:

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

Dodaj 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 također

 Hrvatski