User posts NoxKeini
11 March 2016 09:13
10 March 2016 20:06
10 March 2016 14:14
Опробовал предложенный способ: убрал коллизию из настроек материала, поставил галочку в разделе физики - физика объекта. После этого изменения появились столкновения с копированными плоскостями динамического объекта. Однако это не повлияло но перерасчёт поверхности столкновения объекта с изменённой геометрией. Я раздробил плоскость, увеличив количество вертексов и внёс некоторые изменения в создание нового массива координат, сымитировав неровность рандомом и приподняв для лучшей видимости (скриншот далее)
if (element == 0) element+=Math.random()*0.25+2;
return element;
Поверхность плоскости коллизии, которая была экспортирована из блендера по прежнему осталась ровной. Поверхность, которая была получена изменением геометрии отображается материалом зелёного цвета, приподнята на (2 + рандом) высотой над поверхностью коллизии.
if (element == 0) element+=Math.random()*0.25+2;
return element;
Поверхность плоскости коллизии, которая была экспортирована из блендера по прежнему осталась ровной. Поверхность, которая была получена изменением геометрии отображается материалом зелёного цвета, приподнята на (2 + рандом) высотой над поверхностью коллизии.
10 March 2016 13:00
10 March 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);
Визуально плоскость увеличивается/уменьшается, но поверхность коллизии остаётся прежней
Я попробовал пойти путём глубокого копирования, и менять уже геометрию производных плоскостей. Результат повторяется: визуально копированная плоскость отображается, но столкновения с ней экспериментального динамического объекта не происходит.
Я схематично изобразил полученный результат. Слева изображен первый случай. Зелёным указана область коллизии, синим - визуальная плоскость. Справа изображен второй случай. Красным указан объект-родитель с работающей коллизией, оранжевым указан объект-потомок, который визуально присутствует на сцене, но для которого не работает коллизия.
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);
Визуально плоскость увеличивается/уменьшается, но поверхность коллизии остаётся прежней
Я попробовал пойти путём глубокого копирования, и менять уже геометрию производных плоскостей. Результат повторяется: визуально копированная плоскость отображается, но столкновения с ней экспериментального динамического объекта не происходит.
Я схематично изобразил полученный результат. Слева изображен первый случай. Зелёным указана область коллизии, синим - визуальная плоскость. Справа изображен второй случай. Красным указан объект-родитель с работающей коллизией, оранжевым указан объект-потомок, который визуально присутствует на сцене, но для которого не работает коллизия.