Форум

Анимация - scale по одной оси.

21 сентября 2016 16:33 #11979
Всё разобрался! Надо просто добавить больше костей! Need more bones!!!

Надо к каждой точке куба присоединить косточку и двигать кости группами. В этом случае нагрузка распределяется равномерно
21 сентября 2016 16:44 #11980
Можно вообще две кости всего использовать, или планируется отдельно двигать вершины куба?
3D Художник (Generalist), администратор конкурсов,
команда Blend4Web
арт блог: http://contret-art.tumblr.com/
21 сентября 2016 17:09 #11983
Мне нужно изменять функционально размеры куба по трём осям. НО! Изменять не не равномерно. Например, из куба 3х3х3 нужно сделать куб 3х5х8.

Кажется, что вариант с привязкой множества костей к множеству точек наиболее оптимальный. Хотя конечно было бы здорово обойтись всего тремя костями, но наверно это не прокатит в данной ситуации.
21 сентября 2016 17:11 #11984
Вот что получилось
21 сентября 2016 18:14 #11988
Ну да, так все ок)

Но я бы, все-таки, засоветовал бы поколдовать со скиннингом. Важная штука

Еще предлагаю глянуть это видео, я делал его давно еще. Может поможет) Там показан механизм скейлинга с сохранением толщины.
3D Художник (Generalist), администратор конкурсов,
команда Blend4Web
арт блог: http://contret-art.tumblr.com/
05 декабря 2016 13:26 #14356
Как приехал с ивента, не мог успокоиться пока не проверил теорию возможности скейла по индивидуальной оси. В общем моя теория сработала. Использовал динамическую геометрию. Функцию упростил до максимума:

//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/
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.