Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

1

24.06.2012, 13:51

Bullet Physics: Probleme bei der Präzision des Solvers

Hi, ich habe jetzt die Arbeit mit NVIDIA's PhysX erst mal zurückgestellt und statt dessen mit Bullet Physics begonnen.
Jetzt habe ich schon mal ein paar Boxen und einpar Joints (bzw. Constraints) eingebaut.
Aber leider lässt die Präzision des btSequentialImpulseConstraintSolver Solvers zu Wünschen übrig. Ich glaube mein BulletPhysics-build läuft mit single-precision aber ähnlich wie in
NewtonGameDynamics sollte das eher mit der Präzision des 'Solver-Modells' zu tun haben. Im Newton SDK kann man das ganz einfach mit 'NewtonSetSolverModel' einstellen.
Das Problem äußert sich in sofern, dass jeder Stapel von mehreren Boxen (ca. 10 Stück) sofort anfängt zu wanken und dann schief stehen bleibt.
Jetzt habe ich 10 schiefe Türme von Pisa in meiner Szene, das sieht nicht sehr schön aus.
Wie kann ich das in Bullet einstellen?

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

24.06.2012, 14:31

Schau dir doch einfach die Bulletbeispiele an. Da gibt es meine ich auch ein stacked boxes Beispiel (und darin ist sicher die Lösung für dein Problem versteckt). Es hat meine ich mit mit irgendeiner Margin Einstellung zu tun, sicher bin ich mir aber nicht.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

3

24.06.2012, 18:09

zeig mal deine bullet-update-methode her

Markus

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

4

24.06.2012, 20:51

C-/C++-Quelltext

1
2
float StepTime = 1.0f / 60.0f;
BtWorld_->stepSimulation(StepTime);

5

25.06.2012, 12:44

btDynamicsWorld::stepSimulation

also hast du fixed update? oder variiert StepTime?

C-/C++-Quelltext

1
2
3
4
btDynamicsWorld::stepSimulation(
   btScalar timeStep,
   int maxSubSteps=1,
   btScalar fixedTimeStep=btScalar(1.)/btScalar(60.));


wenn sie variiert muss du "fixedTimeStep" bzw "maxSubSteps" anpassen.
Details:
http://bulletphysics.org/mediawiki-1.5.8…pping_The_World

Das wäre meine Idee für dein Problem, kann natürlich auch wo anders liegen
Markus

LukasBanana

Alter Hase

  • »LukasBanana« ist der Autor dieses Themas

Beiträge: 1 097

Beruf: Shader Tools Programmer

  • Private Nachricht senden

6

25.06.2012, 15:01

Da ich Vsync aktiv habe und die Szene noch lange nicht überfüllt ist, läuft das durchgängig mit 60 FPS. Variiert also nicht.

Werbeanzeige