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

Legend

Alter Hase

  • »Legend« ist der Autor dieses Themas

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

1

02.01.2014, 13:55

Bullet-Benutzer hier? Bekomme keine Kollisonen und ApplyTorque tut nichts

Hallo,

gibt es hier welche die sich mit Bullet gut auskennen? Was ich habe:

ApplyCentralForce funktioniert, das Objekt bewegt sich dann auch von Frame zu Frame weiter wie man es erwarten würde.
ApplyTorque macht jedoch überhaupt nichts.

Und wenn zwei Objekte kollidieren bekomme ich kein entsprechendes Manifold.

Codestellen kann ich bei Bedarf natürlich weiter reichen.

Hier prüfe ich ob es Kollisonen gegeben hat. Da passiert aber nichts. (Ja ich bin mir bewusst, dass gcroots nicht unproblematisch sind)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void Physics::DoTickCallback ()
{
    for each (MeshObject^ mo in m_objects)
    {
        mo->DoTickCallback ();
    }

    /* 31.12.2013: And now see if anything has collided. */
    int manifoldcount = m_world->getDispatcher ()->getNumManifolds ();
    for (int i = 0;i < manifoldcount;i++) {
        btPersistentManifold* manifold = m_world->getDispatcher ()->getManifoldByIndexInternal (i);
        const btCollisionObject* objA = manifold->getBody0 ();
        const btCollisionObject* objB = manifold->getBody1 ();

        /* Find objects to callback */
        gcroot<MeshObject^>* objAgcr = (gcroot<MeshObject^>*)objA->getUserPointer ();
        gcroot<MeshObject^>* objBgcr = (gcroot<MeshObject^>*)objB->getUserPointer ();

        /* Now for each contact ... */
        int contactcount = manifold->getNumContacts ();
        for (int j = 0;j < contactcount;j++) {
            btManifoldPoint& p = manifold->getContactPoint (j);
            (*objAgcr)->DoCollision ();
            (*objBgcr)->DoCollision ();
        }
    }
}
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

Legend

Alter Hase

  • »Legend« ist der Autor dieses Themas

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

2

07.01.2014, 14:30

Nur ein Update, ich hab das mit den Kollisionen hinbekommen und danach auch erfolgreich von Kugeln als Collision Shapes zu konvexen Hüllen meiner Meshes gewechselt. Dazu habe ich in Bullet rumdebuggt.

Aber das mit dem Drehmoment muss ich mir wohl auf dem gleichen Weg ansehen. -.-
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/