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 A3DObjectProperties
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 MaterialProperties
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
| Properties | Properties | Properties | Properties | Properties |
|---|---|---|---|---|
albedo | Vector4 | getAlbedo() | setAlbedo(Vector4) | Yüzeyin temel rengi (albedo) RGBA olarak. Varsayılan null. |
metallicFactor | double | getMetallicFactor() | setMetallicFactor(double) | Metalik katkı: 0.0 = tamamen dielektrik, 1.0 = tamamen metalik. |
roughnessFactor | double | getRoughnessFactor() | setRoughnessFactor(double) | Yüzey pürüzlülüğü: 0.0 pürüzsüz/ayna, 1.0 tamamen pürüzlü. |
emissiveColor | Vector3 | getEmissiveColor() | setEmissiveColor(Vector3) | Kendi yaydığı ışık rengi. Varsayılan null. |
transparency | double | getTransparency() | 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);
}
}