2013년 12월 22일 일요일

바이패드 복사 본 만들기 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. 본이름을 생성할때 이름을 정할 수 있도록 할것.
2. 목이 머리와 가슴의 중간값을 유지하도록 하는것.(이건 고민좀 할것 같다.)
3. 어께 손목 허벅지등의 트위스트 본 추가 선택.

2013년 12월 20일 금요일

앨런웨이크 아메리칸 나이트메어

얼마전 컴퓨터를 업그레이드하면서, 그간 성늘때문에 못하고, 손가락만 빨던게임들을 스팀을 통해 마구마구 구입했다.
숙제를 하듯이 게임을 틈틈히 속성으로 진행하다보니 요 몇일 게임 불감증(?)이 살짝 왔다.

그러다 오늘 대박으로 필 받은 게임 있으니 바로 '앨런웨이크 아메리칸 나이트메어'다.
두둥~~~
전작 '앨런웨이크'도 상당히 수작이었지만, 중간에 스토리가 늘어지면서 지루해지는 느낌이 들었다.(그래도 수작은 수작이다.)

그런데 후속작(떡밥수습 뒷 얘기에 가까움)은 나이트메어라는 이름에 어울리게(플레이 해보면 안다) 짧고 굵게 지루하지 않게(마음먹는다면 하루면 클리어 할수 있다.)  진행되면서 이야기의 흐름도 짜임세 있고 쭈~~~욱 몰입을 할수 있었다.

'앨렌웨이크 시리즈' 스팀에서 세일한다면 꼭 해보길바란다.



초반에 유정을 박살낼때 나오는 음악으로 한방에 필이 팍!!!!(Kasabian의 Club Foot)

   

2013년 12월 16일 월요일

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

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


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


for i = 1 to bips.count do
(
boneName = bips[i].name
findFlag = findstring boneName "bip"
if (findFlag != undefined) do
(
boneName = replace boneName findFlag "bip".count "bone"
)
boundingBox = nodeGetBoundingBox bips[i]bips[i].transform
bipLength = boundingBox[2].x
madeBone = Bonesys.createBone[0,0,0][1,0,0][0,0,1]
madeBone.name = boneName
madeBone.width = 1
madeBone.height = 1
madeBone.length = bipLength
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
)


기본적으로 흉내내기 본이 필요한 바이패드의 오브젝트를 선택하고 실행하면 된다.
추가로 UI와 목 본의 움직임을 가슴과 머리의 중간값을 갖도록 하는 기능을 구현할것이다.
더 개발한다면 팔과 다리 부분의 트위스트 본도 선택 할 수 있도록 할까한다.

2013년 12월 2일 월요일