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 IIndexedVertexElementConstruçã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
| Propriedade | Tipo de veículo: | Acessos | Descrição: |
|---|---|---|---|
vertexElementType | VertexElementType | Leia. | Tipo semântico desta camada. |
name | string | Leitura/Escrita | Rótulo opcional para esta camada. |
mappingMode | MappingMode | Leitura/Escrita | Controla a qual geometria primitiva cada valor está associado. |
referenceMode | ReferenceMode | Leitura/Escrita | Controla se os valores são endereçados diretamente ou através de uma matriz de índices. |
indices | number[] | Leia. | Array de índice para IndexToDirect modo de referência. |
Métodos de avaliação
setIndices(data)
NOT IMPLEMENTED. Na base .
VertexElementclasse, este método lançaError('set_indices is not implemented')As subclasses são:VertexElementFVectore a)VertexElementIntsTemplatefornecer implementações funcionais.
Substitua a matriz de índice.
setIndices(data: number[]): voidclear()
NOT IMPLEMENTED. Na base .
VertexElementclasse, este método lançaError('clear is not implemented')As subclasses são:VertexElementFVectore a)VertexElementIntsTemplatefornecer implementações funcionais.
Remova todos os dados e índices da camada.
clear(): voidVertexElementNormal
Os dados normais são necessários pela maioria dos renderizadores para a iluminação correta.
export class VertexElementNormal extends VertexElementFVectorA herança
VertexElement → VertexElementFVector → VertexElementNormal
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 VertexElementFVectorA herança
VertexElement → VertexElementFVector → VertexElementUV
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
| Propriedade | Tipo de veículo: | Acessos | Descrição: |
|---|---|---|---|
textureMapping | TextureMapping | Leia. | O canal de textura com o qual esta camada UV está associada. |
data | FVector4[] | Leia. | Valores UV expostos como: FVector4 As entradas (z e w são: 0). |
uvData | FVector2[] | Leia. | Valores UV como: FVector2 Entradas (só x, y). |
addData(data)
Acolhe os valores UV. FVector2[], FVector3[], ou FVector4[].
addData(data: FVector2[] | FVector3[] | FVector4[]): voidVertexElementVertexColor
Armazena valores de cor RGBA por vértice. Os componentes estão na faixa 01.
export class VertexElementVertexColor extends VertexElementFVectorA herança
VertexElement → VertexElementFVector → VertexElementVertexColor
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');