Aktuelle Zeit: 13.05.2025, 11:41

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Problem mit Newton
BeitragVerfasst: 19.03.2009, 20:58 
Offline

Registriert: 12.09.2008, 21:41
Beiträge: 187
Wohnort: Deutschland
Hi Leute,

ich benutze die Physikengine Newton und habs geschafft das er mir die Kollisionen anzeigt. Mein Problem besteht darin, dass ich aber weiterhin durch die anderen Meshs hindurchfliegen kann, also irgendwie fehlt die Reaktion auf die Collision. Nun hab ich mich ein bischen umgeschaut und festgestellt, dass ich wohl mit nem Callback oder so arbeiten muss nur find ich zwar funktionierende Beispiele aber irgendwie fehlt der letzte i Punkt damit es auch bei mir funktioniert.

Also ich hab folgendes für mein Spieler Mesh verwendet:
Code:
mainplayer.collision = CreateCollisionFromMesh(nWorld, mainplayer.node->getMesh());
mainplayer.body = NewtonCreateBody(nWorld, mainplayer.collision);
NewtonBodySetUserData(mainplayer.body, mainplayer.node);
NewtonBodySetMassMatrix(mainplayer.body, 10, 0, 0, 0);
NewtonBodySetFreezeTreshold(mainplayer.body, 1.0, 1.0, 1);
NewtonBodySetTransformCallback(mainplayer.body, SetMeshTransformEvent);
NewtonBodySetForceAndTorqueCallback(mainplayer.body, ApplyForceAndTorqueEvent);
CMatrix4<float> mat;
mat.setTranslation(mainplayer.node->getPosition());
NewtonBodySetMatrix(mainplayer.body, mat.pointer());

und wiederum folgendes für das Mesh wo ich eigentlich nicht durchfliegen sollte:
Code:
NewtonBodySetUserData(jumpbody, jumpnode);
NewtonBodySetMassMatrix(jumpbody, 10, 0, 0, 0);
NewtonBodySetFreezeTreshold(jumpbody, 1.0, 1.0, 1);
NewtonBodySetTransformCallback(jumpbody, SetMeshTransformEvent);
NewtonBodySetForceAndTorqueCallback(jumpbody, ApplyForceAndTorqueEvent);
CMatrix4<float> mat;
mat.setTranslation(jumpnode->getPosition());
NewtonBodySetMatrix(jumpnode, mat.pointer());

achso die Funktionen sind natürlich von Newton bzw. von hier:
http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=25573

Nun noch die finale Frage:
Was mache ich falsch? :?

MfG
Scarabol

_________________
My Toolbox:
- Irrlicht 1.7.1
- Blender 2.49a
- Microsoft Visual C++ Express Edition 2008
- Newton Game Dynamics 2.xx
Regeln zur Programmierung:
Regel 1: Die Programmiersprache hat keine Fehler.
Regel 2: Solltest du doch einen Fehler finden, tritt automatisch Regel 1 in Kraft.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Problem mit Newton
BeitragVerfasst: 19.03.2009, 23:01 
Offline

Registriert: 24.05.2008, 13:41
Beiträge: 151
Wohnort: Marienhafe
wie verschiebst du denn dabei dein mesh?^^


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Problem mit Newton
BeitragVerfasst: 21.03.2009, 19:00 
Offline

Registriert: 12.09.2008, 21:41
Beiträge: 187
Wohnort: Deutschland
Öhh, ich denke mal das genau der Teil mir fehlt aber ich finde ihn auch in keinem der Beispiele...

Kannst mir da einer weiterhelfen? Ich dachte das geht micht SetTransformCallback und SetForceAndTorqueCallback, scheint aber nicht zu funktionieren....

Oder hab ich deine Frage falsch verstanden? Im Programm selber wird das Mesh bzw. der Node durch SetPosition verschoben...

Gruß
Scarabol

_________________
My Toolbox:
- Irrlicht 1.7.1
- Blender 2.49a
- Microsoft Visual C++ Express Edition 2008
- Newton Game Dynamics 2.xx
Regeln zur Programmierung:
Regel 1: Die Programmiersprache hat keine Fehler.
Regel 2: Solltest du doch einen Fehler finden, tritt automatisch Regel 1 in Kraft.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Problem mit Newton
BeitragVerfasst: 21.03.2009, 23:42 
Offline

