VertexElement Aspose.3D TypeScript Referência API

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

VertexElement é a classe de base abstrata para canais atributos per-vertex ligados a um Geometry.Cada canal contém um conjunto de dados digitados e mappingMode / referenceMode Metadados que controlam como os dados se relacionam com primitivos de geometria. As subclasses são: VertexElementNormal, VertexElementUV, e VertexElementVertexColor.

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

VertexElement (base abstrata)

export abstract class VertexElement implements IIndexedVertexElement

Construção

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

Padrão mappingMode é: MappingMode.CONTROL_POINT; padrão referenceMode é: ReferenceMode.DIRECT.

Propriedades

PropriedadeTipo de veículo:AcessosDescrição:
vertexElementTypeVertexElementTypeLeia.Tipo semântico desta camada.
namestringLeitura/EscritaRótulo opcional para esta camada.
mappingModeMappingModeLeitura/EscritaControla a qual geometria primitiva cada valor está associado.
referenceModeReferenceModeLeitura/EscritaControla se os valores são endereçados diretamente ou através de uma matriz de índices.
indicesnumber[]Leia.Array de índice para IndexToDirect modo de referência.

Métodos de avaliação

setIndices(data)

NOT IMPLEMENTED. Na base . VertexElement classe, este método lança Error('set_indices is not implemented') As subclasses são: VertexElementFVector e a) VertexElementIntsTemplate fornecer implementações funcionais.

Substitua a matriz de índice.

setIndices(data: number[]): void

clear()

NOT IMPLEMENTED. Na base . VertexElement classe, este método lança Error('clear is not implemented') As subclasses são: VertexElementFVector e a) VertexElementIntsTemplate fornecer implementações funcionais.

Remova todos os dados e índices da camada.

clear(): void

VertexElementNormal

Os dados normais são necessários pela maioria dos renderizadores para a iluminação correta.

export class VertexElementNormal extends VertexElementFVector

A herança

VertexElementVertexElementFVectorVertexElementNormal

Construção

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

vertexElementType está fixado a: VertexElementType.NORMAL.


VertexElementUV

Armazena coordenadas de textura 2D. Uma malha pode transportar várias camadas UV para diferentes canais de texturas. textureMapping Propriedade identifica o propósito do canal.

export class VertexElementUV extends VertexElementFVector

A herança

VertexElementVertexElementFVectorVertexElementUV

Construção

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

Descontos de TextureMapping.DIFFUSE quando? textureMapping é: null.

Propriedade adicional

PropriedadeTipo de veículo:AcessosDescrição:
textureMappingTextureMappingLeia.O canal de textura com o qual esta camada UV está associada.
dataFVector4[]Leia.Valores UV expostos como: FVector4 As entradas (z e w são: 0).
uvDataFVector2[]Leia.Valores UV como: FVector2 Entradas (só x, y).

addData(data)

Acolhe os valores UV. FVector2[], FVector3[], ou FVector4[].

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

VertexElementVertexColor

Armazena valores de cor RGBA por vértice. Os componentes estão na faixa 01.

export class VertexElementVertexColor extends VertexElementFVector

A herança

VertexElementVertexElementFVectorVertexElementVertexColor

Construção

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

vertexElementType está fixado a: VertexElementType.VERTEX_COLOR.


Exemplos de

Adicionar normais a uma malha triangular:

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

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

Ver também:

 Português