Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Oha, kann man eine Sprache, kann man doch auch die andere. C++ ist doch nicht viel anders, mal abgesehen von der Syntax. Ne Schleife sieht da fast genauso aus wie in Delphi, und ob da jetzt NULL oder NIL steht spielt doch auch keine Rolle. Und ansonsten schau mal auf delphi3d.net, da hat Tom nen kleinen Artikel veröffentlicht, extra für Leute die was aus C/C++ übersetzen wollen.
P.S. : An deiner Stelle würde ich mich wenigstens ein bisschen mit C++ anfreunden, gibt ja genug freie IDEs. Ansonsten wirst du oft Sachen finden die du gerne machen willst, es aber keine Delphi-Varianten für gibt.
Das Problem liegt am Programm, ich hasse einfach die umgebung in V-C++ die Syntax, ja gut,
habe mir schonmal ein Buch über DirectX in C++ gekauft.
Und auch gelesen Kam ich net mit klar, mit Delphi komme ich viel besser klar.
Nun, aber nun mal so, soll das bedeuten, das ich für meinen Spieler alle Bodys einzelnt createn und dann in meine spielerklasse speichern muss?
Also in der Spielerklasse nen array mit den bodys und dann, ne so net, scheisse ich verstehs net.
Aber du bringst ja sicherlich bald ne Demo mit nem Character raus ^^
Als ich das Auto im gl3ds-feedback sah
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ein Auto ist aber was komplett anderes als ein Charakter. Und da es noch keine Newton-Version mit Vehikel-Container gibts, gibts auch keine Demo. Und irgendwie find ichs ein wenig arm, einfach zu warten bis jemand anderes ne Demo rausbringt und da dann den Source herholen. Warum probierst dus denn nicht selbst?
Und wie gesagt : Delphi und C++ haben die gleichen Grundkonzepte, halt nur ne andere Syntax. Und VC muss ja nicht sein, gibt die wie gesagt jede Menge kostenlose und auch gute IDEs (Dev-C, dass übrigens in Delphi entwickelt wurde, ist wohl die beste).
Das soll jetzt mal dazu sein, dass er mir nur ne kugel createt und dann immer dort wo die kugel ist eine zeichnet.
Ja, immer M[3,0]=0; und die anderen 2 auch.
Wie bewege ich diese Kugel, bzw. wie mache ich es, das diese "Auf" der map ist.
Momentan erstelle ich den CollisionTree noch mit deiner Procedure aus einer *.3ds
Wieso also geht das net?
Meine Kugel ist noch halb im boden. Also auf 0. Wie änder ich das und wie kann ich die dann steuern, ich steig da net so durch.
Das hab ich jetzt mal so gemacht wie ichs mir gedacht hab.
EDIT: PS: M = ((1,0,0,0),(0,1,0,0),(0,0,1,0),(0,0,0,1));
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Kollision für ein Objekt erstellen (du hast da ein paar wichtige Sachen vergessen) :
Kollisionsobjekt erstellen : NewtonCreate[Sphere/Cube], was halt auf das Objekt passt
Newtonkörper erstellen : NewtonCreateBody(mit obigem Kollisonsobjekt als Parameter)
Dann die Matrix des Objektes setzen, in der steht wie es beim Start rotiert bzw. positioniert ist : NewtonBodySetMatrix
Callback für physikalische Berechnungen setzen : NewtonBodySetForceAndTorqueCallback
Masse und Massezentrum des Objektes setzen : NewtonBodySetMassMatrix
Du hast die 3 letzten Punkte (die ja sehr wichtig sind) komplett vergessen (steht doch alles in meiner Demo drin...)
Und dann in jedem Frame :
Newtonwelt aktualisieren : NewtonUpdate (macht man normalerweise am ENDE des Frames)
Die von Newton ermittelte Matrix holen (da steht ja alles drin, Rotation und Translation) :NewtonBodyGetMatrix
Matrix mit aktueller Objektmatrix multiplizieren : glMultMatrifx
Ausführlicher kann mans nicht mehr erklären. Ist aber doch alles haargenau in meiner Demo so gemacht. Du kannst da doch nicht einfach (siehe Tspieler.Create) die Hälfte weglassen und dich dann wundern warums nicht geht.
In der Vorletzten Zeile (die Auskommentierte) Gibt es einen Fehler wenn sie nicht auskommentiert ist, Zugriffsverletzung.
Kam aber bisher net dahinter warum, genau so hast du die Zeile bei dir doch auch, irgendwas muss bei mir noch fehlen oder?
Das ProjektionsZeugs ist alles wie im template. bzw. es ist es, den Counter muss ich noch da hinsetzen. Aber daran liegts ja net
Bei NewtonWorld gibt mir Assigned =True zurück.
Und in den ganzen Zahlen sind auch werte enthalten, und das muss ja innerhalb der Parameterübergabe sein oder?!
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Alle Debugoptionen an? Bin mir sicher dass der Fehler NICHT in NewtonUpdateWorld liegt, sonder du sonst wo nen Fehler machst. Die Callbacks sind ja auch richtig definiert, und funktionieren auch korrekt, oder?
Mh, woher soll ich wissen ob die Korrekt funktionieren?!
Ja, die Vom Compiler aus ist alles Debugging zeugs angehakt.
Aber zu den CallBacks, woher soll ich wissen ob sie tuhen was sie sollen, zumindest kommt da kein Fehler.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Was für eine AV ists denn genau, und in welcher DLL findet diese statt? Wenn das in der newton.dll ist, dann hast du vorher wohl einen Fehler gemacht, also evtl. etwas fehlerhaft an Newton übergeben. Also ganz einfach mal nacheinander wegkommentieren und sehen wos liegt.
So, habe erstmal alles auskommentiert ausser NewtonCreate und NewtonUpdate.
Und tatsächlich es ging.
Nun, nach fleißigem suchen bin ich jetzt auf folgende Zeile gestoßen.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Dann machst du etwas anderes falsch. NewtonReleaseCollision sorgt nur dafür dass das nicht mehr benötigte Kollisonsobjekt aus dem Speicher verschwindet, sollte also aufgerufen werden wenn du keine Speicherlecks willst. Dein Problem liegt also woanders, denn auch ohne diese Funktion dürften deine Objekte nicht irgendwo durchfallen.
Habe es nun versucht zum laufen zu bekommen, ABER einfach Matrix ändern, ist nicht.
Klappt übrigends mit deiner funktion da auch net so ganz, und ich verstehe auch nicht was du darin machst:
Code:
procedure ForceAndTorque(const Body : PNewtonBody);cdecl;
Das ist deine (fast) orginale procedure.
Ich verstehe das aber nicht, was machst du in dieser Funktion, die ist doch auch dafür gedacht, das Objekt zu bewegen oder nicht?
Allerdings verschwindet mein Body wenn ich diese Aufrufe.
Wenn ich das NewtonBodySetTorque; Auskommentiere, funktioniert es wieder, aber mit laufen... is nicht.
Mein Gedanke war jetzt, einfach über die Matrix zu bewegen, aber das geht nicht. er nimmt die Map nicht richtig wahr. Entweder ich laufe auf der Map und kann runter fallen, aber nirgends hochlaufen. Wenn ich nur über die Matrix also SetMatrix meine Position ändere, kann ich laufen und wenn ne Schräge kommt lauf ich durch sie durch kann man fast sagen, wenn ich zu weit laufe fall ich runter, wenn ich "IN" der Schräge stehen bleibe, rutsche ich auch runter, irgendwie komisch, wenn dus net verstehst kann ich dir mal meine exe plus model schicken.
Mitglieder in diesem Forum: Bing [Bot] und 2 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.