VertexElement — Aspose.3D TypeScript API Reference
Paket: @aspose/3d (v24.12.0)
VertexElement är den abstrakta basklassen för per-vertex-attributkanaler som är fästa vid en Geometry. Varje kanal innehåller en typad dataarray och mappingMode / referenceMode metadata som styr hur data relaterar till geometriprimitiver. Subklasserna är: VertexElementNormal, VertexElementUV, och VertexElementVertexColor.
import { VertexElement, VertexElementNormal, VertexElementUV, VertexElementVertexColor } from '@aspose/3d';ImageRenderOptions
export abstract class VertexElement implements IIndexedVertexElementImageRenderOptions
constructor(
elementType: VertexElementType,
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)ImageRenderOptions mappingMode är MappingMode.CONTROL_POINT; standard referenceMode är ReferenceMode.DIRECT.
ImageRenderOptions
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|---|
vertexElementType | VertexElementType | läsa | Semantisk typ för detta lager. |
name | string | läsa/skriva | Valfri etikett för detta lager. |
mappingMode | MappingMode | läsa/skriva | Styr vilken geometriprimitiv varje värde är associerat med. |
referenceMode | ReferenceMode | läsa/skriva | Styr huruvida värden adresseras direkt eller via en indexarray. |
indices | number[] | läsa | Indexarray för IndexToDirect referensläge. |
ImageRenderOptions
setIndices(data)
NOT IMPLEMENTED. På basen VertexElement klass, kastar den här metoden Error('set_indices is not implemented') vid körning. Subklasserna VertexElementFVector och VertexElementIntsTemplate tillhandahåller fungerande implementationer.
Ersätt indexarrayen.
setIndices(data: number[]): voidclear()
NOT IMPLEMENTED. På basen VertexElement klass, kastar den här metoden Error('clear is not implemented') vid körning. Subklasserna VertexElementFVector och VertexElementIntsTemplate tillhandahåller fungerande implementationer.
Ta bort all data och alla index från lagret.
clear(): voidVertexElementNormal
Lagrar ytnormala vektorer. Normaldata krävs av de flesta renderare för korrekt ljussättning.
export class VertexElementNormal extends VertexElementFVectorImageRenderOptions
VertexElement → VertexElementFVector → VertexElementNormal
ImageRenderOptions
new VertexElementNormal(
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)vertexElementType är fastställd till VertexElementType.NORMAL.
VertexElementUV
Lagrar 2D-texturkoordinater. Ett mesh kan ha flera UV-lager för olika texturkanaler. Den textureMapping egenskapen identifierar kanalens syfte.
export class VertexElementUV extends VertexElementFVectorImageRenderOptions
VertexElement → VertexElementFVector → VertexElementUV
ImageRenderOptions
new VertexElementUV(
textureMapping: TextureMapping | null = null,
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)Standardvärde är TextureMapping.DIFFUSE när textureMapping är null.
Ytterligare egenskap
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|---|
textureMapping | TextureMapping | läsa | Texturkanalen som detta UV-lager är associerat med. |
data | FVector4[] | läsa | UV-värden exponeras som FVector4 poster (z och w är 0). |
uvData | FVector2[] | lästa | UV-värden som FVector2 poster (endast x, y). |
addData(data)
Lägg till UV-värden. Accepterar FVector2[], FVector3[], eller FVector4[].
addData(data: FVector2[] | FVector3[] | FVector4[]): voidVertexElementVertexColor
Lagrar RGBA‑färgvärden per vertex. Komponenterna är i intervallet 0–1.
export class VertexElementVertexColor extends VertexElementFVectorImageRenderOptions
VertexElement → VertexElementFVector → VertexElementVertexColor
ImageRenderOptions
new VertexElementVertexColor(
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)vertexElementType är fast på VertexElementType.VERTEX_COLOR.
ImageRenderOptions
Lägg till normaler till ett triangelnät:
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');Lägg till UV‑koordinater:
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');