Materials — LambertMaterial, PhongMaterial, PbrMaterial

Materials — LambertMaterial, PhongMaterial, PbrMaterial

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

@aspose/3d levert drie concrete materiaalklassen die de abstracte Material basis. Ze dekken de drie shading-modellen die het meest voorkomen in 3D-uitwisselingsformaten:

  • LambertMaterial — diffuse + ambient + emissive (gebruikt door OBJ/MTL en oudere FBX-assets)
  • PhongMaterial — breidt Lambert uit met speculaire highlight-eigenschappen
  • PbrMaterial — fysiek gebaseerd model dat overeenkomt met de glTF 2.0 materiaaldefinitie

Alle materiaalklassen worden geëxporteerd vanuit de hoofd @aspose/3d ingangspunt.

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

Klasse Material (abstracte basis)

Material is de abstracte basisklasse voor alle materialen. Het breidt A3DObject, en biedt de name eigenschap en de texture slot API.

export class Material extends A3DObject

ImageRenderOptions

ImageRenderOptionsImageRenderOptionsImageRenderOptions
namestringDe materiaallaagnaam zoals deze verschijnt in de scene graph en exportoutput.

ImageRenderOptions

getTexture(slotName)

Retourneert de TextureBase toegewezen aan de benoemde slot, of null als er geen is toegewezen.

getTexture(slotName: string): TextureBase | null

setTexture(slotName, texture)

Wijst een toe TextureBase instantie aan de benoemde slot.

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

Klasse LambertMaterial

LambertMaterial modelleert diffuse reflectie met optionele omgevings- en emissieve bijdragen. Het is het materiaaltype dat meestal wordt geproduceerd bij het laden van OBJ‑bestanden met .mtl bibliotheken.

export class LambertMaterial extends Material

ImageRenderOptions

A3DObject ← Material ← LambertMaterial

ImageRenderOptions

Ken een rood diffuus materiaal toe aan een node.

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

ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
diffuseColor`Vector3null`null
ambientColor`Vector3null`null
emissiveColor`Vector3null`null
transparentColor`Vector3null`null
transparencynumber0.0Opaciteitsfactor in het bereik 0.0 (volledig ondoorzichtig) tot 1.0 (volledig transparant). Automatisch begrensd.

Klasse PhongMaterial

PhongMaterial breidt uit LambertMaterial met ondersteuning voor speculaire highlights, waarbij het klassieke Phong-shademodel wordt geïmplementeerd. Het komt vaak voor in FBX- en COLLADA-assets.

export class PhongMaterial extends LambertMaterial

ImageRenderOptions

A3DObject ← Material ← LambertMaterial ← PhongMaterial

ImageRenderOptions

Maak een glanzend blauw Phong-materiaal.

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

ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
specularColor`Vector3null`null
specularFactornumber0.0Scalair vermenigvuldigingsfactor voor de speculaire bijdrage.
shininessnumber0.0Phong-glansexponent — hogere waarden geven strakkere highlights.
reflectionColor`Vector3null`null
reflectionFactornumber0.0Scalair vermenigvuldigingsfactor voor de reflectiebijdrage.

Klasse PbrMaterial

PbrMaterial implementeert het glTF 2.0 metallic-roughness PBR-model. Gebruik deze klasse voor scènes die worden opgeslagen als glTF/GLB, of wanneer de bron-FBX-asset PBR-materialen bevat.

export class PbrMaterial extends Material

ImageRenderOptions

A3DObject ← Material ← PbrMaterial

ImageRenderOptions

Bouw een gouden PBR-materiaal en sla het op in een glTF-bestand.

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

ImageRenderOptionsImageRenderOptionsImageRenderOptionsImageRenderOptions
albedo`Vector3null`null
albedoTexture`TextureBasenull`null
normalTexture`TextureBasenull`null
metallicFactornumber0.0Metallische factor in 0–1 bereik. 1.0 = volledig metallisch.
roughnessFactornumber0.0Ruwheidsfactor in 0–1 bereik. 0.0 = spiegelglad.
metallicRoughness`TextureBasenull`null
occlusionTexture`TextureBasenull`null
occlusionFactornumber0.0Sterkte van het ambient occlusion-effect.
emissiveColor`Vector3null`null
emissiveTexture`TextureBasenull`null
transparencynumber0.0Opaciteitsfactor in 0–1 bereik. Automatisch begrensd.

Statische methoden

PbrMaterial.fromMaterial(material)

Maakt een nieuwe PbrMaterial van een generieke Material instantie, waarbij de wordt gekopieerd name.

static fromMaterial(material: Material): PbrMaterial
 Nederlands