U ovom slučaju, u skladu s člankom 21. stavkom 1. točkom (a) ovog članka.

Sljedeći članak: @aspose/3d (v24.12.0)

VertexElement je apstraktna osnovna klasa za per-vertex atribute kanala priključena na Geometry.Svaki kanal sadrži tipku podataka i mappingMode / referenceMode Metapodatke koji kontroliraju kako se podaci odnose na primitivne geometrije. Podklase su: VertexElementNormal, VertexElementUV, i VertexElementVertexColor.

import { VertexElement, VertexElementNormal, VertexElementUV, VertexElementVertexColor } from '@aspose/3d';

VertexElement (abstraktna baza)

export abstract class VertexElement implements IIndexedVertexElement

Izgraditelj

constructor(
  elementType: VertexElementType,
  name: string = '',
  mappingMode: MappingMode | null = null,
  referenceMode: ReferenceMode | null = null,
)

Standardno mappingMode je: MappingMode.CONTROL_POINT; podrazumijevano referenceMode je: ReferenceMode.DIRECT.

Oznake i značajke

Održavanje imovineIznos:PrihvatOpisivanje
vertexElementTypeVertexElementTypeČitaj.Semantički tip ovog sloja.
namestringČitanje/pisanjeOpcionalna oznaka za ovaj sloj.
mappingModeMappingModeČitanje/pisanjeKontroli s kojim primitivnim geometrijskim elementom je povezana svaka vrijednost.
referenceModeReferenceModeČitanje/pisanjeKontrolira se da li su vrijednosti adresirane izravno ili putem indeksa.
indicesnumber[]Čitaj.Indeksni niz za: IndexToDirect referentni način.

Metoda za primjenu

setIndices(data)

NOT IMPLEMENTED. Na bazi. VertexElement klasa, ova metoda baca Error('set_indices is not implemented') U vrijeme pokretanja. podklase VertexElementFVector i u članku 1. VertexElementIntsTemplate provesti radne provedbe.

Zamjenite indeksni niz.

setIndices(data: number[]): void

clear()

NOT IMPLEMENTED. Na bazi. VertexElement klasa, ova metoda baca Error('clear is not implemented') U vrijeme pokretanja. podklase VertexElementFVector i u članku 1. VertexElementIntsTemplate provesti radne provedbe.

Uklonite sve podatke i indekse iz sloja.

clear(): void

VertexElementNormal

Normalne podatke zahtijeva većina renderera za ispravno osvijetljenje.

export class VertexElementNormal extends VertexElementFVector

Nasljeđivanje

VertexElementVertexElementFVectorVertexElementNormal

Izgraditelj

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

vertexElementType je fiksiran na: VertexElementType.NORMAL.


Sljedeći članakVerdžElementUV

U mreži mogu biti više UV slojeva za različite teksture. textureMapping svojstvo identificira svrhu kanala.

export class VertexElementUV extends VertexElementFVector

Nasljeđivanje

VertexElementVertexElementFVectorVertexElementUV

Izgraditelj

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

Neispunjavanje obveza u pogledu: TextureMapping.DIFFUSE kad je to bilo? textureMapping je: null.

Dodatna imovina

Održavanje imovineIznos:PrihvatOpisivanje
textureMappingTextureMappingČitaj.Kanal teksture s kojim je povezan ovaj UV sloj.
dataFVector4[]Čitaj.UV vrijednosti izložene kao: FVector4 Uputina (z i w su: 0).
uvDataFVector2[]Čitaj.UV vrijednosti kao: FVector2 Uputina (samo x, y).

addData(data)

Pridružite UV vrijednosti. FVector2[], FVector3[],ili FVector4[].

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

VertexElementVertexColor

Složila je vrijednosti boje RGBA po vrhu. Komponente su u opsegu 01.

export class VertexElementVertexColor extends VertexElementFVector

Nasljeđivanje

VertexElementVertexElementFVectorVertexElementVertexColor

Izgraditelj

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

vertexElementType je fiksiran na: VertexElementType.VERTEX_COLOR.


Primjeri:

Dodavanje normalnih na trokutnu mrežu:

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 UV koordinate:

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

Također pogledajte:

 Hrvatski