2015년 2월 10일 화요일

애니메이션 본 최적화

바이패드 복사 본 만들기 ver0.2

bips = #()
bons = #()
boneName = ""
boundingBox = undefined
bipLength = undefined
bipwidth = undefined
bipheight = undefined
objs = selection as array

fn changeName strs oldStr newStr =
(
 findFlag = findstring strs oldStr
 if (findFlag != undefined) do
 (
changeStr = replace strs findFlag oldStr.count newStr
 )
 changeStr
)


for i = 1 to objs.count do
(
if((classof objs[i] == Biped_Object) and (objs[i].name != "Bip01 Footsteps")) do append bips objs[i]
)

clearSelection()

for i = 1 to bips.count do
(
boneName = bips[i].name

boneName = changeName boneName "bip" "bone"

boundingBox = nodeGetBoundingBox bips[i]bips[i].transform
bipLength = boundingBox[2].x
bipheight = boundingBox[2].y
bipwidth = boundingBox[2].z
madeBone = Bonesys.createBone[0,0,0][1,0,0][0,0,1]
madeBone.name = boneName
madeBone.width = bipWidth
madeBone.height = bipheight
madeBone.length = bipLength
madeBone.boxmode = on
madeBone.rotation = (inverse(biped.getTransform bips[i] #rotation))
madeBone.position = (bips[i].transform.pos)
madeBone.position.controller = Position_Constraint()
madeBone.position.controller.appendTarget bips[i] 50.0
madeBone.rotation.controller= Orientation_Constraint()
madeBone.rotation.controller.appendTarget bips[i] 50.0

append bons madeBone
)

for i = 1 to bips.count do
(
if(bips[i].parent != undefined) do
(
parentBip = bips[i].parent
boneName = parentBip.name

boneName = changeName boneName "bip" "bone"

bons[i].parent = execute("$'" + boneName + "'")
)
)

select bons


사용법은

1. 바이패드를 생성한 후에 선택을 한다.

2. 스크립트를 실행하면 바이패드선택이 해제 되고 흉내내기 본이 만들어진 후에 본이 선택된다.

3. 구조는 'Bip01 Footsteps'을 제외하고 모두 동일하다.

4. 노드의 이름은 'Bip'를 'Bone'로 변경하고 나머지는 동일하게 생성한다.

5. 기본적으로 바이패드의 링크 구조를 따르면서 바이패드를 움직이면 본이 따라 움직인다.

6. 바이패드 일부만 선택하고 실행해도

 7. 정상적으로 생성된다.

8. 링크 구조도 정상적으로 생성된다.

댓글 1개:

  1. 아는 아는 사람을 통해서 물어보니 이방법을 쓰는데 가 있다하여 정보를 찾고 찾다 찾은 정보~~
    적용은 안햇지만 실용 가능성이 높은 방법인 듯

    답글삭제