VertexElement — Aspose.3D TypeScript API Reference

Pakej: @aspose/3d (v24.12.0)

VertexElement adalah kelas asas abstrak untuk saluran atribut per-vertex yang dilampirkan kepada satu Geometry. Setiap saluran menyimpan satu tatasusunan data berjenis dan mappingMode / referenceMode metadata yang mengawal bagaimana data berkaitan dengan primitif geometri. Subkelasnya ialah: 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; lalai referenceMode adalah ReferenceMode.DIRECT.

ImageRenderOptions

ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
vertexElementTypeVertexElementTypebacaJenis semantik lapisan ini.
namestringbaca/tulisLabel pilihan untuk lapisan ini.
mappingModeMappingModebaca/tulisMengawal primitif geometri mana setiap nilai dikaitkan dengan.
referenceModeReferenceModebaca/tulisMengawal sama ada nilai diakses secara langsung atau melalui tatasusunan indeks.
indicesnumber[]bacaTatasusunan indeks untuk IndexToDirect mod rujukan.

ImageRenderOptions

setIndices(data)

NOT IMPLEMENTED. Pada asas VertexElement kelas, kaedah ini melempar Error('set_indices is not implemented') semasa runtime. Subkelas VertexElementFVector dan VertexElementIntsTemplate sediakan pelaksanaan yang berfungsi.

Gantikan tatasusunan indeks.

setIndices(data: number[]): void

clear()

NOT IMPLEMENTED. Pada asas VertexElement kelas, kaedah ini melempar Error('clear is not implemented') pada masa jalan. Subkelas VertexElementFVector dan VertexElementIntsTemplate sediakan pelaksanaan yang berfungsi.

Buang semua data dan indeks daripada lapisan.

clear(): void

VertexElementNormal

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

export class VertexElementNormal extends VertexElementFVector

ImageRenderOptions

VertexElementVertexElementFVectorVertexElementNormal

ImageRenderOptions

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

vertexElementType ditetapkan kepada VertexElementType.NORMAL.


VertexElementUV

Menyimpan koordinat tekstur 2D. Mesh boleh membawa berbilang lapisan UV untuk saluran tekstur yang berbeza. The textureMapping ciri ini mengenal pasti 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,
)

Lalai kepada TextureMapping.DIFFUSE apabila textureMapping adalah null.

Sifat tambahan

ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
textureMappingTextureMappingbacaSaluran tekstur yang mana lapisan UV ini dikaitkan.
dataFVector4[]bacaNilai UV dipaparkan sebagai FVector4 entri (z dan w adalah 0).
uvDataFVector2[]dibacaNilai UV sebagai FVector2 entri (x, y sahaja).

addData(data)

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

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

VertexElementVertexColor

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

export class VertexElementVertexColor extends VertexElementFVector

ImageRenderOptions

VertexElementVertexElementFVectorVertexElementVertexColor

ImageRenderOptions

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

vertexElementType ditetapkan kepada VertexElementType.VERTEX_COLOR.


ImageRenderOptions

Tambah normal kepada 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');

Tambah 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 Melayu