Material and PbrMaterial — Aspose.3D FOSS for Java

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

Aspose.3D FOSS for Java menyediakan dua kelas bahan:

  • Material: kelas asas abstrak untuk semua jenis bahan. Menyediakan nama dan koleksi sifat untuk parameter berangka dan warna.
  • PbrMaterial: bahan Physically Based Rendering dengan sifat metalness, roughness, albedo, dan emissive. Digunakan oleh glTF 2.0 dan format lain yang menyokong PBR.

Bahan-bahan diberikan kepada satu Node melalui node.setMaterial(material).


FbxSaveOptions

public abstract class Material extends A3DObject

FbxSaveOptions

A3DObject -> Material

Material adalah asas abstrak untuk semua jenis bahan. Ia menyediakan sifat nama dan satu Properties koleksi untuk metadata yang ditakrifkan pengguna. Anda tidak membuat contoh Material secara langsung; gunakan PbrMaterial sebagai gantinya.


PbrMaterial

public class PbrMaterial extends Material

FbxSaveOptions

A3DObject -> Material -> PbrMaterial

Bahan PBR (Physically Based Rendering). Digunakan oleh glTF 2.0 dan format lain yang menyokong PBR. Diberikan kepada satu Node melalui node.setMaterial(material).

FbxSaveOptions

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

FbxSaveOptions

FbxSaveOptionsFbxSaveOptionsFbxSaveOptionsFbxSaveOptionsFbxSaveOptions
albedoVector4getAlbedo()setAlbedo(Vector4)Warna asas (albedo) permukaan dalam format RGBA. Lalai null.
metallicFactordoublegetMetallicFactor()setMetallicFactor(double)Sumbangan logam: 0.0 = dielektrik penuh, 1.0 = logam penuh.
roughnessFactordoublegetRoughnessFactor()setRoughnessFactor(double)Kekasaran permukaan: 0.0 = licin/cermin, 1.0 = sepenuhnya kasar.
emissiveColorVector3getEmissiveColor()setEmissiveColor(Vector3)Warna cahaya yang dipancarkan sendiri. Lalai null.
transparencydoublegetTransparency()setTransparency(double)Tahap kelegapan: 0.0 = sepenuhnya legap, 1.0 = sepenuhnya telus.

Contoh Penggunaan

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");

Bahan PBR Separuh Lutsinar

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);

Baca Bahan dari Adegan Terimport

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);
    }
}

Lihat Juga

 Bahasa Melayu