VertexElement — Aspose.3D TypeScript API Reference

Пакет: @аспоз/3d (v24.12.0)

VertexElement е абстрактният базов клас за канали с атрибути на върха, прикрепени към Geometry.Всеки канал съдържа типени масиви от данни и mappingMode / referenceMode Метаданните, които контролират как данните се отнасят до примитиви на геометрията. Подкласовете са: VertexElementNormal, VertexElementUV, и VertexElementVertexColor.

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

VertexElement (абстрактна база)

export abstract class VertexElement implements IIndexedVertexElement

Строител

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

По подразбиране: mappingMode е в: MappingMode.CONTROL_POINT; по подразбиране referenceMode е в: ReferenceMode.DIRECT.

Свойства на веществата

ИмотътТип на изпитванеДостъп до информацияОписание на състоянието
vertexElementTypeVertexElementTypeПрочети.Семантичен тип на този слой.
namestringЧете/ПишеФакультативна етикета за този слой.
mappingModeMappingModeЧете/ПишеКонтролира с коя геометрия примитивна е свързана всяка стойност.
referenceModeReferenceModeЧете/ПишеКонтролира дали стойностите се адресират директно или чрез индекс масив.
indicesnumber[]Прочети.Индекс масив за: IndexToDirect референтен режим.

Методи за изчисляване на данните

setIndices(data)

NOT IMPLEMENTED. На основата. VertexElement клас, този метод хвърля Error('set_indices is not implemented') По-добри подкласове. VertexElementFVector и в) VertexElementIntsTemplate осигуряване на работещи приложения.

Заменете индекса.

setIndices(data: number[]): void

clear()

NOT IMPLEMENTED. На основата. VertexElement клас, този метод хвърля Error('clear is not implemented') По-добри подкласове. VertexElementFVector и в) VertexElementIntsTemplate осигуряване на работещи приложения.

Изтрийте всички данни и индекси от слоя.

clear(): void

VertexElementNormal

Повечето рендери изискват нормални данни за правилното осветление.

export class VertexElementNormal extends VertexElementFVector

Наследство

VertexElement → VertexElementFVector → VertexElementNormal

Строител

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

vertexElementType е фиксиран на: VertexElementType.NORMAL.


VertexElementUV (включително и на VC)

Съхранява 2D координати на текстурата. Мешката може да носи множество UV слоеве за различни канали на тъканта. textureMapping свойството идентифицира целта на канала.

export class VertexElementUV extends VertexElementFVector

Наследство

VertexElement → VertexElementFVector → VertexElementUV

Строител

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

Неизпълнения на TextureMapping.DIFFUSE когато: textureMapping е в: null.

Допълнителни имоти

ИмотътТип на изпитванеДостъп до информацияОписание на състоянието
textureMappingTextureMappingПрочети.Каналът на текстурата, с който е свързан този UV слой.
dataFVector4[]Прочети.УВ стойности, изложени като: FVector4 вписвания (z и w са 0).
uvDataFVector2[]Прочети.УВ стойности като: FVector2 вписвания (само x, y).

addData(data)

Приложете UV стойности. FVector2[], FVector3[], или FVector4[].

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

VertexElementVertexColor

Съхранява цветни стойности на RGBA за всеки върх. Компонентите са в диапазона 01.

export class VertexElementVertexColor extends VertexElementFVector

Наследство

VertexElement → VertexElementFVector → VertexElementVertexColor

Строител

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

vertexElementType е фиксиран на: VertexElementType.VERTEX_COLOR.


Примери за това

Добавяне на нормали към триъгълна мрежа:

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

Добавете УВ координати:

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

Вижте също:

 Български