Blender使用经验总结

1.在使用Python二次开发时,可以借助Script面板中输出操作调用的python script信息。比如你在场景中添加一个模型,面板中可以看到操作代码(有些代码可能是看不到)。想写某个代码,可以先操作下,把生产的过程语句复制script编辑器中运行(有些时候需要根据情况稍微改一下代码,至少给你写代码相当于粗略写了一下)
2.是用自动补齐功能。比如在使用bpy.ops.wm.obj_import不知道后面的参数.你可以将代码复制到python命令行窗口,bpy.ops.wm.obj_import( 然后右键补齐,就能列出函数后面的参数.在编写python代码时很有用。

遇到的问题

1.py.ops.wm.obj_import这个接口在3.3以后的版本,到入的obj再到出的gltf再gltfviewr中浏览。模型很暗。bpy.ops.import_scene.obj导出的模型虽然光照没问题,但是纹理有错位。
2.如何让模型显示自己真实位置。【Object】|【Set Origin】|【Origin to Geometry】
3.解决导出的gltf在gltfViewer中模型暗的问题,主要是将Principled BSDF中材质Transmission属性由1改为0即可:

def resetMeteriaParam():
    for obj in bpy.data.objects:
        if obj.type=='MESH':
            material_slots = obj.material_slots
            for index in range(0,len(material_slots)):
                material= material_slots[index].material
                print(material)
                principled_node=None
                for node in material.node_tree.nodes:
                    if node.type=="BSDF_PRINCIPLED":
                        principled_node=node
                        break
                if principled_node is not None:
                    inputs = node.inputs #访问 Material 对象的 node_tree。 并获取节点“Principled BSDF”并获取节点的输入
                    for i in inputs:
                        if i.name=="Transmission":                                      				            
                            transmission_value=inputs["Transmission"].default_value
                            print(transmission_value)
                            inputs["Transmission"].default_value=0
                            print(inputs["Transmission"].default_value)
                            print(i)                            
                         if i.name=="Transmission Weight":   
                            inputs["Transmission Weight"].default_value=0
                          if i.name=="Metallic":   
                            inputs["Metallic"].default_value=0
                         
                  

后续补充:
Obj和Fbx导出gltf有个参数metallicFactor也会影响明暗程度。obj默认时0明亮,fbx导出时默认是1暗的。所以为避免默认情况。同意设置为0.
参考
Cesium中glb模型颜色暗淡解决

Blender Python

  • Blender 目录下的scripts可以作为优先学习资源
  • 其他参考链接

Blender Python程序化建模教程
[Blender Python] 模型文件导入导出
Blender材质处理Python API
How to get material with Python API in Blender
https://s-nako.work/category/blender/ (这个博客园写了大量关于Python 操作Blender代码)

Blener中执行python几种方式

  • Python Console

    是python 命令交互窗。

    • 按Tab键推测可能后续代码
    • 选中命令行语句右键可以补齐代码
  • Scripting 工具栏

    可以编写python并进行调试

  • Blender执行外部 python 脚本

Blender.exe -b -P xxx.py

BSDF相关知识汇总

【基于物理的渲染(PBR)白皮书】(一) 开篇:PBR核心知识体系总结与概览
【基于物理的渲染(PBR)白皮书】(二) PBR核心理论与渲染光学原理总结
【基于物理的渲染(PBR)白皮书】(三)迪士尼原则的BRDF与BSDF相关总结
【渲染】Disney BSDF 深度解析

参考链接

posted @ 2024-03-22 23:58  焦涛  阅读(124)  评论(0)    收藏  举报