由用户创建的信息 Dragon3DGraff
14 April 2016 13:01
Когда смотрел ваш проект, подумал о том что тут удобнее крутить камеру вокруг куба, а для шарика менять направление гравитации относительно камеры. Тогда саму физику куба можно оставить статичной.интересное предложение, а как поменять направление гравитации?
А окружающие элементы прикрепить к камере
14 April 2016 11:25
Выявил опытным путем, что если прозрачность материала меньше 0,5, то есть даже 0,499 - то объект уже не pickается а я хотел сделать основной куб, который вращаю (без физики), а внутри него поместить элементы с физическими свойствами и внутри шарик. Внутрь куба же шарик не поместить, по мешу физика не поддерживается, соответственно стенки куба и лабиринт внутри должен быть сделан боксами или плоскостями. (Но тут другой момент, который я еще не до конца оттестил правда - между стыков боксиков шарик вываливается )
Если нельзя "обернуть" в прозрачный куб какой еще метод можно использовать?
Если нельзя "обернуть" в прозрачный куб какой еще метод можно использовать?
14 April 2016 11:16
попробовать поиграться с функцией cal_rayя думал про нее, в одном из уроков еще про нее есть, в интерьере вроде. Но пока не сообразил как сделать возможно буду пробовать разные способы, а так же надо проработать адаптивность - если сильно крутить шарик вываливается сквозь стенки. еще думал - если потянуть за правый край кубика - он должен наклониться вправо, а не запрокидываться на меня, наверно надо будет проверить по координатам и размерам кубика где ткнули
https://www.blend4web.com/api_doc/module-camera.html#.calc_ray
13 April 2016 19:05
Такой вариант мне нравится больше :)
Я оставил по горизонтали как у меня было
, а по вертикали - как Вы посоветовали.
Вроде то, что я хотел, не знаю как потом будет по геймплею, но это уже увижу когда будет чем играть
Спасибо еще раз
var cam = m_scenes.get_active_camera();
m_transform.get_rotation(cam, quat_cam);
//получаем направляющие векторы в глобальной системе координат для осей X и Y из локального пространства координат камеры
//вокруг этих векторов далее и будет происходить вращение
m_util.quat_to_dir(quat_cam, AXIS_X, CAM_X);
m_util.quat_to_dir(quat_cam, AXIS_Y, CAM_Y);
//получаем кватернионы вращения вокруг "глобальны" осей
m_quat.setAxisAngle(AXIS_Y, delta_x*0.01, quat_Y);
m_quat.setAxisAngle(CAM_X, delta_y*0.01, quat_X);
m_transform.get_rotation(_selected_object, quat_obj);
//вращаем наш объект в глобальной системе координат
//порядок операндов важен! в противном случае вращение будет происходить в локальной системе объекта
m_quat.multiply(quat_X, quat_obj, quat_obj);
m_quat.multiply(quat_Y, quat_obj, quat_obj);
m_transform.set_rotation_v(_selected_object, quat_obj);
Я оставил по горизонтали как у меня было
m_quat.setAxisAngle(AXIS_Y, delta_x*0.01, quat_Y);
Вроде то, что я хотел, не знаю как потом будет по геймплею, но это уже увижу когда будет чем играть
Спасибо еще раз
13 April 2016 18:16
13 April 2016 16:06
13 April 2016 16:04
Навскидку похоже что вам нужно домножить реузльтирующий кватернион слева на кватернион текущего положения камерыЕсли я правильно понял….
var cam = m_scenes.get_active_camera();
m_transform.get_rotation(cam, quat_cam);
m_quat.setAxisAngle(AXIS_Y, delta_x*0.01, quat_tmp);
m_quat.setAxisAngle(AXIS_X, -delta_y*0.01, quat_tmp3);
m_transform.get_rotation(_selected_object, quat_tmp2);
m_quat.multiply(quat_tmp, quat_tmp2, quat_tmp);
m_quat.multiply(quat_tmp, quat_tmp3, quat_tmp);
m_quat.multiply(quat_tmp, quat_cam, quat_tmp);
m_transform.set_rotation_v(_selected_object, quat_tmp);
но стало еще хуже… теперь его колбасит безбожно….
13 April 2016 14:29
Добрый день!
Решил сделать возможность поворота объекта мышкой.
Никак не могу разобраться до конца в кватернионах
Я хочу, чтобы кубик вращался как бы относительно системы координат параллельных экрану. То есть я потащил мышу вправо - и кубик вправо и крутится, независимо от того как он сейчас повернут. Потянул вверх - крутится вверх. Сейчас пока добился того, что он крутится относительно своих локальных осей. При чем пробовал и кватернионами и "простым"
нашел какой то SPACE_WORLD, но не знаю, как применить
Подскажите, пожалуйста
Проект прикрепилproject.zip
Решил сделать возможность поворота объекта мышкой.
Никак не могу разобраться до конца в кватернионах
Я хочу, чтобы кубик вращался как бы относительно системы координат параллельных экрану. То есть я потащил мышу вправо - и кубик вправо и крутится, независимо от того как он сейчас повернут. Потянул вверх - крутится вверх. Сейчас пока добился того, что он крутится относительно своих локальных осей. При чем пробовал и кватернионами и "простым"
m_quat.setAxisAngle(AXIS_Y, delta_x*0.01, quat_tmp);
m_quat.setAxisAngle(AXIS_X, -delta_y*0.01, quat_tmp3);
m_transform.get_rotation(_selected_object, quat_tmp2);
m_quat.multiply(quat_tmp, quat_tmp2, quat_tmp);
m_quat.multiply(quat_tmp, quat_tmp3, quat_tmp);
m_transform.set_rotation_v(_selected_object, quat_tmp);
//m_transform.rotate_x_local(_selected_object, delta_y*0.01);
//m_transform.rotate_y_local(_selected_object, delta_x*0.01);
нашел какой то SPACE_WORLD, но не знаю, как применить
Подскажите, пожалуйста
Проект прикрепилproject.zip
21 March 2016 10:45
21 March 2016 10:38