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

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

Aspose.3D FOSS proporciona dos clases de material en la jerarquía clásica de sombreado:

  • LambertMaterial: sombreado mate difuso (sin especularidad)
  • PhongMaterial: extiende Lambert con reflejos especulares y brillo

Ambos se asignan a un Node a través de node.material. Los colores se establecen usando Vector3(r, g, b) donde los componentes están en [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`
transparencyfloatNivel de opacidad: 0.0 = totalmente opaco, 1.0 = totalmente transparente. Limitado a [0.0, 1.0].

PhongMaterial

class PhongMaterial(LambertMaterial):

Properties

A3DObjectMaterialLambertMaterialPhongMaterial

Hereda todo LambertMaterial propiedades y añade:

Propiedades adicionales

PropertiesPropertiesProperties
specular_color`Vector3None`
specular_factorfloatEscala de la contribución especular. Predeterminado 0.0.
shininessfloatExponente de brillo Phong. Mayor = reflejos más estrechos/pequeños. Predeterminado 0.0.
reflection_color`Vector3None`
reflection_factorfloatCantidad de mezcla para la reflexión. Predeterminado 0.0.

Ejemplos de uso

Material mate Lambert

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")

Material brillante Phong

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")

Material semitransparente

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

Leer material de la escena importada

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

Material PBR (Physically Based Rendering). Utilizado por glTF 2.0 y otros formatos compatibles con PBR. Asignado a un Node a través de node.material.

Properties

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

Properties

PropertiesPropertiesProperties
albedo`Vector3None`
albedo_texturecualquieraMapa de textura para el canal albedo.
normal_texturecualquieraTextura de mapa normal.
metallic_factorfloatContribución metálica: 0.0 = totalmente dieléctrico, 1.0 = totalmente metálico.
roughness_factorfloatRugosidad de la superficie: 0.0 = suave/espejo, 1.0 = totalmente rugoso.
metallic_roughnesscualquieraTextura combinada de metalicidad-aspereza (convención glTF: B=metallic, G=roughness).
occlusion_texturecualquieraTextura de oclusión ambiental.
occlusion_factorfloatIntensidad del efecto de oclusión ambiental.
emissive_texturecualquieraTextura emisiva para regiones autoiluminadas.
emissive_color`Vector3None`
transparencyfloatNivel de opacidad: 0.0 totalmente opaco, 1.0 totalmente transparente.

Método de clase

PropertiesTipo de retornoProperties
PbrMaterial.from_material(material)PbrMaterialConvierte un LambertMaterial o PhongMaterial a un PbrMaterial aproximación.

Referencia de API para Aspose.Slides FOSS para C++. Una biblioteca C++ libre y de código abierto para leer, crear y guardar presentaciones PowerPoint .pptx. Con licencia MIT, sistema de compilación CMake.

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")

Ver también

 Español