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 IIndexedVertexElement

ImageRenderOptions

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

ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
vertexElementTypeVertexElementTypebacaTipe semantik lapisan ini.
namestringbaca/tulisLabel opsional untuk lapisan ini.
mappingModeMappingModebaca/tulisMengontrol primitif geometri mana yang terkait dengan setiap nilai.
referenceModeReferenceModebaca/tulisMengontrol apakah nilai diakses secara langsung atau melalui array indeks.
indicesnumber[]bacaArray 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[]): void

clear()

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(): void

VertexElementNormal

Menyimpan vektor normal permukaan. Data normal diperlukan oleh kebanyakan renderer untuk pencahayaan yang tepat.

export class VertexElementNormal extends VertexElementFVector

ImageRenderOptions

VertexElementVertexElementFVectorVertexElementNormal

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 VertexElementFVector

ImageRenderOptions

VertexElementVertexElementFVectorVertexElementUV

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

ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
textureMappingTextureMappingbacaSaluran tekstur yang terkait dengan lapisan UV ini.
dataFVector4[]bacaNilai UV ditampilkan sebagai FVector4 entri (z dan w adalah 0).
uvDataFVector2[]dibacaNilai UV sebagai FVector2 entri (hanya x, y).

addData(data)

Tambahkan nilai UV. Menerima FVector2[], FVector3[], atau FVector4[].

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

VertexElementVertexColor

Menyimpan nilai warna RGBA per-vertex. Komponen berada dalam rentang 0–1.

export class VertexElementVertexColor extends VertexElementFVector

ImageRenderOptions

VertexElementVertexElementFVectorVertexElementVertexColor

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

Lihat Juga

 Bahasa Indonesia