2015-07-27 8 views
0

Чтобы получить относительные точки на форме столкновения (сложной формы), я пробовал raytest изнутри из формы, но никогда не работал изнутри. он работал только со стороны.Физика пули: Как получить относительные точки на форме столкновения

Вот мои настройки и код:

  • C++ openframeworks bullet physics addson
  • Visual Studio 2012
  • сделал Rigidbody под названием "форма"
  • сделал btDiscreteDynamicsWorld называется "мир"

Ниже приведен пример кода для определения наилучшего кода:

btVector3 ray_from = shape->getCenterOfMassPosition() ; // center of mass of the shape called stones[0] 
btVector3 ray_to = ray_from + btVector3(0, -100., 0); // ray to the top 

btCollisionWorld::AllHitsRayResultCallback allResults(ray_from, ray_to); 
world->rayTest(ray_from, ray_to, allResults); 

for (int i = 0; i < allResults.m_hitFractions.size(); i++) 
{ 
    btVector3 p = ray_from.lerp(ray_to, allResults.m_hitFractions[i]); 
    ray_all_results.push_back(new btVector3(p.getX(), p.getY(), p.getZ())); 
} 

ответ

0

Многие люди испытывают эту проблему, и, похоже, это неправильно реализовано в текущей редакции. У меня возникла такая же проблема, когда я попытался получить позиции на поверхности фигуры.

Так что не беспокойтесь, это не проблема в вашей настройке, это библиотека Bullet Physics.

ли также, что

rayCallback.m_flags &= !btTriangleRaycastCallback::kF_FilterBackfaces; 

не проверяется когда-либо в коде.

Таким образом, мое предложение состоит в том, что вы просто инвертируете луч и проверяете поверхность снаружи. Вероятно, ошибка будет исправлена ​​в какой-то момент в будущем.

http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?f=9&t=10722&p=35992&hilit=ray#p35992

https://github.com/bulletphysics/bullet3/issues/459

+0

'rayCallback.m_flags & = btTriangleRaycastCallback :: kF_FilterBackfaces;!' Не делать то, что вы ожидаете, что делать (удаление флага)! вы на самом деле имели в виду: 'rayCallback.m_flags & = ~ btTriangleRaycastCallback :: kF_FilterBackfaces;' – BeyelerStudios

+0

О, правильно. Но это не меняет того факта, что параметр флага никогда не проверяется снова в коде. – Ben

 Смежные вопросы

  • Нет связанных вопросов^_^