在Open3D的可视化模块中,open3d.visualization.Material
类被用来描述渲染物体的材料属性。在该类中,set_default_properties
方法用于设置默认的材料属性,确保未给定材料属性时使用的是合适的默认属性。
Material.set_default_properties(
vertex_shader=str,
fragment_shader=str,
base_color=np.ndarray,
metallic=float,
roughness=float,
reflectance=float
)
vertex_shader
:顶点着色器的文件路径或字符串,该顶点着色器将应用于材料的顶点。fragment_shader
:片元着色器的文件路径或字符串,该片元着色器将应用于材料的片段。base_color
:代表材料的基准颜色的三元组或RGBA四元组。metallic
:代表材料的金属度的标量,在范围[0, 1]内。roughness
:代表材料的粗糙度的标量,在范围[0, 1]内。reflectance
:代表材料的反射率的标量,在范围[0, 1]内。该方法没有返回值。
import open3d.visualization as vis
import numpy as np
# 设置默认材料属性
vis.Material.set_default_properties(
vertex_shader='my_vertex_shader.glsl',
fragment_shader='my_fragment_shader.glsl',
base_color=np.array([0.5, 0.5, 0.5]),
metallic=0.0,
roughness=0.5,
reflectance=0.1
)
# 创建一个球体物体
sphere = vis.geometry.TriangleMesh.create_sphere(radius=1.0)
# 渲染球体物体
vis.draw_geometries([sphere])
在上面的示例中,我们使用set_default_properties
方法来设置默认材料属性。然后,我们创建一个球体对象并将其呈现出来,因为我们没有为球体指定任何材料属性,因此默认的材料属性将被使用。
ValueError
:如果metallic
、roughness
或reflectance
的值不在[0,1]的范围内,则会引发此异常。open3d.visualization.Material
类:用于描述渲染物体的材料属性。open3d.visualization.rendering.Shader
类:用于描述着色器程序。open3d.visualization.rendering.Attribute
类:用于描述渲染物体用到的属性。(在着色器程序中声明的属性)0.10.0以上版本支持该方法。