Material
Aspose.3D FOSS klasik gölgelendirme hiyerarşisinde iki malzeme sınıfı sağlar:
LambertMaterial: difüz mat gölgelendirme (parlaklık yok)PhongMaterial: Lambert’i speküler vurgular ve parlaklıkla genişletir
İkisi de bir Node aracılığıyla node.material. Renkler şununla ayarlanır Vector3(r, g, b) bileşenlerin olduğu yer [0.0, 1.0].
LambertMaterial
class LambertMaterial(Material):A3DObject → Material → LambertMaterial
LambertMaterial(name: str = None)| Name | Type | Access | Description |
|---|---|---|---|
name | str | Read/Write | Gets or sets the name. |
properties | PropertyCollection | Read | Gets the properties. |
PhongMaterial
class PhongMaterial(LambertMaterial):A3DObject → Material → LambertMaterial → PhongMaterial
Hepsini devralır LambertMaterial özellikler ve ekler:
Ek Özellikler
| Signature | Description |
|---|---|
__init__(name: str) | |
get_texture(slot_name: str) | Not implemented in the FOSS edition — throws at runtime. Retrieves the texture assigned to the specified slot name |
set_texture(slot_name: str, texture) | Not implemented in the FOSS edition — throws at runtime. Sets the texture value. |
find_property(property_name: str) | |
get_property(property: str) | |
set_property(property: str, value) | Sets the property value. |
remove_property(property) |
Kullanım Örnekleri
Lambert Mat Malzeme
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")Phong Parlak Malzeme
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")Yarı Şeffaf Malzeme
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İçe Aktarılan Sahneden Malzeme Oku
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):A3DObject → Material → PbrMaterial
PBR (Fiziksel Tabanlı Render) malzemesi. glTF 2.0 ve diğer PBR‑uyumlu formatlar tarafından kullanılır. Birine atanır Node aracılığıyla node.material.
PbrMaterial(name: str = None, albedo: Vector3 = None)Sınıf Metodu
Kullanım Örneği
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")