呃...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 今天找到了解除物體關聯的方法了: 連接地址
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
