有关默认相机转VR相机

呃...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 to cams.count do
    (
        if (classof cams[c] == Freecamera) or (classof cams[c] == Targetcamera) do 
        (
            YY_new_cam = copy YY_vrcam
            try cams[c].type = #free catch()
            YY_new_cam.rotation = cams[c].rotation
            YY_new_cam.pos = cams[c].pos
            append del_cam cams[c]
        )
    )
    delete YY_vrcam
    case 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 to cams.count 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  今天找到了解除物体关联的方法了:连接地址

转载于:https://www.cnblogs.com/3dxy/p/4222982.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值