Render.ru
Поддержать

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

IrakliSpain

Активный участник
Рейтинг
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 = ( ............ )
)

Savin Denis

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

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



IrakliSpain

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

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

Savin Denis

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

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