Material and PbrMaterial — Aspose.3D FOSS for Java

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

Aspose.3D FOSS for Java iki malzeme sınıfı sağlar:

  • Material: tüm malzeme türleri için soyut temel sınıf. Bir ad ve sayısal ve renk parametreleri için bir özellik koleksiyonu sağlar.
  • PbrMaterial: Metalik, pürüzlülük, albedo ve ışık yayma özelliklerine sahip Fiziksel Tabanlı Render (PBR) malzemesi. glTF 2.0 ve diğer PBR‑destekli formatlar tarafından kullanılır.

Malzemeler bir Node aracılığıyla node.setMaterial(material).


Properties

public abstract class Material extends A3DObject

Properties

A3DObject -> Material

Material tüm malzeme türleri için soyut temeldir. Ad özelliğini ve bir Properties kullanıcı tanımlı meta veri koleksiyonunu sağlar. Siz doğrudan örneklemezsiniz Material doğrudan; kullanın PbrMaterial yerine.


PbrMaterial

public class PbrMaterial extends Material

Properties

A3DObject -> Material -> PbrMaterial

PBR (Fiziksel Tabanlı Render) malzeme. glTF 2.0 ve diğer PBR‑uyumlu formatlar tarafından kullanılır. Atanır: Node aracılığıyla node.setMaterial(material).

Properties

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

Properties

PropertiesPropertiesPropertiesPropertiesProperties
albedoVector4getAlbedo()setAlbedo(Vector4)Yüzeyin temel rengi (albedo) RGBA olarak. Varsayılan null.
metallicFactordoublegetMetallicFactor()setMetallicFactor(double)Metalik katkı: 0.0 = tamamen dielektrik, 1.0 = tamamen metalik.
roughnessFactordoublegetRoughnessFactor()setRoughnessFactor(double)Yüzey pürüzlülüğü: 0.0 pürüzsüz/ayna, 1.0 tamamen pürüzlü.
emissiveColorVector3getEmissiveColor()setEmissiveColor(Vector3)Kendi yaydığı ışık rengi. Varsayılan null.
transparencydoublegetTransparency()setTransparency(double)Opaklık seviyesi: 0.0 = tamamen opak, 1.0 = tamamen şeffaf.

Kullanım Örneği

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

Yarı Şeffaf PBR Malzeme

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

İçe Aktarılan Sahneden Malzeme Oku

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

Ayrıca Bakınız

 Türkçe