Blender 2.7 如何使用脚本查找聚光灯外观/目标

Posted

技术标签:

【中文标题】Blender 2.7 如何使用脚本查找聚光灯外观/目标【英文标题】:Blender 2.7 how to find spotlight lookAt/target using script 【发布时间】:2016-04-30 13:44:22 【问题描述】:

我很难弄清楚如何找到聚光灯观察点/目标点。我需要它在文件中导出一些光照信息,以便我能够将它们与 OpenGL 一起使用并渲染场景。

到目前为止有这个代码

with open(bpy.path.abspath("//Taest.txt"), "w", encoding="utf8", newline="\n") as f:
        fw = f.write
        #fw("testing file write")
        #for ob in bpy.context.scene.objects:
        for ob in bpy.data.objects:
            if ob.type == "LAMP" :
                la = ob.data

                fw(la.type + " " + la.name + "\n")
                fw(vec3ToStr(ob.location) + "\n")
                fw(colorToStr(la.color) + "\n")
                fw(str(la.energy) + "\n")

                #if la.type == "AREA" :
                #    print("\tAREA " + la.name)

                if la.type == "POINT" :
                    fw(str(la.distance) + "\n")
                    fw(str(la.quadratic_attenuation) + "\n")
                    fw(str(la.linear_attenuation) + "\n")


                if la.type == "SPOT" :
                    fw(str(la.distance) + "\n")
                    fw(str(la.quadratic_attenuation) + "\n")
                    fw(str(la.linear_attenuation) + "\n")
                    fw(str(la.spot_size) + "\n")
                    #empty = bpy.data.meshes.ne(type='PLAIN_AXES')
                    me = bpy.data.meshes.new("test Mesh")
                    obn = bpy.data.objects.new("test Obj" , me)
                    scn = bpy.context.scene
                    scn.objects.link(obn)
                    obn.location = ob.location #ob.shadow_buffer_clip_end <<< this is where i have trouble figuring out what to do ??
                    fw(vec3ToStr(me .location) + "\n") 
                    obn.delete()

解决了

mat = ob.matrix_world
            end = mat * Vector((0, 0, -la.shadow_buffer_clip_end))
            fw(vec3ToStr(end) + "\n")

【问题讨论】:

发布您的答案作为问题的答案并接受它。 【参考方案1】:

解决了

mat = ob.matrix_world
            end = mat * Vector((0, 0, -la.shadow_buffer_clip_end))
            fw(vec3ToStr(end) + "\n")

如果您需要,相机外观也是如此

mat = ob.matrix_world
        end = mat * Vector((0, 0, -la.shadow_buffer_clip_end))
        fw(vec3ToStr(end) + "\n")

【讨论】:

以上是关于Blender 2.7 如何使用脚本查找聚光灯外观/目标的主要内容,如果未能解决你的问题,请参考以下文章

在 Blender 中运行 python 脚本

如何运行带有blender参数的python脚本?

如果在后台执行脚本,如何在 Blender Python 上使用旋转运算符?

如何在 Blender 中使用 python 创建无缝背景?

Blender 的 Python 脚本:获取渲染信息

在 Blender 脚本中测量路径长度?