Возможность экспорта и генерация Colliders в Blender
|
|
ckyberlis | Дата: Четверг, 11.06.2015, 04:23 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 5
Награды: 0
Репутация: 0
Статус: Offline
| У меня есть готовая карта (Из сталкера первая локация). Отлично грузится со всеми текстурами. Все супер Но теперь я хочу по ней ходить FPS контроллером. Очевидно что для этого мне нужны на этой карте куча коллайдеров. Чтобы я не проваливался сквозь карту, чтобы не ходил сквозь постройки.
Вопрос: Можно ли в Blender сгенерировать colliders и потом их экспортировать в panda3d
(В unity3d есть прям галочка, сгенерить collider mesh или что-то такое)
|
|
| |
ninth | Дата: Четверг, 11.06.2015, 14:19 | Сообщение # 2 |
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
| Нет, автоматической генерации, насколько я знаю нету. Возможно существуют сторонние плагины, но я как-то не искал особо, так что либо рисовать вручную геометрию для коллизий, либо как черновой вариант использовать видимую геометрию, хотя это не очень хорошее решение, при большом кол-во полигонов будут тормоза + могут быть глюки на мелких острых углах
|
|
| |
ckyberlis | Дата: Пятница, 12.06.2015, 01:13 | Сообщение # 3 |
Рядовой
Группа: Пользователи
Сообщений: 5
Награды: 0
Репутация: 0
Статус: Offline
| Хорошо, а что нужно сделать в Blender чтобы можно было использовать видимую геометрию? И еще вопрос если бы я сделал отдельную модель с упрощенными объектами мне так же надо было её загружать вместе с основной (loadModel) и как потом сказать коллайдеру использовать именно её
Сообщение отредактировал ckyberlis - Пятница, 12.06.2015, 01:15 |
|
| |
ninth | Дата: Пятница, 12.06.2015, 08:17 | Сообщение # 4 |
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
| В Блендере идёшь в Logic Editor и добавляешь к объекту свойство (Add Game Property) строкового типа. В качестве имени пришешь Collide или ObjectType, а в качестве значения - нужное тебе, например polyset keep descend для Collide сделает видимую геометрию одновременно и геометрией столкновений. Без keep, т.е. polyset descend сделает геометрию невидимой, она будет использоваться только для коллизий. ObjectType - это преднастроенные Collide, которые хранятся в Confauto.prc Здесь описание возможных вариантов Collide и дефолтных ObjectType https://www.panda3d.org/manual/index.php/Egg_Syntax#Collide
з.ы. если имя не Collide и не ObjectType, то оно будет записано как тэг, соответственно можно будет проставить какие-то дополнительные игровые свойства объектам.
|
|
| |
ckyberlis | Дата: Суббота, 13.06.2015, 04:09 | Сообщение # 5 |
Рядовой
Группа: Пользователи
Сообщений: 5
Награды: 0
Репутация: 0
Статус: Offline
| Спасибо большое. Это именно то, что мне было нужно. Добавлено (13.06.2015, 04:09) --------------------------------------------- Вопрос на эту тему. Представим что у нас есть простая сцена: плоскость и на ней моделька автомобиля. Я хочу сделать для неё(для сцены) упрощенный вариант для проверки коллизий. Вопрос как это сделать? Логичным мне кажется сделать вторую идентичную сцену с такой же плоскостью и параллепипедом вместо машины. А что дальше? Сделать всю геометрию (без keep) она станет невидимой. Потом поставить этой упрощенной сцене родителем полную сцену (simple_scene.reparentTo(originalScene))?
Сообщение отредактировал ckyberlis - Суббота, 13.06.2015, 04:02 |
|
| |
ninth | Дата: Вторник, 16.06.2015, 19:54 | Сообщение # 6 |
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
| Да, всё так. Можно не парентить, если у них координаты совпадают. И ещё момент - если в коллизионной геометрии есть острый угол, то лучше с него снять фаску. Можно даже и на прямых углах снимать.
|
|
| |
Фаер | Дата: Среда, 29.07.2015, 21:54 | Сообщение # 7 |
Лейтенант
Группа: Пользователи
Сообщений: 44
Награды: 1
Репутация: 2
Статус: Offline
| Цитата ninth ( ) В Блендере идёшь в Logic Editor и добавляешь к объекту свойство (Add Game Property) строкового типа. В качестве имени пришешь Collide или ObjectType, а в качестве значения - нужное тебе, например polyset keep descend для Collide сделает видимую геометрию одновременно и геометрией столкновений. Без keep, т.е. polyset descend сделает геометрию невидимой, она будет использоваться только для коллизий. А не подскажете, как то же самое сделать для контура Bullet? В смысле, по этой инструкции-то я сделал контур столкновения, но не знаю, как его в Bullet перенести\активировать или как это сказать.
|
|
| |
serg-kkz | Дата: Среда, 29.07.2015, 22:12 | Сообщение # 8 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| Цитата Фаер ( ) А не подскажете, как то же самое сделать для контура Bullet? В смысле, по этой инструкции-то я сделал контур столкновения, но не знаю, как его в Bullet перенести\активировать или как это сказать. А не проще просто сделать геометрию и назначит программно?
P.S. И да встроенная коллизия панды, не вяжется с буллет.
ООП -
Сообщение отредактировал serg-kkz - Среда, 29.07.2015, 22:26 |
|
| |
ninth | Дата: Четверг, 30.07.2015, 08:34 | Сообщение # 9 |
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
| Да, пандовские коллизии отличаются от буллетовских. Прямой конвертации нет. Я тут одно время извращался - делал перенос сцены из блендера вместе с материалами и физикой, но использовался отдельный скрипт для экспорта и собственный загрузчик всего этого дела. тема на оффоруме http://www.panda3d.org/forums....386615f плуг для блендера https://github.com/09th/Blender4Panda-plugin лоадер https://github.com/09th/Blender4Panda-loader экспортированная физика в панде http://youtu.be/Ut15UvZstuk и http://www.youtube.com/watch?v=jp-04DGL4uM если захочешь попробовать воспроизвести, потребуются последние версии Панды, YABEE и скритов
|
|
| |
Фаер | Дата: Четверг, 30.07.2015, 15:37 | Сообщение # 10 |
Лейтенант
Группа: Пользователи
Сообщений: 44
Награды: 1
Репутация: 2
Статус: Offline
| Цитата serg-kkz ( ) А не проще просто сделать геометрию и назначит программно? Не понял.
Я решил начать с ландшафта. Сделал его через модель(heightmap не подошёл, потому что при приемлемом размере клеток FPS падает до 30-ти). Модель вместе с настроенной линзой камеры, как бэ, совсем FPS не трогают, так что я перешёл на них.
Теперь пытаюсь включить ландшафт в физику. Собственно, я смог извлечь Bullet-контур из его видимой геометрии(по рецепту с оффсайта), но беда в том, что у этого контура совсем другой масштаб(у ландшафта не менял). Вручную его подобрать у меня не особо получается, да и как-то это не правильно, по-моему. Код вот такой:
Код geomNodes=self.terrain.findAllMatches('**/+GeomNode') geomnode=geomNodes.getPath(0).node() geom=geomnode.getGeom(0) mesh=BulletTriangleMesh() mesh.addGeom(geom) terrain_sh=BulletTriangleMeshShape(mesh,dynamic=False) terrain_sh_rbn=BulletRigidBodyNode('terrain') terrain_sh_rbn.addShape(terrain_sh)
terrain_sh_np=self.render.attachNewNode(terrain_sh_rbn) terrain_sh_np.setPos(0,0,0) terrain_sh_np.setScale(395,395,485) self.world.attachRigidBody(terrain_sh_rbn) Ещё есть коробка. Она вполне нормально падает на Bullet-контур ландшафта, переворачивается, в общем, всё путём. Но я никак не могу соединить контур с самой моделью, так что местами коробка проходит сквозь видимую землю. Масштаб контура, близкий к масштабу модели, сами видите: (395,395,485). Такая вот фигня у меня получается.
Цитата ninth ( ) если захочешь попробовать воспроизвести, потребуются последние версии Панды, YABEE и скритов Хм. Ну я попробую, конечно. :like:
Сообщение отредактировал Фаер - Четверг, 30.07.2015, 15:41 |
|
| |
serg-kkz | Дата: Четверг, 30.07.2015, 19:38 | Сообщение # 11 |
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
| Цитата Фаер ( ) Не понял. :cheesygrin:
Цитата Фаер ( ) Теперь пытаюсь включить ландшафт в физику. Собственно, я смог извлечь Bullet-контур из его видимой геометрии(по рецепту с оффсайта), но беда в том, что у этого контура совсем другой масштаб(у ландшафта не менял). Вручную его подобрать у меня не особо получается, да и как-то это не правильно, по-моему. Код вот такой: Ты точно не понял или прикидываешься
Прежде чем применять Попробуй этим пройтись по геометрии. Должен последний помочь.
ООП -
Сообщение отредактировал serg-kkz - Четверг, 30.07.2015, 19:40 |
|
| |
Фаер | Дата: Воскресенье, 25.10.2015, 23:57 | Сообщение # 12 |
Лейтенант
Группа: Пользователи
Сообщений: 44
Награды: 1
Репутация: 2
Статус: Offline
| Цитата serg-kkz ( ) Ты точно не понял или прикидываешься Проблему решил в Blender'е. Выбрал объект, нажал внизу Object, потом Apply, Location, Rotation и Scale. Видимо, физический контур срисовывался с оригинальной геометрии, а она и по углами, и по масштабу отличалась.
|
|
| |