Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 12:10

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 26 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 22, 2004 19:41 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Warum machst du denn das hier :
Code:
  1. var Body : PNewtonBody;

PNewtonBondy (fängt ja mit P an) ist doch bereits ein Pointer, also hat da ein var nix zu suchen. Ich schätze mal es liegt daran. Wenn nicht, dann benutz doch mal den Debugger, mit allen aktiven Optionen und kommentiere solange aus bis du den Fehler gefunden hast.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 22, 2004 22:09 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
also das var hatte ich rausgenommen und da funzte gleich garnichts mehr, mit var gehts. wieso ??? keine ahnung.

der debugger kommt immer bis
Code:
  1. NewtonBodyGetMatrix(BodyPin1, @PinMatrix[0,0]);
und da springt der raus. ist schon ein komisches verhalten.

hier mal noch der code meiner kompletten Newton-initialisierung (CreateXCollisionTree siehe oben) :
Code:
  1.  
  2.      mesh := TAll3dsmesh.Create(nil);
  3.      mesh.LoadFromFile('data/bowling.3ds');
  4. // Generate materials
  5. // Default (3DS scene, although a collision between this material and something of the same material will never happen)
  6. MatWorld  := NewtonMaterialGetDefaultGroupID(NewtonWorld);
  7. NewtonMaterialSetDefaultSoftness(NewtonWorld, MatWorld, MatWorld, 0.05);
  8. NewtonMaterialSetDefaultElasticity(NewtonWorld, MatWorld, MatWorld, 0.4);
  9. NewtonMaterialSetDefaultCollidable(NewtonWorld, MatWorld, MatWorld, 1);
  10. NewtonMaterialSetDefaultFriction(NewtonWorld, MatWorld, MatWorld, 1, 0.5);
  11. NewtonMaterialSetCollisionCallback(NewtonWorld, MatWorld, MatWorld, nil, @GenericContactBegin, @GenericContactProcess, nil);
  12. // Pin Material
  13. MatPin := NewtonMaterialCreateGroupID(NewtonWorld);
  14. NewtonMaterialSetDefaultElasticity(NewtonWorld, MatPin, MatPin, 0.3);
  15. NewtonMaterialSetDefaultFriction(NewtonWorld, MatPin, MatPin, 1.1, 0.7);
  16. NewtonMaterialSetCollisionCallback(NewtonWorld, MatPin, MatPin, nil, @GenericContactBegin, @GenericContactProcess, nil);
  17.  
  18. Create3DSCollisionTree(Mesh);
  19.  
  20. Matrix_SetIdentity(PinMatrix);
  21. Matrix_SetTransform(PinMatrix, V4(0,10,0));
  22. CreateXCollisionTree(BodyPin1, PinMatrix);
  23.  
  24. Matrix_SetIdentity(PinMatrix2);
  25. Matrix_SetTransform(PinMatrix2, V4(0,0,0));
  26. Matrix_SetTransform(PinMatrix2,V4(2,0,2));
  27. CreateXCollisionTree(BodyPin2, PinMatrix2);
  28.  
  29. Matrix_SetIdentity(PinMatrix);
  30. Matrix_SetTransform(PinMatrix, V4(0,10,0));
  31. Matrix_SetTransform(PinMatrix, V4(0,0,-4));
  32. CreateXCollisionTree(BodyPin3, PinMatrix);
  33.  
  34.  


langsam verzweifel ich wirklich, da ich mich leicht überfordert fühle, aber ich wills wirklich kapieren!!!

_________________
Aktuelles Projekt :
www.PicPlace.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 22, 2004 22:24 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Hm, PNewtonBody ist vom Typ Pointer, und da ein Pointer ja direkt auf einen Speicherbereich zeigt, ist ein var bei der Übergabe als Parameter eigentlich (immer) fehl am Platze. Aber da du Probleme beim Zugriff auf die Matrix des Newtonkörpers hast, und es ohne das var nicht geht (was nicht passieren darf!), läuft evtl. etwas bei der Zeigerzuweisung falsch. Hol dir die NewtonBodys also entweder ins Watchfenster, oder prüf einfach mal nach deren Erstellung ob diese nicht NIL sind. Ich tippe momentan eher auf ein Zuweisungsproblem, von daher könnte man der Sache so auf den Grund kommen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 22, 2004 22:36 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
also, hab grad mal bissl überwacht.

Ergebnis mit var :

BodyPin1 : $...
BodyPin2 : $...
BodyPin3 : $...
--> die genauen Werte habsch nu jetztt nicht aufgeschrieben, aber sind auch alles verschiedene, also da gibts auch keinen konflikt (nur so am rand)

Ergebnis ohne var :

BodyPin1 : nil
BodyPin2 : nil
BodyPin3 : nil

nu is aber meine komplette delphiwelt durcheinander!!!

