zoukankan      html  css  js  c++  java
  • 有关默认相机转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  今天找到了解除物体关联的方法了:连接地址

  • 相关阅读:
    [gj]三国攻势图
    [svc]msmtp+mutt发附件,发邮件给多个人
    [sh]清理memcached缓存
    [svc]jdk1.7.0_13(系列)下载url
    [svc]linux查看主板型号及内存硬件信息
    [svc][op]如何查看当前Ubuntu系统的版本
    [svc][bg]phabricator-zh_CN汉化包
    [na]台式机装原版Win2008R2
    [svc]salt源码安装软件和yum安装软件
    JSTL的相关使用
  • 原文地址:https://www.cnblogs.com/3dxy/p/4222982.html
Copyright © 2011-2022 走看看