Autor Wątek: [C++]Ogre i PhysX kontroler postaci-błędna wysokość  (Przeczytany 1814 razy)

Offline kokos22

  • Użytkownik

# Sierpień 08, 2012, 21:50:38
Mam problem z dobraniem odpowiedniej wysokości dla kontrolera, używam do tego :
Ogre::AxisAlignedBox aab = obj->entity->getBoundingBox();
float height = aab.getSize().y * (1.0f - Ogre::MeshManager::getSingleton().getBoundsPaddingFactor());
float radius = aab.getSize().z * (1.0f - Ogre::MeshManager::getSingleton().getBoundsPaddingFactor());

desc.height=height;
desc.radius=radius;
Niestety kapsuła tworzona przez kontroler jest o wiele większa od modelu, do tego przy ustawianiu modelu w pozycji kontrolera postać sterczy kilkanaście jednostek nad terenem gdy kontroler stoi na nim niemal idealnie.
Byłbym wdzięczny za wszelakie formy pomocy.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Dab

  • Redaktor
    • blog

# Sierpień 09, 2012, 02:20:03
1. Radius to promień kapsułki, czyli na oko 0.5 * max(szerokość, grubość)
2. Height to wysokość środkowej (cylindrycznej) części kapsułki. Łączna wysokość kapsułki to height + 2 * radius

Poza tym liczenie tego z AABB to słaby pomysł. Przede wszystkim z jakiego stanu liczysz? Bind pose? Wystające ręce mocno zmienią wynik. Ze względu na kolizje z levelem często rozmiar kontrolera jest inny niż faktyczny rozmiar postaci. Proponuję ustawiać to manualnie.

Offline kokos22

  • Użytkownik

# Sierpień 09, 2012, 10:57:06
Dzięki teraz kapsuła układa się niemal idealnie, ale pozostaje problem jej "lewitacji".
Odległość kapsuły od terenu nie jest duża ale przy odpowiednim ustawieniu kamery źle to wygląda.