- Рейтинг
- 5
Добрый день, у меня возникло очередная проблема а в гугл не разобрался, может вы поможете..
У меня иерархическая фигура человека со своими костями и контроллерами анимации. А в скрипте для него создал структуру.
У меня уже есть метод передвижении объекта, а как можно его повернуть или анимировать, чтобы он ходил - не представляю.
Знаю только приблизительно что надо нужные позиции каждой части умножать на матрице самого моделья: $MyCharacter.transform, но его ведь центра даже нету, там 36 разных объектов.
Но как именно это делается?
А это сама структура:
struct structZombie (
Control_Head = $Control_Head01,
Control_Body = $Control_Body01,
Hand_Right = $Hand_Right01,
Hand_Left = $Hand_Left01,
Leg_Right = $Leg_Right01,
Leg_Left = $Leg_Left01,
Control_HRight = $Control_HRight01,
Control_HLeft = $Control_HLeft01,
Control_LRight = $Control_LRight01,
Control_LLeft = $Control_LLeft01,
BaseModel_Mesh = $BaseModel_Mesh01,
BaseModel_Bones = (for o in selection where classof o == BoneGeometry collect o),
delta_Control_Head = $Control_Head01.pos,
delta_Control_Body = $Control_Body01.pos,
delta_Hand_Right = $Hand_Right01.pos,
delta_Hand_Left = $Hand_Left01.pos,
delta_Leg_Right = $Leg_Right01.pos,
delta_Leg_Left = $Leg_Left01.pos,
delta_Control_HRight = $Control_HRight01.pos,
delta_Control_HLeft = $Control_HLeft01.pos,
delta_Control_LRight = $Control_LRight01.pos,
delta_Control_LLeft = $Control_LLeft01.pos,
rotationCenter = [0,0,0],
function moveTo NewPos = (
Control_Head.pos = NewPos + delta_Control_Head;
Control_Body.pos = NewPos + delta_Control_Body;
Hand_Right.pos = NewPos + delta_Hand_Right
Hand_Left.pos = NewPos + delta_Hand_Left
Leg_Right.pos = NewPos + delta_Leg_Right
Leg_Left.pos = NewPos + delta_Leg_Left
Control_HRight.pos = NewPos + delta_Control_HRight
Control_HLeft.pos = NewPos + delta_Control_HLeft
Control_LRight.pos = NewPos + delta_Control_LRight
Control_LLeft.pos = NewPos + delta_Control_LLeft
rotationCenter = NewPos
)
function RotateModel Gradus = ( ............. ),
function Walk = ( ............ )
)
У меня иерархическая фигура человека со своими костями и контроллерами анимации. А в скрипте для него создал структуру.
У меня уже есть метод передвижении объекта, а как можно его повернуть или анимировать, чтобы он ходил - не представляю.
Знаю только приблизительно что надо нужные позиции каждой части умножать на матрице самого моделья: $MyCharacter.transform, но его ведь центра даже нету, там 36 разных объектов.
Но как именно это делается?
А это сама структура:
struct structZombie (
Control_Head = $Control_Head01,
Control_Body = $Control_Body01,
Hand_Right = $Hand_Right01,
Hand_Left = $Hand_Left01,
Leg_Right = $Leg_Right01,
Leg_Left = $Leg_Left01,
Control_HRight = $Control_HRight01,
Control_HLeft = $Control_HLeft01,
Control_LRight = $Control_LRight01,
Control_LLeft = $Control_LLeft01,
BaseModel_Mesh = $BaseModel_Mesh01,
BaseModel_Bones = (for o in selection where classof o == BoneGeometry collect o),
delta_Control_Head = $Control_Head01.pos,
delta_Control_Body = $Control_Body01.pos,
delta_Hand_Right = $Hand_Right01.pos,
delta_Hand_Left = $Hand_Left01.pos,
delta_Leg_Right = $Leg_Right01.pos,
delta_Leg_Left = $Leg_Left01.pos,
delta_Control_HRight = $Control_HRight01.pos,
delta_Control_HLeft = $Control_HLeft01.pos,
delta_Control_LRight = $Control_LRight01.pos,
delta_Control_LLeft = $Control_LLeft01.pos,
rotationCenter = [0,0,0],
function moveTo NewPos = (
Control_Head.pos = NewPos + delta_Control_Head;
Control_Body.pos = NewPos + delta_Control_Body;
Hand_Right.pos = NewPos + delta_Hand_Right
Hand_Left.pos = NewPos + delta_Hand_Left
Leg_Right.pos = NewPos + delta_Leg_Right
Leg_Left.pos = NewPos + delta_Leg_Left
Control_HRight.pos = NewPos + delta_Control_HRight
Control_HLeft.pos = NewPos + delta_Control_HLeft
Control_LRight.pos = NewPos + delta_Control_LRight
Control_LLeft.pos = NewPos + delta_Control_LLeft
rotationCenter = NewPos
)
function RotateModel Gradus = ( ............. ),
function Walk = ( ............ )
)