有关默认相机转VR相机

系统 1669 0

呃...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  今天找到了解除物体关联的方法了: 连接地址

有关默认相机转VR相机


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论