VertexElement — Aspose.3D TypeScript API Reference

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

VertexElement jest abstrakcyjną klasą bazową dla kanałów atrybutów per-wierzchołkowych dołączonych do Geometry. Każdy kanał przechowuje typowaną tablicę danych oraz mappingMode / referenceMode metadane, które kontrolują, jak dane odnoszą się do prymitywów geometrycznych. Podklasy to: VertexElementNormal, VertexElementUV, oraz 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 jest MappingMode.CONTROL_POINT; domyślnie referenceMode jest ReferenceMode.DIRECT.

ImageRenderOptions

ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
vertexElementTypeVertexElementTypeodczytTyp semantyczny tej warstwy.
namestringodczyt/zapisOpcjonalna etykieta dla tej warstwy.
mappingModeMappingModeodczyt/zapisKontroluje, z którym prymitywem geometrii powiązana jest każda wartość.
referenceModeReferenceModeodczyt/zapisKontroluje, czy wartości są adresowane bezpośrednio, czy poprzez tablicę indeksów.
indicesnumber[]odczytTablica indeksów dla IndexToDirect tryb referencyjny.

ImageRenderOptions

setIndices(data)

NOT IMPLEMENTED. Na bazie VertexElement klasa, ta metoda rzuca Error('set_indices is not implemented') w czasie wykonywania. Podklasy VertexElementFVector i VertexElementIntsTemplate zapewniają działające implementacje.

Zastąp tablicę indeksów.

setIndices(data: number[]): void

clear()

NOT IMPLEMENTED. W bazowej VertexElement klasa, ta metoda rzuca Error('clear is not implemented') w czasie wykonywania. Podklasy VertexElementFVector i VertexElementIntsTemplate zapewniają działające implementacje.

Usuń wszystkie dane i indeksy z warstwy.

clear(): void

VertexElementNormal

Przechowuje wektory normalne powierzchni. Dane normalne są wymagane przez większość rendererów do prawidłowego oświetlenia.

export class VertexElementNormal extends VertexElementFVector

ImageRenderOptions

VertexElementVertexElementFVectorVertexElementNormal

ImageRenderOptions

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

vertexElementType jest ustalone na VertexElementType.NORMAL.


VertexElementUV

Przechowuje dwuwymiarowe współrzędne tekstury. Siatka może zawierać wiele warstw UV dla różnych kanałów tekstur. Ten textureMapping właściwość identyfikuje przeznaczenie kanału.

export class VertexElementUV extends VertexElementFVector

ImageRenderOptions

VertexElementVertexElementFVectorVertexElementUV

ImageRenderOptions

new VertexElementUV(
  textureMapping: TextureMapping | null = null,
  name: string = '',
  mappingMode: MappingMode | null = null,
  referenceMode: ReferenceMode | null = null,
)

Domyślnie ustawione na TextureMapping.DIFFUSE gdy textureMapping jest null.

Dodatkowa właściwość

ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
textureMappingTextureMappingodczytKanał tekstury, z którym powiązana jest ta warstwa UV.
dataFVector4[]odczytWartości UV udostępnione jako FVector4 pozycje (z i w są 0).
uvDataFVector2[]odczytWartości UV jako FVector2 wpisy (tylko x, y).

addData(data)

Dołącz wartości UV. Akceptuje FVector2[], FVector3[], lub FVector4[].

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

VertexElementVertexColor

Przechowuje wartości koloru RGBA dla każdego wierzchołka. Składowe mieszczą się w przedziale 0–1.

export class VertexElementVertexColor extends VertexElementFVector

ImageRenderOptions

VertexElementVertexElementFVectorVertexElementVertexColor

ImageRenderOptions

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

vertexElementType jest ustalone na VertexElementType.VERTEX_COLOR.


ImageRenderOptions

Dodaj wektory normalne do siatki trójkątów:

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

Dodaj współrzędne 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');

Zobacz także

 Polski