_________________
Aktuelles Projekt :
www.PicPlace.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Sep 22, 2004 22:43 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
hab grad mal noch so die Matrix angeschaut, mit der ich die modelview (?) matrix per glMultMatrixf multipliziere angeschaut.

das ergebnis kommt mir bissl komisch vor.

PinMatrix (von BodyPin1) :

1 0 0 0
0 -0.8.. -0.5.. 0
0 0.5.. 0.8.. 0
NAN NAN NAN 1 <-- die Zeile macht mich stutzig!!!!

Edit: noch komischer ist, dass die Matrix bei allen 3 Pins gleich ist, obwohl ich die an unterschiedliche stellen gesetzt hab...

_________________
Aktuelles Projekt :
www.PicPlace.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 23, 2004 09:42 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
@Pointer :
Ich nehm das zurück. Heisst zwar PNewtonBody, aber das ist tatsächlich kein Zeiger, sondern ein Zeiger auf einen Zeiger, also las das var doch besser drin.

@Matrix :
Probier mal die Matrizen statt in z.B. NewtonCreateBox mittels NewtonBodySetMatrix zu übergeben. Bei ersterem ist die Doku nicht so aussagekräftig, und es ist möglich dass mit dieser Matrix etwas anderes gemeint ist (da steht nämlich was von Offset-Matrix). Wenn du dann immernoch die selben Matrizen für allle Objekte hast, dann liegt da wirklich ein Zeiger-Problem vor. Da solltest du mal versuchen die oben gepostete Funktion zu inlinen, ist zwar Arbeit und bläht den Quellcode, aber wenns dann geht liegts an der Parameterübergabe. Evtl. wäre es auch keine schlechte Idee deine Pins in Klassen zu packen und diese dann an die Funktion zu übergeben, statt wie bisher PNewtonBody und TMatrix4f.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 23, 2004 10:59 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
hallo sos, also die matrix bei NewtonCreateBox ist ja nur zu da, um das ganze zu verschieben (so hab ich das verstanden), aber ich werds mal so probieren mit setTransform.
mit inlinen meinst du sicherlich das einfach statt als prozedur zu hardcoden, also für jeden pin einzeiln zu schreiben (statt funktion). weil gibt auch nen befehl inline, wo ich keine ahnung mit hab.

ich hatte mir überlegt, mal ganz einfach deine glNewton3DS - Demo zu nehmen und statt boxen meine pins neizuschubsen und dann mal zu sehen, ob das geht. dann wüsste ich auf jeden fall, dass es besser ist (wie du sagtest und ich auch später machen wollte) die pins als objekte/klassen anzulegen.

schon mal erstmal vielen dank für die hilfe (die evtl. noch weiter andauern könnte). was würden manche nur ohne dich machen ??? ;-) thx!!!

_________________
Aktuelles Projekt :
www.PicPlace.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 23, 2004 11:09 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
rswm hat geschrieben:
hallo sos, also die matrix bei NewtonCreateBox ist ja nur zu da, um das ganze zu verschieben (so hab ich das verstanden), aber ich werds mal so probieren mit setTransform.

Ja, probiers halt wie gesagt mal mit NewtonBodySetMatrix. So hab ich das in meinen Demos nämlich auch gemacht, weil die Doku etwas undurchsichtig war, und man so auf der sicheren Seite ist.

rswm hat geschrieben:
mit inlinen meinst du sicherlich das einfach statt als prozedur zu hardcoden, also für jeden pin einzeiln zu schreiben (statt funktion). weil gibt auch nen befehl inline, wo ich keine ahnung mit hab.

Ja, das meinte ich damit, also jeden Pin "von Hand" erstellen und nicht über ne Funktion.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 23, 2004 11:25 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
ich probiers, in ca. 20 min gibts ne meldung, obs klappt (muss erst neubooten, und xp starten und dann probieren) ... thx

_________________
Aktuelles Projekt :
www.PicPlace.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 23, 2004 12:10 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
hallo, also ich hab jetzt das ganze mal so gemacht, wie gesagt, also jeden pin einzeln "von hand" zambasteln, da es per klasse paar probs gab (??? naja versuch ich nochmal).
nu hat das soweit geklappt, dass ich immerhin schonmal alle 3 pins fallen sehe (also von oben auf die bahn - habsch als test mal so gemacht). es falen wie gesagt alle 3, nur : einer bleibt mitten in der bahn liegen (also durchdringt zu teil die bahn) und die anderen beiden fallen durch.

aber es funzt langsam --> JUHU !!!!

_________________
Aktuelles Projekt :
www.PicPlace.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 23, 2004 12:30 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
endlich, mit klasse / object gehts ;-)

ich wollts eigentlich als anhang bringen, aber es ist 300 k groß und ne nur 256 ... leider - hab schon alles aufs minimum runtergeschraubt ;(

_________________
Aktuelles Projekt :
www.PicPlace.de


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 26 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]