VertexElement — Aspose.3D TypeScript API Reference
Paket: @aspose/3d (v24.12.0)
VertexElement adalah kelas dasar abstrak untuk saluran atribut per-vertex yang terlampir pada sebuah Geometry. Setiap saluran menyimpan array data bertipe dan mappingMode / referenceMode metadata yang mengontrol bagaimana data berhubungan dengan primitif geometri. Subkelasnya adalah: 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; default referenceMode adalah ReferenceMode.DIRECT.
ImageRenderOptions
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|---|
vertexElementType | VertexElementType | baca | Tipe semantik lapisan ini. |
name | string | baca/tulis | Label opsional untuk lapisan ini. |
mappingMode | MappingMode | baca/tulis | Mengontrol primitif geometri mana yang terkait dengan setiap nilai. |
referenceMode | ReferenceMode | baca/tulis | Mengontrol apakah nilai diakses secara langsung atau melalui array indeks. |
indices | number[] | baca | Array indeks untuk IndexToDirect mode referensi. |
ImageRenderOptions
setIndices(data)
NOT IMPLEMENTED. Pada basis VertexElement kelas, metode ini melempar Error('set_indices is not implemented') pada runtime. Subkelas VertexElementFVector dan VertexElementIntsTemplate menyediakan implementasi yang berfungsi.
Ganti array indeks.
setIndices(data: number[]): voidclear()
NOT IMPLEMENTED. Pada basis VertexElement kelas, metode ini melempar Error('clear is not implemented') pada runtime. Subkelas VertexElementFVector dan VertexElementIntsTemplate menyediakan implementasi yang berfungsi.
Hapus semua data dan indeks dari lapisan.
clear(): voidVertexElementNormal
Menyimpan vektor normal permukaan. Data normal diperlukan oleh kebanyakan renderer untuk pencahayaan yang tepat.
export class VertexElementNormal extends VertexElementFVectorImageRenderOptions
VertexElement → VertexElementFVector → VertexElementNormal
ImageRenderOptions
new VertexElementNormal(
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)vertexElementType ditetapkan ke VertexElementType.NORMAL.
VertexElementUV
Menyimpan koordinat tekstur 2D. Sebuah mesh dapat membawa beberapa lapisan UV untuk saluran tekstur yang berbeda. The textureMapping property mengidentifikasi 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,
)Default ke TextureMapping.DIFFUSE ketika textureMapping adalah null.
Properti tambahan
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|---|
textureMapping | TextureMapping | baca | Saluran tekstur yang terkait dengan lapisan UV ini. |
data | FVector4[] | baca | Nilai UV ditampilkan sebagai FVector4 entri (z dan w adalah 0). |
uvData | FVector2[] | dibaca | Nilai UV sebagai FVector2 entri (hanya x, y). |
addData(data)
Tambahkan nilai UV. Menerima FVector2[], FVector3[], atau FVector4[].
addData(data: FVector2[] | FVector3[] | FVector4[]): voidVertexElementVertexColor
Menyimpan nilai warna RGBA per-vertex. Komponen berada dalam rentang 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 menjadi VertexElementType.VERTEX_COLOR.
ImageRenderOptions
Tambahkan normal ke 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');Tambahkan 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');