Material

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

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.

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

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

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


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

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