Registriert: 24.05.2008, 13:41
Beiträge: 151
Wohnort: Marienhafe
Naja z.b. Wenn du deine 3D-Figur damit bewegen willst - jetzt nach vorne musst du ja irgentwie das mesh verschieben. Damit alles korrekt verschoben wird solltest du wieder

CMatrix4<float> mat;
mat.setTranslation(vector3dpos);
NewtonBodySetMatrix(jumpnode, mat.pointer());

benutzen, damit wird auch gleich dein mesh verschoben ;)
Hierbei wird allerdings auch keine Collision abgefragt, heißt du musst das wohl oder übel ebenfalls mit SetForceAndTorqueCallback machen (so weit bin ich zz zumindest... leider hab ichs selber net ganz hinbekommen^^)
Hier fügst du dann einfach eine weitere kraft hinzu und dann bewegt sich deine figur natürlich in die richtung^^.

Was genau funktioniert dabei denn nicht?


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Problem mit Newton
BeitragVerfasst: 22.03.2009, 15:33 
Offline

Registriert: 12.09.2008, 21:41
Beiträge: 187
Wohnort: Deutschland
Hi,

also bei mir findet einfach überhaupt keine Reaktion des Meshs statt, konnte deinen letzten Vorschlag aber bisher nicht ausprobieren, da ich im Moment auf Wochenendurlaub bin...

Was mir an der Sache am meisten spanisch vorkommt ist das ich eigentlich nur das oben verlinkte Beispiel auf mein Mesh übertragen habe, aber im Gegensatz zum Beispiel bei mir nichts funktioniert...

Melde mich wieder...

Gruß
Scarabol

_________________
My Toolbox:
- Irrlicht 1.7.1
- Blender 2.49a
- Microsoft Visual C++ Express Edition 2008
- Newton Game Dynamics 2.xx
Regeln zur Programmierung:
Regel 1: Die Programmiersprache hat keine Fehler.
Regel 2: Solltest du doch einen Fehler finden, tritt automatisch Regel 1 in Kraft.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Problem mit Newton
BeitragVerfasst: 23.03.2009, 15:39 
Offline

Registriert: 24.05.2008, 13:41
Beiträge: 151
Wohnort: Marienhafe
Hmm könntest du versuchen dein Mesh so zu positionieren das er runterfallen müsste? Bei mir war das so, das er zuerst auf die Welt gefallen ist, sich aber als er dann stand nicht mehr bewegen ließ
(tut mir leid wenn ich mich so kurz halte, liege seit gestern mit fieber im bett^^)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Problem mit Newton
BeitragVerfasst: 23.03.2009, 21:26 
Offline

Registriert: 12.09.2008, 21:41
Beiträge: 187
Wohnort: Deutschland
na dann schon dich erstma und gute Besserung, ich komme derweil eh nicht weiter und versteh auch nicht ganz wo ich die Matrix wieder setzen soll...

Überhaupt versteh ich nicht wie Newton arbeitet was diese Collision angeht bzw. diese Callbacks...

Gruß
Scarabol

_________________
My Toolbox:
- Irrlicht 1.7.1
- Blender 2.49a
- Microsoft Visual C++ Express Edition 2008
- Newton Game Dynamics 2.xx
Regeln zur Programmierung:
Regel 1: Die Programmiersprache hat keine Fehler.
Regel 2: Solltest du doch einen Fehler finden, tritt automatisch Regel 1 in Kraft.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Problem mit Newton
BeitragVerfasst: 23.03.2009, 21:35 
Offline

Registriert: 24.05.2008, 13:41
Beiträge: 151
Wohnort: Marienhafe
Ja da hab ich auch noch meine probleme mit^^

Da hab ich noch was im 2.Teil entdeckt:
Code:
NewtonBodySetUserData(jumpbody, jumpnode);
NewtonBodySetMassMatrix(jumpbody, 10, 0, 0, 0);
NewtonBodySetFreezeTreshold(jumpbody, 1.0, 1.0, 1);
NewtonBodySetTransformCallback(jumpbody, SetMeshTransformEvent);
NewtonBodySetForceAndTorqueCallback(jumpbody, ApplyForceAndTorqueEvent);
CMatrix4<float> mat;
mat.setTranslation(jumpnode->getPosition());
NewtonBodySetMatrix(jumpnode, mat.pointer());


NewtonBodySetMatrix(jumpnode, mat.pointer()); -> sollte eigentlich jumpbody sein und nicht jumpnode


