VertexElement — Aspose.3D TypeScript API Reference

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 IIndexedVertexElement

Konstruksi

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.

Properti

PerumahanJenisAksesDeskripsi
vertexElementTypeVertexElementTypeBacalah.Jenis semantik dari lapisan ini.
namestringMembaca/menulisLabel opsional untuk lapisan ini.
mappingModeMappingModeMembaca/menulisMengontrol geometri primitif mana yang terkait dengan setiap nilai.
referenceModeReferenceModeMembaca/menulisMengontrol apakah nilai di alamat langsung atau melalui array indeks.
indicesnumber[]Bacalah.Array indeks untuk IndexToDirect modus referensi.

Metode

setIndices(data)

NOT IMPLEMENTED. Di dasar. VertexElement kelas, metode ini melemparkan Error('set_indices is not implemented') pada waktu runtime. Subkelas-kelas yang VertexElementFVector dan (b) VertexElementIntsTemplate menyediakan implementasi yang bekerja.

Ganti array indeks.

setIndices(data: number[]): void

clear()

NOT IMPLEMENTED. Di dasar. VertexElement kelas, metode ini melemparkan Error('clear is not implemented') pada waktu runtime. Subkelas-kelas yang VertexElementFVector dan (b) VertexElementIntsTemplate menyediakan implementasi yang berfungsi.

Hapus semua data dan indeks dari lapisan.

clear(): void

VertexElementNormal

Menyimpan vektor normal permukaan. Data normal diperlukan oleh sebagian besar renderer untuk pencahayaan yang benar.

export class VertexElementNormal extends VertexElementFVector

Pewarisan

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 VertexElementFVector

Pewarisan

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

PerumahanJenisAksesDeskripsi
textureMappingTextureMappingBacalah.Kanal tekstur lapisan UV ini terkait.
dataFVector4[]Bacalah.Nilai UV yang terpapar sebagai: FVector4 entri (z dan w adalah 0).
uvDataFVector2[]Bacalah.Nilai UV sebagai FVector2 entri (x, y saja).

addData(data)

Menambahkan nilai UV. FVector2[], FVector3[], atau FVector4[].

addData(data: FVector2[] | FVector3[] | FVector4[]): void

VertexElementVertexColor

Menyimpan nilai warna RGBA per-vertex. Komponen berada dalam kisaran 01.

export class VertexElementVertexColor extends VertexElementFVector

Pewarisan

VertexElement → VertexElementFVector → VertexElementVertexColor

Konstruksi

new VertexElementVertexColor(
  name: string = '',
  mappingMode: MappingMode | null = null,
  referenceMode: ReferenceMode | null = null,
)

vertexElementType tetap pada: VertexElementType.VERTEX_COLOR.


Contoh

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');

Lihat Juga

 Bahasa Indonesia