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 IIndexedVertexElementconstructor(
elementType: VertexElementType,
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)mappingMode je MappingMode.CONTROL_POINT; podrazumevano 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 vrednost povezana. |
referenceMode | ReferenceMode | čitanje/pisanje | Upravlja da li se vrednosti adresiraju direktno ili putem indeksnog niza. |
indices | number[] | čitanje | Indeksni 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[]): voidclear()
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(): voidVertexElementNormal
Čuva vektore površinskih normala. Normalni podaci su neophodni većini renderera za pravilno osvetljenje.
export class VertexElementNormal extends VertexElementFVectorVertexElement → VertexElementFVector → VertexElementNormal
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 VertexElementFVectorVertexElement → VertexElementFVector → VertexElementUV
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
textureMapping | TextureMapping | čitanje | Teksturni kanal sa kojim je ovaj UV sloj povezan. |
data | FVector4[] | čitanje | UV vrednosti izložene kao FVector4 unosi (z i w su 0). |
uvData | FVector2[] | čitane | UV vrednosti kao FVector2 unosi (samo x, y). |
addData(data)
Dodaj UV vrednosti. Prihvata FVector2[], FVector3[], ili FVector4[].
addData(data: FVector2[] | FVector3[] | FVector4[]): voidVertexElementVertexColor
Čuva RGBA vrednosti boje po vrhu. Komponente su u opsegu 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.
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');