[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Возможность экспорта и генерация Colliders в Blender
ckyberlisДата: Четверг, 11.06.2015, 04:23 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 5
Награды: 0
Репутация: 0
Статус: Offline
У меня есть готовая карта (Из сталкера smile первая локация). Отлично грузится со всеми текстурами. Все супер
Но теперь я хочу по ней ходить 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 перенести\активировать или как это сказать. dry
 
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 ()
А не проще просто сделать геометрию  и назначит программно?
Не понял.  cheesygrin

Я решил начать с ландшафта. Сделал его через модель(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-контур из его видимой геометрии(по рецепту с оффсайта), но беда в том, что у этого контура совсем другой масштаб(у ландшафта не менял). Вручную его подобрать у меня не особо получается, да и как-то это не правильно, по-моему. Код вот такой:

Ты точно не понял или прикидываешься  cheesygrin

Прежде чем применять
Код
BulletTriangleMesh()

Попробуй  этим пройтись по геометрии. Должен последний помочь.

Код
flattenLight ()

Код
flattenMedium ()

Код
flattenStrong ()


ООП  -  

Сообщение отредактировал 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. Видимо, физический контур срисовывался с оригинальной геометрии, а она и по углами, и по масштабу отличалась.
 
  • Страница 1 из 1
  • 1
Поиск: