Open3D-GUI系列(DLC1)着色器
从源代码里摸出材质的默认值和类型,然后简单测试内置着色器对网格,点云和线集的效果,总结中附带显示三角网格的方案。
MaterialRecord材质属性表
渲染属性 | 默认值 | C++ |
---|---|---|
has_alpha | false | bool |
PBR属性 | 默认值 | C++ | Python |
---|---|---|---|
base_color | (1.f,1.f,1.f,1.f) | Eigen::Vector4f | numpy.ndarray[numpy.float32[4, 1]] |
base_metallic | 0.f | float | |
base_roughness | 1.f | float | |
base_reflectance | 0.5f | float | |
base_clearcoat | 0.f | float | |
base_clearcoat_roughness | 0.f | float | |
base_anisotropy | 0.f | float | |
thickness | 1.f | float | |
transmission | 1.f | float | |
absorption_color | (1.f,1.f,1.f) | Eigen::Vector3f | |
absorption_distance | 1.f | float | |
point_size | 3.f | float | |
line_width | 1.f | float | 备注:仅unlitLine着色器可用 |
albedo_img | std::shared_ptr<geometry::Image> | open3d.geometry.Image | |
normal_img | std::shared_ptr<geometry::Image> | open3d.geometry.Image | |
ao_img | std::shared_ptr<geometry::Image> | open3d.geometry.Image | |
metallic_img | std::shared_ptr<geometry::Image> | open3d.geometry.Image | |
roughness_img | std::shared_ptr<geometry::Image> | open3d.geometry.Image | |
reflectance_img | std::shared_ptr<geometry::Image> | open3d.geometry.Image | |
clearcoat_img | std::shared_ptr<geometry::Image> | open3d.geometry.Image | |
clearcoat_roughness_img | std::shared_ptr<geometry::Image> | open3d.geometry.Image | |
anisotropy_img | std::shared_ptr<geometry::Image> | open3d.geometry.Image | |
ao_rough_metal_img | std::shared_ptr<geometry::Image> | open3d.geometry.Image | |
gradient | std::shared_ptr<Gradient> | rendering.Gradient | |
scalar_min | 0.0f | float | |
scalar_max | 1.0f | float | |
sRGB_color | false | bool | |
aspect_ratio | 0.0f | float | |
ground_plane_axis | 0.f | float | |
generic_params | std::unordered_map<std::string, Eigen::Vector4f> | ||
generic_imgs | std::unordered_map<std::string, geometry::Image> | ||
shader | “defaultUnlit” | std::string |
实用shader
带光照
-
defaultLit/defaultLitTransparency
-
defaultLitSSR
不带光照
-
defaultUnlit/defaultUnlitTransparency
法向
-
normals
线段没有法向,不做测试
线段
-
unlitLine
网格和点云在这个着色器下效果与defaultUnlit一样
只有这个着色器可以改变线宽,更适合显示线集
梯度
-
unlitGradient
比较复杂的玩意儿,不会用,显示效果奇形怪状,直接开摆
总结:
类型 | 适用shader |
---|---|
网格 | defaultLit/defaultLitTransparency、normals |
点云 | defaultLit/defaultLitTransparency、normals、defaultUnlit/defaultUnlitTransparency |
线段 | 最好unlitLine,只有这个可以控制线宽 |
网格模型在defaultUnlit下显示像平片一样,但是通过和线集一起使用,可以清晰的显示出三角面片
附录:全部shader
-
defaultLit
-
defaultLitTransparency
-
defaultLitSSR
-
defaultUnlit
-
defaultUnlitTransparency
-
normals
-
depth
-
depthValue
-
unlitGradient
-
unlitSolidColor
-
unlitBackground
-
infiniteGroundPlane
-
unlitLine
-
unlitPolygonOffset