Materials — LambertMaterial, PhongMaterial, PbrMaterial

Materials — LambertMaterial, PhongMaterial, PbrMaterial

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

@aspose/3d fournit trois classes de matériaux concrètes qui étendent la classe abstraite de base. Material Elles couvrent les trois modèles d’ombrage les plus couramment rencontrés dans les formats d’échange 3D :

  • LambertMaterial — diffuse + ambiant + émissif (utilisé par les actifs OBJ/MTL et les anciens FBX)
  • PhongMaterial — étend Lambert avec des propriétés de reflets spéculaires
  • PbrMaterial — modèle physiquement basé correspondant à la définition de matériau glTF 2.0

Toutes les classes de matériaux sont exportées depuis le @aspose/3d point d’entrée principal.

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

Classe Material (base abstraite)

Material est la classe de base abstraite pour tous les matériaux. Elle étend A3DObject, fournissant le name propriété et l’API de slot de texture.

export class Material extends A3DObject

Example

ExampleExampleExample
namestringLe nom du matériau tel qu’il apparaît dans le graphe de scène et la sortie d’exportation.

Example

getTexture(slotName)

Retourne le TextureBase assigné au slot nommé, ou null si aucun n’a été assigné.

getTexture(slotName: string): TextureBase | null

setTexture(slotName, texture)

Assigne un TextureBase instance au slot nommé.

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

Classe LambertMaterial

LambertMaterial modélise la réflexion diffuse avec des contributions ambiantes et émissives optionnelles. C’est le type de matériau généralement produit lors du chargement de fichiers OBJ avec .mtl bibliothèques.

export class LambertMaterial extends Material

Example

A3DObject ← Material ← LambertMaterial

Example

Attribuez un matériau diffus rouge à un nœud.

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.0Facteur d’opacité dans la plage 0.0 (complètement opaque) à 1.0 (complètement transparent). Limité automatiquement.

Classe PhongMaterial

PhongMaterial étend LambertMaterial avec prise en charge des reflets spéculaires, implémentant le modèle d’ombrage Phong classique. Il est courant dans les actifs FBX et COLLADA.

export class PhongMaterial extends LambertMaterial

Example

A3DObject ← Material ← LambertMaterial ← PhongMaterial

Example

Créez un matériau Phong bleu brillant.

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.0Multiplicateur scalaire pour la contribution spéculaire.
shininessnumber0.0Exposant de brillance Phong — des valeurs plus élevées produisent des reflets plus serrés.
reflectionColor`Vector3null`null
reflectionFactornumber0.0Multiplicateur scalaire pour la contribution de réflexion.

Classe PbrMaterial

PbrMaterial implémente le modèle PBR metallic-roughness glTF 2.0. Utilisez cette classe pour les scènes qui seront enregistrées au format glTF/GLB, ou lorsque l’actif source FBX contient des matériaux PBR.

export class PbrMaterial extends Material

Example

A3DObject ← Material ← PbrMaterial

Example

Construisez un matériau PBR doré et enregistrez-le dans un fichier glTF.

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.0Facteur métallique dans la plage 0–1. 1.0 = entièrement métallique.
roughnessFactornumber0.0Facteur de rugosité dans la plage 0–1. 0.0 = lisse comme un miroir.
metallicRoughness`TextureBasenull`null
occlusionTexture`TextureBasenull`null
occlusionFactornumber0.0Intensité de l’effet d’occlusion ambiante.
emissiveColor`Vector3null`null
emissiveTexture`TextureBasenull`null
transparencynumber0.0Facteur d’opacité dans la plage 0–1. Limité automatiquement.

createAnimationClip(name)

PbrMaterial.fromMaterial(material)

Crée un nouveau PbrMaterial à partir d’un générique Material instance, en copiant le name.

static fromMaterial(material: Material): PbrMaterial
 Français