LambertMaterial and PhongMaterial — Aspose.3D FOSS for Python API Reference

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

Aspose.3D FOSS دو کلاس متریال در سلسله‌مراتب کلاسیک سایه‌زنی ارائه می‌دهد:

  • LambertMaterial: سایه‌زنی مات پخش (بدون براقیت)
  • PhongMaterial: گسترش Lambert با هایلایت‌های Specular و درخشندگی

هر دو به یک 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 ویژگی‌ها و اضافه می‌کند:

ویژگی‌های اضافی

PropertiesPropertiesProperties
specular_color`Vector3None`
specular_factorfloatمقیاس مشارکت Specular. پیش‌فرض 0.0.
shininessfloatتوان شفافیت Phong. مقدار بالاتر = هایلایت‌های تنگ‌تر/کوچک‌تر. پیش‌فرض 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 = کاملاً دی الکتریک،, 1.0 = کاملاً فلزی.
roughness_factorfloatسطح زبرگی: 0.0 = صاف/آینه‌ای،, 1.0 = کاملاً خشن.
metallic_roughnessهربافت ترکیبی فلزی-خشن (قواعد glTF: B=فلزی، G=خشن).
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")

همچنین ببینید

 فارسی