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 A3DObjectFbxSaveOptions
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 MaterialFbxSaveOptions
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
| FbxSaveOptions | FbxSaveOptions | FbxSaveOptions | FbxSaveOptions | FbxSaveOptions |
|---|---|---|---|---|
albedo | Vector4 | getAlbedo() | setAlbedo(Vector4) | Warna asas (albedo) permukaan dalam format RGBA. Lalai null. |
metallicFactor | double | getMetallicFactor() | setMetallicFactor(double) | Sumbangan logam: 0.0 = dielektrik penuh, 1.0 = logam penuh. |
roughnessFactor | double | getRoughnessFactor() | setRoughnessFactor(double) | Kekasaran permukaan: 0.0 = licin/cermin, 1.0 = sepenuhnya kasar. |
emissiveColor | Vector3 | getEmissiveColor() | setEmissiveColor(Vector3) | Warna cahaya yang dipancarkan sendiri. Lalai null. |
transparency | double | getTransparency() | 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);
}
}