2011-02-09 2 views
1

Я пытаюсь настроить городскую среду с помощью Ogre и Bullet, но мне трудно понять, как загружать сетки в Bullet. Google показывает ссылки на импортера Collada, но, похоже, он был удален из SVN.Загрузка Bullet Физическая сетка из файла

Ogre mesh будет лучше всего импортировать, но у меня также есть файлы .dae и .blend, и они могут использовать их, если это возможно.

+0

Что такое Bullet? <_ < –

+2

Это физический движок. [Основной сайт] (http://bulletphysics.org) – silenthunter747

ответ

3

У меня было такое же требование при использовании Bullet with Irrlicht. Я не нашел решения, кроме написания самого загрузочного кода физики. Я использовал соглашение об именах объектов в 3d-редакторе, а при загрузке модели я повторил через под-объекты и построил подходящий btRigidBody для каждого помеченного объекта.

E.g.

 if (needsBody) { 
      if (prefix == "ball") { 
       body = createSphereBody(mesh, density); 
      } 
      else if (... 

Аналогично с суставами:

  if (parent && parent->body) { 
       // add constraint 
       ... 
       if (prefix == "ball") { 
        // ball/socket joint      
        constraint = new btGeneric6DofConstraint(
          *parent->body, *body, frameInA, frameInB, true); 
       } 
       else if (... 

Функция createSphereBody() вычисляется радиус от сетки Verts.

Надеюсь, что это поможет.

1

Если вы используете 3DS Max для моделирования, вы можете использовать плагин OgreMax для экспорта сцены из OGRE и плагин bullet для 3DS Max для экспорта объектов физики. Вы можете загрузить эти два набора отдельно как узлы OGRE и объекты пули, и объединить модели физики/графики на основе их имен.

Это, как я это сделал в своей игре:

Источник: https://github.com/SabinT/Wings-Of-Chaos

Демо: http://www.youtube.com/watch?v=eryWgIuqC7I

Я перестал работать над этим уже давно, но надеюсь, что этот код оказывается полезным для кто-то работает над Ogre/Bullet. Возможно, кто-то извлечет из этого полезный код.

Вам будет интересен файл CsGameLevel.cpp. Метод Load() сначала загружает сцену Ogre, затем загружает жесткие тела пули с помощью метода LoadStaticGeometry().