Material and PbrMaterial — Aspose.3D FOSS for Java

Properties: com.aspose.threed.shading (aspose-3d-foss)

Aspose.3D FOSS for Java poskytuje dve triedy materiálov:

  • Material: abstraktná základná trieda pre všetky typy materiálov. Poskytuje názov a kolekciu vlastností pre číselné a farebné parametre.
  • PbrMaterial: Materiál založený na fyzickom renderovaní (Physically Based Rendering) s vlastnosťami metalicity, drsnosti, albeda a emisívnosti. Používaný v glTF 2.0 a ďalších formátoch podporujúcich PBR.

Materiály sú priradené k Node prostredníctvom node.setMaterial(material).


Properties

public abstract class Material extends A3DObject

Properties

A3DObject -> Material

Material je abstraktnou základňou pre všetky typy materiálov. Poskytuje vlastnosť názvu a Properties kolekciu používateľsky definovaných metadát. Nevytvárate Material priamo; použite PbrMaterial namiesto.


PbrMaterial

public class PbrMaterial extends Material

Properties

A3DObject -> Material -> PbrMaterial

PBR (Physically Based Rendering) materiál. Používaný v glTF 2.0 a ďalších formátoch podporujúcich PBR. Priradený k Node cez node.setMaterial(material).

Properties

PbrMaterial()
PbrMaterial(String name)
PbrMaterial(String name, Vector4 albedo)

Properties

PropertiesPropertiesPropertiesPropertiesProperties
albedoVector4getAlbedo()setAlbedo(Vector4)Základná farba (albedo) povrchu v RGBA. Predvolená null.
metallicFactordoublegetMetallicFactor()setMetallicFactor(double)Metalický príspevok: 0.0 = úplne dielektrický, 1.0 = úplne kovový.
roughnessFactordoublegetRoughnessFactor()setRoughnessFactor(double)Drsnosť povrchu: 0.0 = hladký/zrkadlový, 1.0 = úplne drsný.
emissiveColorVector3getEmissiveColor()setEmissiveColor(Vector3)= Farba vlastného svetla. Predvolené null.
transparencydoublegetTransparency()setTransparency(double)= Úroveň nepriehľadnosti: 0.0 = úplne nepriehľadný, 1.0 = úplne priehľadný.

Príklad použitia

import com.aspose.threed.*;
import com.aspose.threed.shading.PbrMaterial;

Scene scene = new Scene();

Mesh mesh = new Mesh();
mesh.getControlPoints().add(new Vector4(0, 0, 0, 1));
mesh.getControlPoints().add(new Vector4(1, 0, 0, 1));
mesh.getControlPoints().add(new Vector4(0.5, 1, 0, 1));
mesh.createPolygon(0, 1, 2);

PbrMaterial mat = new PbrMaterial("pbr-metal");
mat.setAlbedo(new Vector4(0.8, 0.6, 0.2, 1.0));    // gold-ish base color
mat.setMetallicFactor(0.9);
mat.setRoughnessFactor(0.2);

Node node = scene.getRootNode().createChildNode("mesh", mesh);
node.setMaterial(mat);

scene.save("pbr.glb");

Polopriehľadný PBR materiál

import com.aspose.threed.shading.PbrMaterial;

PbrMaterial mat = new PbrMaterial("glass");
mat.setAlbedo(new Vector4(0.7, 0.9, 1.0, 1.0));
mat.setTransparency(0.7);   // 70% transparent
mat.setRoughnessFactor(0.1);

Načítanie materiálu z importovanej scény

import com.aspose.threed.*;
import com.aspose.threed.shading.PbrMaterial;

Scene scene = new Scene();
scene.open("model.gltf");

inspectNode(scene.getRootNode());

static void inspectNode(Node node) {
    if (node.getMaterial() != null) {
        Material m = node.getMaterial();
        if (m instanceof PbrMaterial) {
            PbrMaterial pbr = (PbrMaterial) m;
            System.out.println("Node '" + node.getName() + "': PbrMaterial");
            System.out.println("  albedo=" + pbr.getAlbedo());
            System.out.println("  metallic=" + pbr.getMetallicFactor());
            System.out.println("  roughness=" + pbr.getRoughnessFactor());
        } else {
            System.out.println("Node '" + node.getName() + "': " + m.getClass().getSimpleName());
        }
    }
    for (Node child : node.getChildNodes()) {
        inspectNode(child);
    }
}

Pozri tiež

 Slovenčina