PropertyCollection (pemegang tempat)

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 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.

Sifat-sifatnya

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-metode yang digunakan

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

Pengwarisan

VertexElementVertexElementFVectorVertexElementNormal

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

Pengwarisan

VertexElementVertexElementFVectorVertexElementUV

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

Pengwarisan

VertexElementVertexElementFVectorVertexElementVertexColor

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

Lihat Juga

 Bahasa Indonesia