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

A3DObjectMaterialLambertMaterial

Properties

LambertMaterial(name: str = None)

Properties

PropertiesPropertiesProperties
ambient_color`Vector3None`
diffuse_color`Vector3None`
emissive_color`Vector3None`
transparent_color`Vector3None`
transparencyfloatअपारदर्शिता स्तर: 0.0 = पूरी तरह अपारदर्शी, 1.0 = पूरी तरह पारदर्शी। क्लैम्प्ड टू [0.0, 1.0].

PhongMaterial

class PhongMaterial(LambertMaterial):

Properties

A3DObjectMaterialLambertMaterialPhongMaterial

सभी को विरासत में लेता है LambertMaterial गुण और जोड़ता है:

scale()

PropertiesPropertiesProperties
specular_color`Vector3None`
specular_factorfloatस्पेक्यूलर योगदान का स्केल। डिफ़ॉल्ट 0.0.
shininessfloatफ़ोंग चमक एक्सपोनेंट। उच्च = अधिक सघन/छोटे हाइलाइट्स। डिफ़ॉल्ट 0.0.
reflection_color`Vector3None`
reflection_factorfloatप्रतिबिंब के लिए ब्लेंड मात्रा। डिफ़ॉल्ट 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

A3DObjectMaterialPbrMaterial

PBR (फ़िज़िकली बेस्ड रेंडरिंग) सामग्री। glTF 2.0 और अन्य PBR-सक्षम फ़ॉर्मैट्स द्वारा उपयोग किया जाता है। एक को असाइन किया गया Node के माध्यम से node.material.

Properties

PbrMaterial(name: str = None, albedo: Vector3 = None)

Properties

PropertiesPropertiesProperties
albedo`Vector3None`
albedo_textureकोई भीएल्बीडो चैनल के लिए टेक्सचर मैप।.
normal_textureकोई भीनॉर्मल मैप टेक्सचर।.
metallic_factorfloatधातु योगदान: 0.0 = पूरी तरह dielectric, 1.0 = पूरी तरह metallic.
roughness_factorfloatसतह रफ़नेस: 0.0 = स्मूथ/मिरर, 1.0 = पूरी तरह रफ़.
metallic_roughnessकोई भीसंयुक्त metallic-roughness टेक्सचर (glTF सम्मेलन: B=metallic, G=roughness).
occlusion_textureकोई भीएम्बिएंट ऑक्लूज़न टेक्सचर।.
occlusion_factorfloatएम्बिएंट ऑक्लूज़न प्रभाव की शक्ति।.
emissive_textureकोई भीस्व-प्रकाशित क्षेत्रों के लिए इमिसिव टेक्सचर।.
emissive_color`Vector3None`
transparencyfloatअपारदर्शिता स्तर: 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")

संबंधित देखें

 हिन्दी