Wenn du dein Node dann verschieben willst solltest du ebenfalls

CMatrix4<float> mat;
mat.setTranslation(jumpnode->getPosition());
NewtonBodySetMatrix(jumpbody, mat.pointer());

benutzen, damit sich auch der Newtonbody mitbewegt (kp ob das auch andersrum geht^^)
Hierbei gibt es aber keine Kollisionsabfrage, und da häng ich auch, da muss man wohl wieder mit

NewtonBodySetForceAndTorqueCallback();
arbeiten...


Achja was genau ist überhaupt die funktion:
CreateCollisionFromMesh(nWorld, mainplayer.node->getMesh()); ? Ist doch keine normale Newton-Funktion oder doch?^^


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Problem mit Newton
BeitragVerfasst: 24.03.2009, 19:56 
Offline

Registriert: 12.09.2008, 21:41
Beiträge: 187
Wohnort: Deutschland
hmpf das ist irgendwie alles blöde...nichts funktioniert

Die Funktion ist nicht von Newton dafür aber aus dem Fourm hier oder im Englischen Board, weiß ich leider nicht mehr genau...

Gruß
Scarabol

_________________
My Toolbox:
- Irrlicht 1.7.1
- Blender 2.49a
- Microsoft Visual C++ Express Edition 2008
- Newton Game Dynamics 2.xx
Regeln zur Programmierung:
Regel 1: Die Programmiersprache hat keine Fehler.
Regel 2: Solltest du doch einen Fehler finden, tritt automatisch Regel 1 in Kraft.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Problem mit Newton
BeitragVerfasst: 24.03.2009, 21:11 
Offline

Registriert: 24.05.2008, 13:41
Beiträge: 151
Wohnort: Marienhafe
Hmm könntest du die funktion mal hier reinposten?^^

Achne habs schon gefunden, denke ich^^ Und da haben wir auf jedenfall ein Problem
Die Funktion ist sicher aus dem tut:
http://www.irrlicht3d.org/wiki/index.ph ... nDetection

ich hab se bei mir übernommen, und dann geht das auch nicht mehr, also wird die irgentwie nicht funktionieren^^
Versuchs erstmal damit:

Character.collision = NewtonCreateBox(nWorld,20,45,22, NULL); als 20,45,22 die box größe ein wenig abschätzen - ist zwar nicht so genau, aber zum testen schon gar nicht mal schlecht^^

Achja in der Funktion aus der Wiki wird folgende Newtonfunktion aufgerufen:
http://www.newtondynamics.com/wiki/inde ... ConvexHull

hier mal ein zitat daraus:
Zitat:
it is the application responsibility that the points are part of a solid geometry.

Bin nicht der beste in englisch aber könnte vll bedeuten das die Funktion nur für Feste Objekte gültig ist (z.b. Welt da die ja nicht bewegt wird^^)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Problem mit Newton
BeitragVerfasst: 25.03.2009, 17:43 
Offline

Registriert: 12.09.2008, 21:41
Beiträge: 187
Wohnort: Deutschland
Also ich interpretiere das Convex Hull und dein Zitat so das Newton einfach eine Hülle um die Punkte erstellt und das Programm sichergehen muss, das diese Hülle auch Sinn ergibt...

Die Funktion bringt dir z.B. bei einem großen oder komplexen Mesh nicht viel, da die Hülle die meisten Ecken abrundet, aber vielleicht kann man diese ja auch sichtbar machen, wie bei Irrlicht die Debug Data...

Gruß
Scarabol

_________________
My Toolbox:
- Irrlicht 1.7.1
- Blender 2.49a
- Microsoft Visual C++ Express Edition 2008
- Newton Game Dynamics 2.xx
Regeln zur Programmierung:
Regel 1: Die Programmiersprache hat keine Fehler.
Regel 2: Solltest du doch einen Fehler finden, tritt automatisch Regel 1 in Kraft.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Problem mit Newton
BeitragVerfasst: 25.03.2009, 18:08 
Offline

Registriert: 24.05.2008, 13:41
Beiträge: 151
Wohnort: Marienhafe
Hmm, dann verstehe ich aber net warum das ganze nicht funktioniert^^ Also Die Funktion an sich, geht ja scheinbar nicht, zumindest nicht, wenn das SceneNode bewegt werden soll...
Okay das was ich dachte kann gar net sein, da er sich bei mir bewegt, nur die collision funkst net mehr^^


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de