| Chih Lun's profile太陽咩咩的網誌PhotosBlogLists | Help |
|
December 20 [原創]球的rigging暫時還不能像Paul Neale做得那樣變態XD(他在球表面佈滿Ray的發射體來做變形)
滾動說實在的也少了一軸(也就是所謂的Direction)
不過應付一般動畫應該都OK吧
檔案在:
December 08 [MaxScript]bone平均切割工具 -- boneDevider----最近都在寫Script...上班太閒了嗎?XD
------------------------------------------------------------------------------------------------------------------------------------------------------------------
rollout Bone_devider "BoneDevider" width:170 height:80 ( global b_Parent global b_grandpa global b_child global startBonePos global boneChain = #() spinner spn_devide_num "" pos:[15,15] width:56 height:16 enabled:true range:[2,100,2] type:#integer scale:1 button btn_Start_devide "開始分段" pos:[16,43] width:134 height:22 label lbl1 "段數" pos:[84,16] width:58 height:20 on Bone_devider open do ( messagebox "選擇要分段的bone" title:"選" fn pickBoneOnly o = classof o == bonegeometry b_Parent = pickObject filter:pickBoneOnly if b_Parent != undefined then ( startBonePos = b_Parent.pos b_Child = b_Parent.children b_grandpa = try(b_parent.parent) catch() if b_Child.count>1 then return ( b_child = undefined messagebox "Selected Bone Contains more than one Children" title:"error" ) else () ) )--end of on rollout OPEN do on spn_devide_num changed val do spn_devide_num.value = val on btn_Start_devide pressed do ( undo on if b_child != undefined and b_Parent != undefined do ( for i = 1 to (spn_devide_num.value as integer )do ( norVec1 = normalize(b_child[1].pos - b_Parent.pos) OneSegLength = (length(b_Parent.pos-b_child[1].pos)) / (spn_devide_num.value as float) boneSequence = bonesys.createBone (startBonePos+OneSegLength*((i-1) as float)*norVec1) (startBonePos+OneSegLength*( i as float)*norVec1) [0,0,1] append boneChain bonesequence ) for j = ((spn_devide_num.value-1) as integer ) to 1 by -1 do ( boneChain[j+1].parent = boneChain[j] ) if b_grandpa != undefined then boneChain[1].parent = b_grandpa b_Child[1].parent = boneChain[(spn_devide_num.value) as integer] delete b_Parent ) ) --end of btn_Start_devide pressed event ) try (closeRolloutfloater Bone_deviderFloater)catch() Bone_deviderFloater = newRolloutFloater "Bone_devider" 170 100 addRollout Bone_devider Bone_deviderFloater November 29 [MaxScript]2D遊戲用--八方向算圖Script其實這是為了再現Snake大之前寫過的一個方便工具,把他寫成8.0以上也可以用的
,這個Script多虧了位於上海的海諾老師的幫助,才能這麼快就寫好(如果沒有他提示,我現在可能還卡死
在算圖輸出那個指令裡面...orz)
海諾老師的網站: http://66.29.111.56/bbs/index.php (八方媒體,專門的Max腳本開發)
原代碼:
rollout OctalRendeRoll "OctalRender" width:162 height:277 ( global Picked_CamObj global Camarray = #() fn filt_cam obj=superclassof obj==camera pickbutton btn_Cam "SelectCamera" width:138 height:32 filter:filt_cam
edittext edt1 "" width:116 height:21 across:2 button btn_save_path "Dir" width:38 height:20 align:#right label lbl1 "FileType:" align:#left offset:[0,4] across:2 dropdownlist lstFileType "" items:#("jpg","tif","tga","bmp") width:50 offset:[-30,0] label lbl0 "Range" align:#left label lbl2 "From" width:30 height:15 align:#left across:4 spinner spn_Ren_st "" width:40 height:16 range:[0,10000,0] type:#integer scale:1 align:#left label lbl3 "To" width:30 height:15 align:#right spinner spn_Ren_end "" width:40 height:16 range:[0,10000,2] type:#integer scale:1 align:#right label lbl4 "Every" width:44 height:15 across:3 align:#left spinner spn_step "" width:40 height:16 range:[1,100,1] type:#integer scale:1 align:#left offset:[-12,0] label lbl5 "Frame" width:44 height:15 offset:[-18,0] label lbl31 "Size:" width:44 height:15 align:#left spinner spn_Ren_width "" width:58 height:16 range:[0,10000,640] type:#integer scale:1 align:#left across:2 spinner spn_Ren_height "" width:58 height:16 range:[0,10000,480] type:#integer scale:1 align:#left button btn_Ren "Render" width:138 height:32 on btn_Cam picked obj do ( btn_Cam.text = obj.name Picked_CamObj = obj )--end btn_Cam picked on spn_Ren_st changed val do spn_Ren_st.value = val on spn_Ren_end changed val do spn_Ren_end.value = val on spn_step changed val do spn_step.value = val on spn_Ren_width changed val do spn_Ren_width.value = val on spn_Ren_width changed val do spn_Ren_height.value = val on btn_save_path pressed do ( fpath=getSavepath() if fpath != undefined do edt1.text = fpath+"\\" ) on btn_Ren pressed do
( delete $point* undo off poWorld = point() Picked_CamObj.parent = poWorld animate on ( at time 0 rotate poWorld (eulerAngles 0 0 0) at time 40 in coordsys local rotate poWorld (eulerAngles 0 0 180) at time 80 in coordsys local rotate poWorld (eulerAngles 0 0 180) ) local step = 10 Camarr = for t = 10 to 70 by step do at time t snapshot Picked_CamObj Camarray = $Cameras as array delete poWorld for h = 1 to Camarray.count do ( fname=(edt1.text+(h as string)+"."+lstFileType.items[1]) render camera:Camarray[h] fromframe:spn_Ren_st.value toframe:spn_Ren_end.value\ nthframe:spn_step.value outputwidth:spn_Ren_width.value outputheight:spn_Ren_height.value\ outputfile:fname ) deleteItem Camarray 1 delete Camarray )--end of btn_Ren pressed ) try(closeRolloutFloater OctalFloater)catch() OctalFloater = newRolloutFloater "OctalRender" 195 320 addRollout OctalRendeRoll OctalFloater [原創]蜈蚣Rigging Demo遊戲用的蜈蚣怪物,很可惜不能放出原始檔
用了FK/ SplineIK切換的方式,可以實現S型扭動前進以及甩尾巴,以及往後飛出掛掉的動作(掛掉是用Reactor的RagDoll模擬的) October 02 錄製教學3 Unwrap UVWmap 使用流程http://www.badongo.com/file/1485794 流程1.拆UV貼圖軸
http://www.badongo.com/file/1489040 流程2.繪製基本貼圖 (含企鵝原始檔. max 8.0以上適用)
August 31 SiegeTank Rigging Demohttp://www.youtube.com/watch?v=H2h0j-bPY7k
這是我最近做的星海爭霸的人類坦克車rigging
你可以下載原始檔來玩玩,(要等候30秒輸入認證碼下載),8.0以上適用
但是注意,不要把檔案拿來做教學以外的用途
要先安裝 Pen Attribute holder ,因為他要作用在腳架的 Pose to pose
August 08 我的Siggraph之行相簿如題,這次完全一個人行動,很刺激也很無助
一國的國力在這裡就可以看得一清二楚啦,
ADSK在Siggraph第三日還特別為日本User開闢一場說明會
ADSK User group的時候手扶梯前面還站一位日本接待,真是用心
韓國也有不少團來參加呢
唯讀聽到最少的就是中文了,我只有唯一跟偶遇的留學生問候兩句吧!
第三日還去上了3ds max master Class,全場只有我一個亞洲人XD
照到paul Neale了耶!! June 20 自動產生尾巴擺動的魚May 29 FK IK Switch雖然覺得實用性應該不高,不過就當作多一個學習的機會吧
做法簡單來講就是
1.有一個FK的骨架
2.一組IK的骨架(根部和FK的那組重疊)
3.IK的Handle鎖到FK的末端、IK的Target鎖到第二節的軸心
4.將這兩個鎖定用參數來控制
範例檔下載(8.0適用) (要等30秒)
March 08 一個詭異的修改器--Preserve在香港的max論壇偶然看見的,這個修改器要用在什麼地方呢?答案是用於調節mopher表情。
一般我們在調整臉部的morph target的時候,總是感覺有無數個點要拉,而且很容易拉得破破爛濫的,
這時候加個Relax?不不不,加個Preserve,Target指向原模型,就會看到你的Morph Target變得很平滑啦
,他的作用其實就是在比對點與點的資料,盡量做到跟原本模型一樣的平滑(大概) March 01 3ds max 8 SP2之越補越大洞此版修正了.................
Biped的骨盆,之前SP1跳出figure mode,如果骨盆有轉動,離開時不會回到frame0的位置
其他的小更動不太清楚................ February 23 Do the trick--如何模擬彈簧運動目前只有試到能夠單方向前進,中途轉彎似乎有困難
啟發:其實有時候不一定要用同一個物體,用Visability來騙也是可行的
主要做法:用Helix+Path Deform
做法:1.用線段做成拱僑形狀,並增加節點數量(使用Normalize spline)
2.為Helix做成的彈簧增加PathDeform修改器,路徑就是選剛才的拱形
3.0-60楨設Stretch增加的Key(碰到路徑的尾端為止),60-120偵設Stretch減少的Key
4.60-120設percent增加的Key,到此為止看起來就完成單次前進的動畫了
5.接下來有點複雜,也是關鍵所在,因為彈簧前進是一次頭朝上,另一次頭朝下的,螺旋的位
置會有不同,在最後一楨複製一個新的彈簧,將他壓成spline(也就是保有現在他的樣子)
,同時也將路徑複製一份,讓第一條跟第二條路徑的頭尾相接,但是第二條路徑要進入他線
編輯的模式下,將線段反轉方向。
6.之後再對第二個彈簧使用Path Deform,從第一個彈簧複製過來貼就好了,然後Key記得位移到
第120楨
7.設定可見度,第一個彈簧的可見度是0-120,第二個彈簧的可見度是121-240,以此類推。
應該沒辦法在第一個彈簧的最後一楨使用Mesher抓下來(Snapshot也是沒效果,會空白一片),將最後一楨變成Mesh物件再加Path Deform的話彈簧的型態會跑掉 February 18 CG Channel -Animation Series Vol.1--Man Walk Cycle入手XD很棒的純"Animation"教學片,全部都沒有用到3ds max的其他功能,整個1.5小時都是利用Character Studio在探討走路動作及Key的設定(Jonnathan真的是很厲害的一個Animator,厲害到連基本的茶壺按鈕在哪裡都不知道XD,據說他是Rainbow6及波斯王子的Animator,抖~)
,已經拜讀完畢了。
大致上的設定方式整理如下:(漏了很多細節)
1.以跨步作為一開始的初始動作(第0楨),然後複製到第三偵,頭跟尾一樣
第二偵做成鏡射的動作
2.利用 in between的功能,將原本只有三偵的動畫拉長為每個關鍵偵都各夾一個中間動作(所以總長變為 5楨)
3.中間動作增加前進的那腳抬起的動作
以此類推再度增加in between動作
這樣的設定方法對我很有啟發性,跟因為傳統的手繪動畫有異曲同工之妙,之前在網路上看的一個教學
http://www.keithlango.com/index.htm 他也是用Key Pose到 Key Pose的觀念在調整Key
|
|
|