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 IIndexedVertexElementconstructor(
elementType: VertexElementType,
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)mappingMode je MappingMode.CONTROL_POINT; zadano referenceMode je ReferenceMode.DIRECT.vertexElementType | VertexElementType | čitanje | Semantički tip ovog sloja. |
name | string | čitanje/pisanje | Opcionalna oznaka za ovaj sloj. |
mappingMode | MappingMode | čitanje/pisanje | Upravlja kojim geometrijskim primitivom je svaka vrijednost povezana. |
referenceMode | ReferenceMode | čitanje/pisanje | Upravlja time hoće li se vrijednosti adresirati izravno ili putem indeksnog polja. |
indices | number[] | čitanje | Indeksno 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[]): voidclear()
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(): voidVertexElementNormal
Pohranjuje vektore površinskih normala. Normalni podaci su potrebni većini renderera za ispravno osvjetljenje.
export class VertexElementNormal extends VertexElementFVectorVertexElement → VertexElementFVector → VertexElementNormal
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 VertexElementFVectorVertexElement → VertexElementFVector → VertexElementUV
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
textureMapping | TextureMapping | čitanje | Teksturni kanal s kojim je ovaj UV sloj povezan. |
data | FVector4[] | čitanje | UV vrijednosti izložene kao FVector4 unosi (z i w su 0). |
uvData | FVector2[] | pročitane | UV vrijednosti kao FVector2 unosi (samo x, y). |
addData(data)
Dodaj UV vrijednosti. Prihvaća FVector2[], FVector3[], ili FVector4[].
addData(data: FVector2[] | FVector3[] | FVector4[]): voidVertexElementVertexColor
Pohranjuje RGBA vrijednosti boje po vrhu. Komponente su u rasponu 0–1.
export class VertexElementVertexColor extends VertexElementFVectorVertexElement → VertexElementFVector → VertexElementVertexColor
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');