Форум

Настройка коллизии материала для статических объектов

10 марта 2016 11:41
Приветствую. Столкнулся с проблемой настройки/перенастройки коллизии. Пример такой: имеется плоскость, созданная в blender, в настройках материала указана галочка в чекбоксе коллизии, в настройках физики указан тип физики - неподвижно, в настройках объекта указаны галки в чекбоксах форсированный объект и динамическая геометрия. При помощи API изменяю размер плоскости в большую/меньшую сторону (не принципиально) разнося вертексы в пространстве:

var old_v3_positions = m_geometry.extract_vertex_array(plane, 'material_plane', 'a_position');
var new_v3_positions = old_v3_positions.map(function(element){
return element*2;
});
m_geometry.update_vertex_array(plane, "material_plane", 'a_position', new_v3_positions);
m_scenes.update_scene_materials_params();
m_objects.update_boundings(plane);

Визуально плоскость увеличивается/уменьшается, но поверхность коллизии остаётся прежней

Я попробовал пойти путём глубокого копирования, и менять уже геометрию производных плоскостей. Результат повторяется: визуально копированная плоскость отображается, но столкновения с ней экспериментального динамического объекта не происходит.



Я схематично изобразил полученный результат. Слева изображен первый случай. Зелёным указана область коллизии, синим - визуальная плоскость. Справа изображен второй случай. Красным указан объект-родитель с работающей коллизией, оранжевым указан объект-потомок, который визуально присутствует на сцене, но для которого не работает коллизия.
10 марта 2016 12:35

Приветствую. Столкнулся с проблемой настройки/перенастройки коллизии. Пример такой: имеется плоскость, созданная в blender, в настройках материала указана галочка в чекбоксе коллизии, в настройках физики указан тип физики - неподвижно, в настройках объекта указаны галки в чекбоксах форсированный объект и динамическая геометрия. При помощи API изменяю размер плоскости в большую/меньшую сторону (не принципиально) разнося вертексы в пространстве:
Настройка коллизии в материале и в разделе физики это два разных типа коллизии которые друг друга взаимоисключают. Настройка коллизии при помощи материала это статический и главное(!) неизменяемый динамически тип коллизиии, то есть он подходит для объектов которые не будут меняться динамически (полы, стены и т.д.). Настройка физики в разделе физики позволяет создать объекты (так же и статические) но с которыми можно взаимодействовать в реальном времени и изменять при помощи API. Собственно что вам нужно сделать так это убрать коллизию с настроек материала.
Blend4Web и всё такое. Тридешу тридэ, моделю модели.
10 марта 2016 13:00
Спасибо, за быстрый ответ. Суть я понял, попробую изменить настройки исходя из предоставленной информации.
10 марта 2016 14:14
Опробовал предложенный способ: убрал коллизию из настроек материала, поставил галочку в разделе физики - физика объекта. После этого изменения появились столкновения с копированными плоскостями динамического объекта. Однако это не повлияло но перерасчёт поверхности столкновения объекта с изменённой геометрией. Я раздробил плоскость, увеличив количество вертексов и внёс некоторые изменения в создание нового массива координат, сымитировав неровность рандомом и приподняв для лучшей видимости (скриншот далее)

if (element == 0) element+=Math.random()*0.25+2;
return element;



Поверхность плоскости коллизии, которая была экспортирована из блендера по прежнему осталась ровной. Поверхность, которая была получена изменением геометрии отображается материалом зелёного цвета, приподнята на (2 + рандом) высотой над поверхностью коллизии.
10 марта 2016 15:31
Насколько я знаю "неровный" материал может быть только статичным. Динамичным(активным) может быть только простейшим элемент (Поддерживаются: Box, Capsule, Sphere, Cylinder, Cone.)
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
10 марта 2016 20:06
Жаль, если так и есть. Тогда получается, что на данный момент, не получится организовать генерируемый "неровный" ландшафт, обладающий коллизией.
10 марта 2016 20:27
Ну почему же. Можно генерировать ландшафт на сервере в блендере и отдавать его в виде json файлов.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
11 марта 2016 09:13
Кирилл, вы бы не могли подробнее изложить свою мысль. Я не эксперт blender, и раньше не слышал об установке blender на сервер, а экспресс просмотр гугла по данному запросу не принёс никаких результатов. Или, возможно, вы имели ввиду генерацию ландшафта вручную в обычном редакторе blender?
11 марта 2016 09:24
Можно поступить так:
1. Пишем скрипт для блендера, который будет генерировать ландшафт
2. При генерации нового ландшафта работаем с blender из командной строки. Какой командой экспортировать в json можно посмотреть в логике работы менеджера проектов в b4w.
3. Полученый файл подгружаем клиенту и он видит только что сгенерированный ландшафт.

Так же где то видел уже готовые примеры автоматической генерации ландшафта для blender.
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
11 марта 2016 09:39
Спасибо за информацию
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.