VertexElement Aspose.3D TypeScript Referensi API
Paket: @aspose/3d (v24.12.0)
VertexElement adalah kelas dasar abstrak untuk saluran atribut per-vertex yang terpasang pada sebuah Geometry.Setiap saluran berisi array data yang diketik dan mappingMode / referenceMode Metadata yang mengontrol bagaimana data berhubungan dengan primitif geometri. Subkelas adalah: VertexElementNormal, VertexElementUV, dan VertexElementVertexColor.
import { VertexElement, VertexElementNormal, VertexElementUV, VertexElementVertexColor } from '@aspose/3d';VertexElement (base abstrak)
export abstract class VertexElement implements IIndexedVertexElementKonstruksi
constructor(
elementType: VertexElementType,
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)Default (Pengaturan default) mappingMode adalah: MappingMode.CONTROL_POINT; default referenceMode adalah: ReferenceMode.DIRECT.
Sifat-sifatnya
| Perumahan | Jenis | Akses | Deskripsi |
|---|---|---|---|
vertexElementType | VertexElementType | Bacalah. | Jenis semantik dari lapisan ini. |
name | string | Membaca/menulis | Label opsional untuk lapisan ini. |
mappingMode | MappingMode | Membaca/menulis | Mengontrol geometri primitif mana yang terkait dengan setiap nilai. |
referenceMode | ReferenceMode | Membaca/menulis | Mengontrol apakah nilai di alamat langsung atau melalui array indeks. |
indices | number[] | Bacalah. | Array indeks untuk IndexToDirect modus referensi. |
Metode-metode yang digunakan
setIndices(data)
NOT IMPLEMENTED. Di dasar.
VertexElementkelas, metode ini melemparkanError('set_indices is not implemented')pada waktu runtime. Subkelas-kelas yangVertexElementFVectordan (b)VertexElementIntsTemplatemenyediakan implementasi yang bekerja.
Ganti array indeks.
setIndices(data: number[]): voidclear()
NOT IMPLEMENTED. Di dasar.
VertexElementkelas, metode ini melemparkanError('clear is not implemented')pada waktu runtime. Subkelas-kelas yangVertexElementFVectordan (b)VertexElementIntsTemplatemenyediakan implementasi yang berfungsi.
Hapus semua data dan indeks dari lapisan.
clear(): voidVertexElementNormal
Menyimpan vektor normal permukaan. Data normal diperlukan oleh sebagian besar renderer untuk pencahayaan yang benar.
export class VertexElementNormal extends VertexElementFVectorPengwarisan
VertexElement → VertexElementFVector → VertexElementNormal
Konstruksi
new VertexElementNormal(
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)vertexElementType tetap pada: VertexElementType.NORMAL.
VertexElementUV
Menyimpan koordinat tekstur 2D. Sebuah mesh dapat membawa beberapa lapisan UV untuk saluran tekstura yang berbeda. textureMapping properti mengidentifikasi tujuan saluran.
export class VertexElementUV extends VertexElementFVectorPengwarisan
VertexElement → VertexElementFVector → VertexElementUV
Konstruksi
new VertexElementUV(
textureMapping: TextureMapping | null = null,
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)Ketidakmampuan untuk TextureMapping.DIFFUSE saat itu textureMapping adalah: null.
Properti tambahan
| Perumahan | Jenis | Akses | Deskripsi |
|---|---|---|---|
textureMapping | TextureMapping | Bacalah. | Kanal tekstur lapisan UV ini terkait. |
data | FVector4[] | Bacalah. | Nilai UV yang terpapar sebagai: FVector4 entri (z dan w adalah 0). |
uvData | FVector2[] | Bacalah. | Nilai UV sebagai FVector2 entri (x, y saja). |
addData(data)
Menambahkan nilai UV. FVector2[], FVector3[], atau FVector4[].
addData(data: FVector2[] | FVector3[] | FVector4[]): voidVertexElementVertexColor
Menyimpan nilai warna RGBA per-vertex. Komponen berada dalam kisaran 01.
export class VertexElementVertexColor extends VertexElementFVectorPengwarisan
VertexElement → VertexElementFVector → VertexElementVertexColor
Konstruksi
new VertexElementVertexColor(
name: string = '',
mappingMode: MappingMode | null = null,
referenceMode: ReferenceMode | null = null,
)vertexElementType tetap pada: VertexElementType.VERTEX_COLOR.
Contoh-contohnya
Menambahkan normal ke 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');