VertexElement — Aspose.3D TypeScript API Reference
Pakej: @aspose/3d (v24.12.0)
VertexElement adalah kelas asas abstrak untuk saluran atribut per-vertex yang dilampirkan kepada satu Geometry. Setiap saluran menyimpan satu tatasusunan data berjenis dan mappingMode / referenceMode metadata yang mengawal bagaimana data berkaitan dengan primitif geometri. Subkelasnya ialah: VertexElementNormal, VertexElementUV, dan 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 adalah MappingMode.CONTROL_POINT; lalai referenceMode adalah ReferenceMode.DIRECT.
ImageRenderOptions
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|---|
vertexElementType | VertexElementType | baca | Jenis semantik lapisan ini. |
name | string | baca/tulis | Label pilihan untuk lapisan ini. |
mappingMode | MappingMode | baca/tulis | Mengawal primitif geometri mana setiap nilai dikaitkan dengan. |
referenceMode | ReferenceMode | baca/tulis | Mengawal sama ada nilai diakses secara langsung atau melalui tatasusunan indeks. |
indices | number[] | baca | Tatasusunan indeks untuk IndexToDirect mod rujukan. |
ImageRenderOptions
setIndices(data)
NOT IMPLEMENTED. Pada asas VertexElement kelas, kaedah ini melempar Error('set_indices is not implemented') semasa runtime. Subkelas VertexElementFVector dan VertexElementIntsTemplate sediakan pelaksanaan yang berfungsi.
Gantikan tatasusunan indeks.
setIndices(data: number[]): voidclear()
NOT IMPLEMENTED. Pada asas VertexElement kelas, kaedah ini melempar Error('clear is not implemented') pada masa jalan. Subkelas VertexElementFVector dan VertexElementIntsTemplate sediakan pelaksanaan yang berfungsi.
Buang semua data dan indeks daripada lapisan.
clear(): voidVertexElementNormal
Menyimpan vektor normal permukaan. Data normal diperlukan oleh kebanyakan renderer untuk pencahayaan yang betul.
export class VertexElementNormal extends VertexElementFVectorImageRenderOptions
VertexElement → VertexElementFVector → VertexElementNormal
ImageRenderOptions
new VertexElementNormal(
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)vertexElementType ditetapkan kepada VertexElementType.NORMAL.
VertexElementUV
Menyimpan koordinat tekstur 2D. Mesh boleh membawa berbilang lapisan UV untuk saluran tekstur yang berbeza. The textureMapping ciri ini mengenal pasti tujuan saluran.
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,
)Lalai kepada TextureMapping.DIFFUSE apabila textureMapping adalah null.
Sifat tambahan
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|---|
textureMapping | TextureMapping | baca | Saluran tekstur yang mana lapisan UV ini dikaitkan. |
data | FVector4[] | baca | Nilai UV dipaparkan sebagai FVector4 entri (z dan w adalah 0). |
uvData | FVector2[] | dibaca | Nilai UV sebagai FVector2 entri (x, y sahaja). |
addData(data)
Tambah nilai UV. Menerima FVector2[], FVector3[], atau FVector4[].
addData(data: FVector2[] | FVector3[] | FVector4[]): voidVertexElementVertexColor
Menyimpan nilai warna RGBA per-vertex. Komponen berada dalam julat 0–1.
export class VertexElementVertexColor extends VertexElementFVectorImageRenderOptions
VertexElement → VertexElementFVector → VertexElementVertexColor
ImageRenderOptions
new VertexElementVertexColor(
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)vertexElementType ditetapkan kepada VertexElementType.VERTEX_COLOR.
ImageRenderOptions
Tambah normal kepada mesh segitiga:
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');Tambah koordinat UV:
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');