呃...15年开篇~
去年想写一个有关默认相机转VR相机的脚本,当时没写完,今天不小心翻到并写完了,而且思路也和原来完全不一样了,增加了是否删除原相机与是否转换所选相机的选项.
由于国内VR版本比较混乱,中间加了个中英文版本的适配.
fn cam_to_vrcam sel:#off del:#on = (local sel_cam = #()local del_cam = #()case sel of(#off : cams = cameras#on : cams = sel_cam + selection)case of((VRayPhysicalCamera != undefined) : YY_vrcam = VRayPhysicalCamera isSelected:on(VR物理摄影机 != undefined) : YY_vrcam = VR物理摄影机 isSelected:on(VR_物理摄影机 != undefined) : YY_vrcam = VR_物理摄影机 isSelected:on-- default: )for c=1 unt do(if (classof cams[c] == Freecamera) or (classof cams[c] == Targetcamera) do (YY_new_cam = copy YY_vrcamtry cams[c].type = #free catch()YY_ation = cams[c].rotationYY_new_cam.pos = cams[c].posappend del_cam cams[c]))delete YY_vrcamcase del of(#on : for d in del_cam do delete d#off : ()) )--将默认相机转化为VR物理相机 cam_to_vrcam sel:#on del:#on
找到更简单的方法再继续修改~
----------------------------------------------------------------------------
在测试中发现一些问题:try cams[c].type = #free catch()
当将目标相机转换为自由相机时,目标点就不存在了,原来 selection 的物体会发生变化.
后来发现更简单的方法 baseobject 可以获得节点的原始对象的类别.而不像 classOf() 函数返回的是对象类的最终状态(堆栈的顶部).
fn cam_to_vrcam sel:#off = (case sel of(#off : cams = cameras#on : cams = selection)case of((VRayPhysicalCamera != undefined) : YY_vrcam = VRayPhysicalCamera()(VR物理摄影机 != undefined) : YY_vrcam = VR物理摄影机()(VR_物理摄影机 != undefined) : YY_vrcam = VR_物理摄影机()default : messagebox "V-Ray版本不支持!")for c=1 unt do(if (classof cams[c] == Freecamera) or (classof cams[c] == Targetcamera) do(try cams[c].baseobject = YY_vrcam catch()))delete YY_vrcam )--将默认相机转化为VR物理相机 cam_to_vrcam sel:#on
不过这个方法转换的相机都是关联的,以后在修改.
2015-01-30 今天找到了解除物体关联的方法了:连接地址
转载于:.html
本文发布于:2024-01-28 12:13:57,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064152437342.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |