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

Blog


    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