Анимация - scale по одной оси.
21 сентября 2016 16:33
21 сентября 2016 16:44
21 сентября 2016 17:09
Мне нужно изменять функционально размеры куба по трём осям. НО! Изменять не не равномерно. Например, из куба 3х3х3 нужно сделать куб 3х5х8.
Кажется, что вариант с привязкой множества костей к множеству точек наиболее оптимальный. Хотя конечно было бы здорово обойтись всего тремя костями, но наверно это не прокатит в данной ситуации.
Кажется, что вариант с привязкой множества костей к множеству точек наиболее оптимальный. Хотя конечно было бы здорово обойтись всего тремя костями, но наверно это не прокатит в данной ситуации.
21 сентября 2016 18:14
Ну да, так все ок)
Но я бы, все-таки, засоветовал бы поколдовать со скиннингом. Важная штука
Еще предлагаю глянуть это видео, я делал его давно еще. Может поможет) Там показан механизм скейлинга с сохранением толщины.
Но я бы, все-таки, засоветовал бы поколдовать со скиннингом. Важная штука
Еще предлагаю глянуть это видео, я делал его давно еще. Может поможет) Там показан механизм скейлинга с сохранением толщины.
05 декабря 2016 13:26
Как приехал с ивента, не мог успокоиться пока не проверил теорию возможности скейла по индивидуальной оси. В общем моя теория сработала. Использовал динамическую геометрию. Функцию упростил до максимума:
Демку и исходники прилагаю.
P.S.
Кнопки масштабирования модели находятся сверху слева. Попрошу их нажимать после полной загрузки сцены.
P.S.S. Подозреваю, что данный метод может работать не корректно с анимированными объектами.
P.S.S теперь думаю попробовать сделать автозаполнение в текстовый редактор codemirror с автоматическим парсингом документации
//magic scale function :D
function scale(obj, material_name, vector){
var coords_pos = m_geom.extract_vertex_array(obj, material_name, 'a_position');
var k = 1;
for(var i=0; i < coords_pos.length; i+=1){
if (k == 1)
coords_pos[i] *= vector[0];
else if (k == 2){
coords_pos[i] *= vector[1];
}
else if (k == 3){
coords_pos[i] *= vector[2];
}
k+=1;
if(k>3) k = 1;
}
m_geom.update_vertex_array(obj, material_name, 'a_position', coords_pos);
m_obj.update_boundings(obj);
}
Демку и исходники прилагаю.
P.S.
Кнопки масштабирования модели находятся сверху слева. Попрошу их нажимать после полной загрузки сцены.
P.S.S. Подозреваю, что данный метод может работать не корректно с анимированными объектами.
P.S.S теперь думаю попробовать сделать автозаполнение в текстовый редактор codemirror с автоматическим парсингом документации
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
http://naviris.ru/