Chih Lun's profile太陽咩咩的網誌PhotosBlogLists Tools Help

Chih Lun kang

Interests
I am ....nobody....
Photo 1 of 6
January 01

[原創][遊戲用]快速製作尾巴甩動的Script

 
跨年煙火真漂亮,
元旦一整天都在看日劇。
我現在才把塵封已久的Good Luck拿出來看,感動到不行XD,香田真是帥氣阿阿
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以上適用)
 
September 23

錄製教學2--伸縮門的設置

不要問那些數值怎麼得出來的XD,就先在旁邊慢慢試,然後用筆把他記下來
August 31

SiegeTank Rigging Demo

http://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了耶!!
July 11

上次的作品,動畫化囉.....

 
我偷了涼宮的配音XD
好想找日本的聲優來幫她配音壓!!
May 29

FK IK Switch

雖然覺得實用性應該不高,不過就當作多一個學習的機會吧
做法簡單來講就是
1.有一個FK的骨架
2.一組IK的骨架(根部和FK的那組重疊)
3.IK的Handle鎖到FK的末端、IK的Target鎖到第二節的軸心
4.將這兩個鎖定用參數來控制
範例檔下載(8.0適用)  (要等30秒)
May 28

卡通式的手臂Rig

恩.....好像還有其他的設置方法.....
不過目前就先暫時這樣子吧

新作...

不知道什麼時候會被擠掉....
貼給十幾個人看過,我還真是愛現XD
目前在做他的表情設定....
 
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
 
January 24

好作品介紹--國際妖怪警察OKEI,動態漫畫

畫風很不像傳統日系的東西,感覺很前衛
我很喜歡他的結合高科技軍武跟日本傳統妖怪的幻想情節
背景音樂讓我想起以前超任的一款遊戲:奇奇怪界
 
January 23

發現一個不錯的教學網誌--矽智數碼(內有Tips&Tricks)

技術性很高,大陸不愧是P2P的發源地啊,說要誕生這種高手也不是不可能啊~
 
補他其中的一篇教學,利用Symmetry和SkinWarp來做對稱表情,概述如下:
1.把臉部模型按Ctrl+V複製一個,然後對他加Symmetry(接近中央的雜點要先清乾淨)
2.原來那個臉加Skin Warp,選加了Symmetry的那個臉
3.對那個加了Symmetry的臉作修改,按Show Result就可以看到加了Skin Warp的臉有了對稱的表情
4.最後,在模型結構都沒有改變的情況下,就可以對修改好的做成Morph Target啦~
 
小Note:加了Symmetry的臉不要拉超過中間線,否則一樣會胡成一團....
 
January 18

cg talk Spectacular 票選結果

太恐怖了,神人一堆,而且我看好的那張竟然沒被選上
January 15

3ds max 8 Service PacK1 下載

修正了很多的BUG,包括spline 無法Refine ,Biped無法貼一整段Clip等等的功能