Materials — LambertMaterial, PhongMaterial, PbrMaterial

Materials — LambertMaterial, PhongMaterial, PbrMaterial

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

@aspose/3d pateikia tris konkrečias medžiagų klases, kurios išplečia abstrakčią Material bazę. Jos apima tris dažymo modelius, kurie dažniausiai sutinkami 3D keitimo formatuose:

  • LambertMaterial — difuzinis + aplinkos + šviesos (naudojamas OBJ/MTL ir senesniuose FBX ištekliuose)
  • PhongMaterial — išplečia Lambertą su spekuliarių šviesų savybėmis
  • PbrMaterial — fizikinis modelis, atitinkantis glTF 2.0 medžiagos apibrėžimą

Visos medžiagų klasės eksportuojamos iš pagrindinio @aspose/3d įėjimo taško.

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

Klasė Material (abstrakti bazė)

Material yra abstrakti bazinė klasė visoms medžiagoms. Ji išplečia A3DObject, suteikdama name savybę ir tekstūros lizdo API.

export class Material extends A3DObject

ImageRenderOptions

ImageRenderOptionsImageRenderOptionsImageRenderOptions
namestringMedžiagos pavadinimas, kaip jis rodomas scenos grafike ir eksporto išvestyje.

ImageRenderOptions

getTexture(slotName)

Grąžina TextureBase priskirtą pavadintam lizdui, arba null jei nebuvo priskirta.

getTexture(slotName: string): TextureBase | null

setTexture(slotName, texture)

Priskiria TextureBase egzemplį į pavadintą lizdą.

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

Klasė LambertMaterial

LambertMaterial modeliuoja difuzinį atspindį su pasirinktiniais aplinkos ir spinduliavimo indėliais. Tai medžiagos tipas, dažniausiai sukuriamas įkeliant OBJ failus su .mtl bibliotekos.

export class LambertMaterial extends Material

ImageRenderOptions

A3DObject ← Material ← LambertMaterial

ImageRenderOptions

Priskirkite mazgui raudoną difuzinę medžiagą.

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.0Skaidrumo faktorius intervale nuo 0.0 (visiškai nepermatomas) iki 1.0 (visiškai permatomas). Automatiškai apribojamas.

Klasė PhongMaterial

PhongMaterial plečia LambertMaterial su speculiarų švytėjimų palaikymu, įgyvendinančiu klasiką Phong apšvietimo modelį. Tai įprasta FBX ir COLLADA turiniuose.

export class PhongMaterial extends LambertMaterial

ImageRenderOptions

A3DObject ← Material ← LambertMaterial ← PhongMaterial

ImageRenderOptions

Sukurkite blizgančią mėlyną Phong medžiagą.

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.0Skaliarinis daugybininkas spekuliariam indėliui.
shininessnumber0.0Phong blizgesio eksponentas — didesnės reikšmės sukuria siauresnes šviesos dėmes.
reflectionColor`Vector3null`null
reflectionFactornumber0.0Skaliarinis daugybininkas atspindžio indėliui.

Klasė PbrMaterial

PbrMaterial Įgyvendina glTF 2.0 metalinio-šiurkščio PBR modelį. Naudokite šią klasę scenoms, kurios bus išsaugotos kaip glTF/GLB, arba kai šaltinio FBX turinys turi PBR medžiagas.

export class PbrMaterial extends Material

ImageRenderOptions

A3DObject ← Material ← PbrMaterial

ImageRenderOptions

Sukurkite auksinę PBR medžiagą ir įrašykite ją į glTF failą.

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.0Metalinio faktoriaus reikšmė 0–1 intervale. 1.0 = visiškai metalinis.
roughnessFactornumber0.0Nelygumų koeficientas 0–1 intervale. 0.0 = veidrodinis lygus.
metallicRoughness`TextureBasenull`null
occlusionTexture`TextureBasenull`null
occlusionFactornumber0.0Aplinkos uždangos efekto stiprumas.
emissiveColor`Vector3null`null
emissiveTexture`TextureBasenull`null
transparencynumber0.0Skaidrumo faktorius 0–1 intervale. Automatiškai apribojamas.

Statiniai metodai

PbrMaterial.fromMaterial(material)

Sukuria naują PbrMaterial iš bendro Material egzempliorius, kopijuojant name.

static fromMaterial(material: Material): PbrMaterial
 Lietuvių