LambertMaterial and PhongMaterial — Aspose.3D FOSS for Python API Reference
Properties: aspose.threed.shading (aspose-3d-foss)
Aspose.3D FOSS क्लासिक शेडिंग पदानुक्रम में दो मैटेरियल क्लासेस प्रदान करता है:
LambertMaterial: डिफ्यूज़ मैट शेडिंग (कोई स्पेक्युलैरिटी नहीं)PhongMaterial: लैम्बर्ट को स्पेक्युलर हाइलाइट्स और शाइननेस के साथ विस्तारित करता है
दोनों को एक को सौंपा जाता है Node के माध्यम से node.material. रंग सेट करने के लिए उपयोग किया जाता है Vector3(r, g, b) जहाँ घटक हैं [0.0, 1.0].
LambertMaterial
class LambertMaterial(Material):Properties
A3DObject → Material → LambertMaterial
Properties
LambertMaterial(name: str = None)Properties
| Properties | Properties | Properties |
|---|---|---|
ambient_color | `Vector3 | None` |
diffuse_color | `Vector3 | None` |
emissive_color | `Vector3 | None` |
transparent_color | `Vector3 | None` |
transparency | float | अपारदर्शिता स्तर: 0.0 = पूरी तरह अपारदर्शी, 1.0 = पूरी तरह पारदर्शी। क्लैम्प्ड टू [0.0, 1.0]. |
PhongMaterial
class PhongMaterial(LambertMaterial):Properties
A3DObject → Material → LambertMaterial → PhongMaterial
सभी को विरासत में लेता है LambertMaterial गुण और जोड़ता है:
scale()
| Properties | Properties | Properties |
|---|---|---|
specular_color | `Vector3 | None` |
specular_factor | float | स्पेक्यूलर योगदान का स्केल। डिफ़ॉल्ट 0.0. |
shininess | float | फ़ोंग चमक एक्सपोनेंट। उच्च = अधिक सघन/छोटे हाइलाइट्स। डिफ़ॉल्ट 0.0. |
reflection_color | `Vector3 | None` |
reflection_factor | float | प्रतिबिंब के लिए ब्लेंड मात्रा। डिफ़ॉल्ट 0.0. |
उपयोग उदाहरण
लैम्बर्ट मैट सामग्री
from aspose.threed import Scene
from aspose.threed.entities import Mesh
from aspose.threed.shading import LambertMaterial
from aspose.threed.utilities import Vector3, Vector4
scene = Scene()
# Build a simple triangle mesh
mesh = Mesh()
mesh.control_points.append(Vector4(0, 0, 0, 1))
mesh.control_points.append(Vector4(1, 0, 0, 1))
mesh.control_points.append(Vector4(0.5, 1, 0, 1))
mesh.create_polygon(0, 1, 2)
# Create a matte red material
mat = LambertMaterial("red-matte")
mat.diffuse_color = Vector3(0.8, 0.1, 0.1) # R, G, B in [0, 1]
mat.ambient_color = Vector3(0.1, 0.05, 0.05)
node = scene.root_node.create_child_node("triangle", mesh)
node.material = mat
scene.save("lambert.obj")फ़ोंग चमकदार सामग्री
from aspose.threed import Scene
from aspose.threed.entities import Mesh
from aspose.threed.shading import PhongMaterial
from aspose.threed.utilities import Vector3, Vector4
scene = Scene()
mesh = Mesh()
mesh.control_points.append(Vector4(0, 0, 0, 1))
mesh.control_points.append(Vector4(1, 0, 0, 1))
mesh.control_points.append(Vector4(0.5, 1, 0, 1))
mesh.create_polygon(0, 1, 2)
mat = PhongMaterial("shiny-blue")
mat.diffuse_color = Vector3(0.1, 0.2, 0.8) # blue
mat.specular_color = Vector3(1.0, 1.0, 1.0) # white highlights
mat.specular_factor = 0.5
mat.shininess = 64.0 # tight specular lobe
mat.ambient_color = Vector3(0.05, 0.05, 0.1)
node = scene.root_node.create_child_node("mesh", mesh)
node.material = mat
scene.save("phong.obj")अर्ध-पारदर्शी सामग्री
from aspose.threed.shading import LambertMaterial
from aspose.threed.utilities import Vector3
mat = LambertMaterial("glass")
mat.diffuse_color = Vector3(0.7, 0.9, 1.0) # faint blue tint
mat.transparency = 0.7 # 70% transparentआयातित सीन से सामग्री पढ़ें
from aspose.threed import Scene
from aspose.threed.shading import LambertMaterial, PhongMaterial
scene = Scene()
scene.open("model.obj")
def inspect_node(node):
if node.material:
m = node.material
kind = "Phong" if isinstance(m, PhongMaterial) else "Lambert"
print(f"Node '{node.name}': {kind}: diffuse={m.diffuse_color}")
if isinstance(m, PhongMaterial):
print(f" shininess={m.shininess}")
for child in node.child_nodes:
inspect_node(child)
inspect_node(scene.root_node)PbrMaterial
class PbrMaterial(Material):Properties
A3DObject → Material → PbrMaterial
PBR (फ़िज़िकली बेस्ड रेंडरिंग) सामग्री। glTF 2.0 और अन्य PBR-सक्षम फ़ॉर्मैट्स द्वारा उपयोग किया जाता है। एक को असाइन किया गया Node के माध्यम से node.material.
Properties
PbrMaterial(name: str = None, albedo: Vector3 = None)Properties
| Properties | Properties | Properties |
|---|---|---|
albedo | `Vector3 | None` |
albedo_texture | कोई भी | एल्बीडो चैनल के लिए टेक्सचर मैप।. |
normal_texture | कोई भी | नॉर्मल मैप टेक्सचर।. |
metallic_factor | float | धातु योगदान: 0.0 = पूरी तरह dielectric, 1.0 = पूरी तरह metallic. |
roughness_factor | float | सतह रफ़नेस: 0.0 = स्मूथ/मिरर, 1.0 = पूरी तरह रफ़. |
metallic_roughness | कोई भी | संयुक्त metallic-roughness टेक्सचर (glTF सम्मेलन: B=metallic, G=roughness). |
occlusion_texture | कोई भी | एम्बिएंट ऑक्लूज़न टेक्सचर।. |
occlusion_factor | float | एम्बिएंट ऑक्लूज़न प्रभाव की शक्ति।. |
emissive_texture | कोई भी | स्व-प्रकाशित क्षेत्रों के लिए इमिसिव टेक्सचर।. |
emissive_color | `Vector3 | None` |
transparency | float | अपारदर्शिता स्तर: 0.0 = पूरी तरह अपारदर्शी, 1.0 = पूरी तरह पारदर्शी।. |
क्लास मेथड
| Properties | रिटर्न टाइप | Properties |
|---|---|---|
PbrMaterial.from_material(material) | PbrMaterial | एक को परिवर्तित करता है LambertMaterial या PhongMaterial एक को PbrMaterial अनुमान।. |
उपयोग उदाहरण
from aspose.threed import Scene
from aspose.threed.entities import Mesh
from aspose.threed.shading import PbrMaterial
from aspose.threed.utilities import Vector3, Vector4
scene = Scene()
mesh = Mesh()
mesh.control_points.append(Vector4(0, 0, 0, 1))
mesh.control_points.append(Vector4(1, 0, 0, 1))
mesh.control_points.append(Vector4(0.5, 1, 0, 1))
mesh.create_polygon(0, 1, 2)
mat = PbrMaterial("pbr-metal")
mat.albedo = Vector3(0.8, 0.6, 0.2) # gold-ish base color
mat.metallic_factor = 0.9
mat.roughness_factor = 0.2
node = scene.root_node.create_child_node("mesh", mesh)
node.material = mat
scene.save("pbr.glb")