Materials — LambertMaterial, PhongMaterial, PbrMaterial

Materials — LambertMaterial, PhongMaterial, PbrMaterial

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

@aspose/3d toimittaa kolme konkreettista materiaaliluokkaa, jotka laajentavat abstraktia Material perusluokkaa. Ne kattavat kolme varjostusmallia, jotka ovat yleisimmin 3D‑vaihtoformaatteissa:

  • LambertMaterial — diffuse + ambient + emissive (käytetään OBJ/MTL- ja vanhemmissa FBX‑resursseissa)
  • PhongMaterial — laajentaa Lambertia spekulaarisen korostuksen ominaisuuksilla
  • PbrMaterial — fysikaaliseen perustuva malli, joka vastaa glTF 2.0 -materiaalimääritelmää

Kaikki materiaaliluokat viedään pää @aspose/3d sisäänkäyntipisteestä.

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

Luokka Material (abstrakti pohja)

Material on abstrakti perusluokka kaikille materiaaleille. Se laajentaa A3DObject, tarjoten name ominaisuuden ja tekstuuripaikan API:n.

export class Material extends A3DObject

Example

ExampleExampleExample
namestringMateriaalin nimi sellaisena kuin se näkyy kohtausgraafissa ja vientitulosteessa.

Example

getTexture(slotName)

Palauttaa TextureBase nimettyyn paikkaan määritetyn, tai null jos mitään ei ole määritetty.

getTexture(slotName: string): TextureBase | null

setTexture(slotName, texture)

Määrittää TextureBase instanssin nimettyyn paikkaan.

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

Luokka LambertMaterial

LambertMaterial mallintaa hajautunutta heijastusta valinnaisilla ambientti- ja emissio-osuuksilla. Se on materiaalityyppi, joka tavallisesti syntyy, kun ladataan OBJ‑tiedostoja with .mtl kirjastot.

export class LambertMaterial extends Material

Example

A3DObject ← Material ← LambertMaterial

Example

Määritä punainen diffuse-materiaali solmulle.

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

Example

ExampleExampleExampleExample
diffuseColor`Vector3null`null
ambientColor`Vector3null`null
emissiveColor`Vector3null`null
transparentColor`Vector3null`null
transparencynumber0.0Läpinäkyvyyskertoimen arvo välillä 0,0 (täysin läpinäkymätön) – 1,0 (täysin läpinäkyvä). Rajattu automaattisesti.

Luokka PhongMaterial

PhongMaterial laajentaa LambertMaterial specular-valaistuksen tuella, toteuttaen klassisen Phong-varjostusmallin. Se on yleinen FBX- ja COLLADA‑kohteissa.

export class PhongMaterial extends LambertMaterial

Example

A3DObject ← Material ← LambertMaterial ← PhongMaterial

Example

Luo kiiltävä sininen Phong-materiaali.

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

Example

ExampleExampleExampleExample
specularColor`Vector3null`null
specularFactornumber0.0Skalaari kerroin specular-kontribuutiolle.
shininessnumber0.0Phong‑kiiltoeksponentti — korkeammat arvot tuottavat tiukempia korostuksia.
reflectionColor`Vector3null`null
reflectionFactornumber0.0Skalaari kerroin heijastuksen kontribuutiolle.

Luokka PbrMaterial

PbrMaterial toteuttaa glTF 2.0 metallinen‑karkeus‑PBR‑mallin. Käytä tätä luokkaa kohtauksissa, jotka tallennetaan glTF/GLB‑muotoon, tai kun lähde‑FBX‑kohde sisältää PBR‑materiaaleja.

export class PbrMaterial extends Material

Example

A3DObject ← Material ← PbrMaterial

Example

Rakenna kultainen PBR-materiaali ja tallenna se glTF-tiedostoon.

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

Example

ExampleExampleExampleExample
albedo`Vector3null`null
albedoTexture`TextureBasenull`null
normalTexture`TextureBasenull`null
metallicFactornumber0.0Metallinen kerroin 0–1 välillä. 1.0 = täysin metallinen.
roughnessFactornumber0.0Karkeuskerroin 0–1 alueella. 0.0 = peilimäinen.
metallicRoughness`TextureBasenull`null
occlusionTexture`TextureBasenull`null
occlusionFactornumber0.0Ambient‑okkultaatioefektin voimakkuus.
emissiveColor`Vector3null`null
emissiveTexture`TextureBasenull`null
transparencynumber0.0Läpikuultavuuskertoja 0–1 alueella. Rajattu automaattisesti.

Vaihtoehtoisesti, anna yksi Vector3, jonka x, y, z sisältävät pitchin, yawin ja rollin.

PbrMaterial.fromMaterial(material)

Luo uuden PbrMaterial yleisestä Material instanssista, kopioiden the name.

static fromMaterial(material: Material): PbrMaterial
 Suomi