Material

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

@aspose/3d levererar tre konkreta materialklasser som utökar den abstrakta Material basen. De täcker de tre skuggmodeller som mest vanligt förekommer i 3D-utbytesformat:

  • LambertMaterial — diffus + omgivande + emissiv (används av OBJ/MTL och äldre FBX-tillgångar)
  • PhongMaterial — utökar Lambert med spekulära högdagsegenskaper
  • PbrMaterial — fysiskt baserad modell som matchar glTF 2.0-materialdefinitionen

Alla materialklasser exporteras från huvud- @aspose/3d ingångspunkten.

import { LambertMaterial, PhongMaterial, PbrMaterial } from '@aspose/3d';

Klass Material (abstrakt bas)

Material är den abstrakta basklassen för alla material. Den utökar A3DObject, som tillhandahåller name egenskap och API för texturslot.

export class Material extends A3DObject

ImageRenderOptions

NameTypeAccessDescription
MAP_SPECULAR``ReadGets the map specular.
MAP_DIFFUSE``ReadGets the map diffuse.
MAP_EMISSIVE``ReadGets the map emissive.
MAP_AMBIENT``ReadGets the map ambient.
MAP_NORMAL``ReadGets the map normal.

ImageRenderOptions

getTexture(slotName)

Returnerar TextureBase tilldelade till den namngivna slotten, eller null om ingen har tilldelats.

getTexture(slotName: string): TextureBase | null

setTexture(slotName, texture)

Tilldelar en TextureBase instans till den namngivna platsen.

setTexture(slotName: string, texture: TextureBase): void

Klass LambertMaterial

LambertMaterial modellerar diffus reflektion med valfria omgivande och emissiva bidrag. Det är den materialtyp som vanligtvis genereras när man laddar OBJ-filer med .mtl bibliotek.

export class LambertMaterial extends Material

ImageRenderOptions

A3DObject ← Material ← LambertMaterial

ImageRenderOptions

Tilldela ett rött diffust material till en nod.

import { Scene, LambertMaterial } from '@aspose/3d';
import { Vector3 } from '@aspose/3d/utilities';

const scene = new Scene();
scene.open('model.obj');

const mat = new LambertMaterial('RedSurface');
mat.diffuseColor = new Vector3(1, 0, 0);   // R=1, G=0, B=0
mat.ambientColor = new Vector3(0.1, 0, 0);
mat.transparency = 0;

// Assign material to the first child node's entity
const firstNode = scene.rootNode.childNodes[0];
if (firstNode && firstNode.entity) {
  (firstNode.entity as any).material = mat;
}
scene.save('output.fbx');

ImageRenderOptions

SignatureDescription
`constructor(name: stringnull)`
getTexture(_slotName: string) → `TextureBasenull`
setTexture(_slotName: string, _texture: TextureBase)Sets the texture value.

Klass PhongMaterial

PhongMaterial utökar LambertMaterial med stöd för spekulära högdagrar, implementerar den klassiska Phong-skuggmodellen. Den är vanlig i FBX- och COLLADA-tillgångar.

export class PhongMaterial extends LambertMaterial

ImageRenderOptions

A3DObject ← Material ← LambertMaterial ← PhongMaterial

ImageRenderOptions

Skapa ett glänsande blått Phong-material.

import { PhongMaterial } from '@aspose/3d';
import { Vector3 } from '@aspose/3d/utilities';

const mat = new PhongMaterial('ShinyBlue');
mat.diffuseColor = new Vector3(0, 0.2, 0.8);
mat.specularColor = new Vector3(1, 1, 1);
mat.shininess = 64;
mat.specularFactor = 0.8;
console.log(`Shininess: ${mat.shininess}`); // Shininess: 64

ImageRenderOptions


Klass PbrMaterial

PbrMaterial implementerar glTF 2.0 metallic-roughness PBR-modellen. Använd den här klassen för scener som ska sparas som glTF/GLB, eller när käll-FBX-tillgången innehåller PBR-material.

export class PbrMaterial extends Material

ImageRenderOptions

A3DObject ← Material ← PbrMaterial

ImageRenderOptions

Bygg ett guldfärgat PBR-material och spara det i en glTF-fil.

import { Scene, PbrMaterial } from '@aspose/3d';
import { Vector3 } from '@aspose/3d/utilities';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';

const scene = new Scene();
scene.open('base-mesh.obj');

const gold = new PbrMaterial('Gold');
gold.albedo = new Vector3(1.0, 0.766, 0.336);  // gold base color
gold.metallicFactor = 1.0;
gold.roughnessFactor = 0.3;

// Attach material to the first mesh node
const meshNode = scene.rootNode.childNodes[0];
if (meshNode && meshNode.entity) {
  (meshNode.entity as any).material = gold;
}

const opts = new GltfSaveOptions();
opts.binaryMode = true;
scene.save('gold-model.glb', opts);

ImageRenderOptions

Statiska metoder

PbrMaterial.fromMaterial(material)

Skapar en ny PbrMaterial från en generisk Material instans, kopierar den name.

static fromMaterial(material: Material): PbrMaterial
 Svenska