Material

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

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)

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

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

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


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

Statiniai metodai

PbrMaterial.fromMaterial(material)

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

static fromMaterial(material: Material): PbrMaterial
 Lietuvių