Render.ru

Struct muCharacter - и методы структуры

IrakliSpain

Активный участник
Рейтинг
5
#1
Добрый день, у меня возникло очередная проблема а в гугл не разобрался, может вы поможете..
У меня иерархическая фигура человека со своими костями и контроллерами анимации. А в скрипте для него создал структуру.
У меня уже есть метод передвижении объекта, а как можно его повернуть или анимировать, чтобы он ходил - не представляю.
Знаю только приблизительно что надо нужные позиции каждой части умножать на матрице самого моделья: $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 = ( ............ )
)
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#2
Конкретизируй свой вопрос, все же писать за тебя функции не буду, тем более не понимая что это должно быть.
По поводу матриц трансформаций, читай соответ. литературу. доступно описанно в литературе по DirectX/OpenGL

PS
По моему ты тут пытаешься велосипед изобрести, зачем хелперы в скрипте двигать ?
прицепи их к центру сами будут и двигаться и вращаться.
Совет найди похожий скрипт и уже от него пляши.



 

IrakliSpain

Активный участник
Рейтинг
5
#3
Дела в том, что этими хелперами потом должен сделать анимацию, который на центре не должен отрозится.

Согласен, вопрос не понятный вишел. Хотел узнать как сказать в скрипте например: Чоб объект "А" повернулось на 75 градусов, только не на собственный, а на Z ось объекта "Б"?
 

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#4

Согласен, вопрос не понятный вишел. Хотел узнать как сказать в скрипте например: Чоб объект "А" повернулось на 75 градусов, только не на собственный, а на Z ось объекта "Б"?
Код:
 in coordsys $Box02 about coordsys rotate $Box01 75 z_axis
 
Сверху