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

Aktuelle Zeit: Fr Jul 18, 2025 06:44

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



Ein neues Thema erstellen Auf das Thema antworten  [ 44 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 30, 2004 16:31 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
jaja das system mit der wechselwirkung kenn ich, hab schonmal versucht, eine fahrzeugphysic komplett selbst zu schreiben, will mir aber jetzt newton als grundlage zurechtbiegen, damit das anständig wird. achja mal ne frage, das auto bei dir rutscht extrem schnell, liegt das nur an den parametern oder ist das bei newton allgemein so (in der simplen demo is das auch so) ?????
falls es die parameter sind, welche da genau ??? weil wills recht realisitisch haben und da nervt dieses geslide meist nur (einziger kritikpunkt an deiner demo *g*)

rswm

edit:

@tut: *g* das kenn ich schon, war grundlage meiner anstrengungen vor einiger zeit *g*
wie klein das inet doch ist *g*

_________________
Aktuelles Projekt :
www.PicPlace.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 30, 2004 16:37 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Die Tatsache dass das Fahrzeug so rutscht ist Parametersache, die Physikengine tut was du ihr sagst. Wenn du ein realistischeres Verhalten willst, musst du Materialien mit realistischen Parametern (Statische u. kinetische Reibung, Weichheit, Elasitizität) erstellen, dein Fahrzeug realistische Proportionen haben (v.a. Verhältnis Chassis zu Reifen), deine Federung korrekt eingetellt sein (da muss man recht viel rumprobieren), dein Fahrzeug einn realistischen Masseschwerpunkt habne (beim Fronttriebler z.B. vorne und recht tief), etc.

Ausserdem ist der Integrator für die Fahrzeugstabilität in der aktuellen Newtonversion noch nicht optimal (Runge-Kuttna 2ter Ordnung, wenn man z.B. die Länge der Dämpfer recht gerin setzt, *explodiert* das Fahrzeug). In der aktuellen Beta ists bereits RK4, und da fühlt sich das Fahrzeug in meiner Demo (ohne jegliche Parameteränderungen) schon besser an. Aber wie gesagt war das da in der Demo mein erstes Fahrzeug, und bis man korrekte Paramter hat kanns Stunden/Tage/Wochen dauern (es sei denn man kennt sich mit Fahrzeugen bereits sehr gut aus und hat die Werte im Kopf).

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 30, 2004 17:14 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
ok, also parameter, die findet man aber auch oft im netz, bei dem tut von dir(was de angegeben hast) is ja auch ein link zu specs von ner corvette dabei, also kann man damit schon ma bissl rumspielen.

_________________
Aktuelles Projekt :
www.PicPlace.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 06, 2004 18:07 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Hab mal etwas mit der Vehicle und der 3DS-Scene Demo herumgespielt und das Fahrzeug dann kurzerhand in die Newton-3DS-Scene-Demo verfrachtet...

Vehicle in einer 3DS-Scene


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 06, 2004 18:30 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Wie schon per Mail mitgeteilt sehe ich nur eine leere Szene auf meiner Radeon. Sobald ich aber das Fahrzeug resette, sehe ich für einen Sekundenbruchteil die Szene. Evtl. solltest du da mal prüfen ob du nicht irgendwo nen Fehler machst. Dein Problem liegt wohl an einer Matrix bzw. den Werten für die Kamera, denn wenn ich gluPerspective durch nen festen Wert ersetze, sehe ich was. (Hab aber momentan keine Lust fremden Quellcode zu begutachten, dass hab ich die Tage schon zu Genüge gemacht, will auch mal selbst coden).

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 06, 2004 19:50 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Sascha Willems hat geschrieben:
Dein Problem liegt wohl an einer Matrix bzw. den Werten für die Kamera, denn wenn ich gluPerspective durch nen festen Wert ersetze, sehe ich was.

gluPerspective durch einen festen Wert ersetzen? Was meinst du damit?
Das einzige gluPerspective, was ich gefunden hab, ist dieses in ApplicationsEventsIdle:
Code:
  1. gluPerspective(FOV, ClientWidth/ClientHeight, zNear, zFar);


Verdächtig erscheint mir noch:
Code:
  1. NewtonBodyGetMatrix(Vehicle.Body, @M);
  2. cameraEyepoint := V3(M[3,0]-cameraDir[0]*Zoom, M[3,1]-cameraDir[1]*Zoom, M[3,2]-cameraDir[2]*Zoom);

und
Code:
  1. gluLookAt(cameraEyepoint[0],cameraEyepoint[1],cameraEyepoint[2],
  2.           cameraEyepoint[0]+cameraDir[0],cameraEyepoint[1]+cameraDir[1],cameraEyepoint[2]+cameraDir[2], 0,1,0);


Aber das sind leider nur Vermutungen...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 06, 2004 19:54 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Sorry, mein Fehler. Ich meinte ja auch gluLookAt. Wenn man das durch ein festes glTranslatef(0, -10, 0) ersetzt, dann erkennt man was. Also machst du evtl. was bei der Berechnung der Kameravektoren falsch. Hast du da was ggü. den zugrundeliegenden Demos verändert?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 06, 2004 21:18 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Berechnung der Kameravektoren...
Eigentlich hab ich da nichts verändert. Das mit den Kameravektoren und vor allem gluLookAt ist für mich relatives Neuland. Von daher hab ich davon erstmal die Finger gelassen.
Ich hab das halt soweit angepasst, dass die Kamera, statt wie bisher mit der BallMatrix, mit der Matrix vom Fahrzeug ausgerichtet wird.

Ich hatte da so eine ungefähre Vorstellung von Matrizen in diesem Zusammenhang und hab einfach mal ausprobiert, ob das so klappt, wie ich mir das vorgestellt hab. Und bei mir hats auf Anhieb geklappt... :D

Das ganze hab ich in etwa so gemacht:

Die Prozedur zum resetten vom Ball hab ich mit der Prozedur zum Flippen vom Fahrzeug verglichen.
Den Ball-Reset-Code hab ich dann in den Flipp-Teil reinkopiert und den Code, der da vorher drinstand auskommentiert.

Nun stand in TNewtonVehicle.Flip der Reset-Code vom Ball drin.
Ich hab dann die Stellen, wo etwas von BallMatrix stand, durch tmpM ersetzt.

Das sah dann erstmal so aus:
Code:
  1. //=============================================================================
  2. //  TNewtonVehicle.Flip
  3. // =============================================================================
  4. //  Flips the car back to correct orientation if it bended over
  5. // =============================================================================
  6. procedure TNewtonVehicle.Flip;
  7. var
  8.  tmpV : TVector3f;
  9.  tmpM : TMatrix4f;
  10.  
  11.  m,n  : Integer;
  12. begin
  13. {tmpV := V3(0,0,0);
  14. // Stop all car motions
  15. NewtonVehicleReset(Vehicle.Joint);
  16. NewtonBodySetVelocity(Vehicle.Body, @tmpV[0]);
  17. NewtonBodySetOmega(Vehicle.Body, @tmpV[0]);
  18. NewtonBodySetTorque(Vehicle.Body, @tmpV[0]);
  19. NewtonBodyGetMatrix(Vehicle.Body, @tmpM[0,0]);
  20. tmpV := V3(tmpM[3,0], tmpM[3,1]+5, tmpM[3,2]);
  21. Matrix_SetIdentity(tmpM);
  22. Matrix_SetTransform(tmpM, tmpV);
  23. tmpM[1,1] := 1;
  24. NewtonBodySetMatrix(Vehicle.Body, @tmpM[0,0]);
  25. Vehicle.SetTorque(0);}
  26.  
  27.  
  28.        // Stop all car motions
  29.        tmpV := V3(0,0,0);
  30.        NewtonVehicleReset(Vehicle.Joint);
  31.        NewtonBodySetVelocity(Vehicle.Body, @tmpV[0]);
  32.        NewtonBodySetOmega(Vehicle.Body, @tmpV[0]);
  33.        NewtonBodySetTorque(Vehicle.Body, @tmpV[0]);
  34.        // Reset ball to next start point in list
  35.        for m := 0 to Scene3DS.NumMeshes-1 do
  36.         if Scene3DS.Mesh[m].Name = 'start'+IntToStr(CurrStartPoint) then
  37.          begin
  38.          Matrix_SetIdentity(tmpM);
  39.          with Scene3DS.Mesh[m] do
  40.           Matrix_SetTransform(tmpM, V3(Minimum.x+(Maximum.x-Minimum.x)/2,
  41.                                              (Minimum.y+(Maximum.y-Minimum.y)/2),
  42.                                              Minimum.z+(Maximum.z-Minimum.z)/2));
  43.          NewtonBodySetMatrix(Vehicle.Body, @tmpM[0,0]);
  44.          // Set next spawn point
  45.          for n := 0 to Scene3DS.NumMeshes-1 do
  46.           if Scene3DS.Mesh[n].Name = 'start'+IntToStr(CurrStartPoint+1) then
  47.            begin
  48.            Inc(CurrStartPoint);
  49.            exit;
  50.            end;
  51.          // No next start point found, set to zero
  52.          CurrStartPoint := 0;
  53.          exit;
  54.          end;
  55.        // If no start points in scene, reset to zero position
  56.        Matrix_SetIdentity(tmpM);
  57.        Matrix_SetTransform(tmpM, V3(0,10,0));
  58.        NewtonBodySetMatrix(Vehicle.Body, @tmpM[0,0]);
  59.  
  60. end;


Mir kommt da grad so eine Idee... Ich hab da auf die Schnelle nicht entdecken können, dass irgendwo tmpM etwas zugewiesen wird...
Aber wieso geht das dann bei mir?

Hier jedenfalls der Code vom Ball-Reset:
Code:
  1. // Stop all ball motions
  2.        NewtonBodySetVelocity(BallBody, @VZero);
  3.        NewtonBodySetOmega(BallBody, @VZero);
  4.        NewtonBodySetTorque(BallBody, @VZero);
  5.        // Reset ball to next start point in list
  6.        for m := 0 to Scene3DS.NumMeshes-1 do
  7.         if Scene3DS.Mesh[m].Name = 'start'+IntToStr(CurrStartPoint) then
  8.          begin
  9.          Matrix_SetIdentity(BallMatrix);
  10.          with Scene3DS.Mesh[m] do
  11.           Matrix_SetTransform(BallMatrix, V4(Minimum.x+(Maximum.x-Minimum.x)/2,
  12.                                              Minimum.y+(Maximum.y-Minimum.y)/2,
  13.                                              Minimum.z+(Maximum.z-Minimum.z)/2));
  14.          NewtonBodySetMatrix(BallBody, @BallMatrix[0,0]);
  15.          // Set next spawn point
  16.          for n := 0 to Scene3DS.NumMeshes-1 do
  17.           if Scene3DS.Mesh[n].Name = 'start'+IntToStr(CurrStartPoint+1) then
  18.            begin
  19.            Inc(CurrStartPoint);
  20.            exit;
  21.            end;
  22.          // No next start point found, set to zero
  23.          CurrStartPoint := 0;
  24.          exit;
  25.          end;
  26.        // If no start points in scene, reset to zero position
  27.        Matrix_SetIdentity(BallMatrix);
  28.        Matrix_SetTransform(BallMatrix, V4(0,10,0));
  29.        NewtonBodySetMatrix(BallBody, @BallMatrix[0,0]);
  30.        end;


Ich denke, man sieht ganz deutlich, dass ich da einfach ersetzt hab. War wohl etwas Intuition mit dabei. (Wie eigentlich meistens bei meinen Projekten ;) )

Gruß,
SpaceJunky


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 06, 2004 21:35 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
So, hab nun eine neue "Version" hochgeladen mit ganzen zwei neuen Zeilen ;)
Sind im TNewtonVehicle.Flip-Teil und extra markiert.

Hier noch ein Screenshot:
Bild

Link zum Download ist der gleiche:
http://www.frase.hits4.net/Vehicle3DS.zip


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 06, 2004 21:41 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Aha, jetzt klappts auch hier. Ist recht nett, allerdings benutzt du wohl kein Time-Based-Movement, oder? Zumindest fährt das Fahrzeug bei mir im Vollbild langsamer als im Fenster.

P.S. : Arbeite grade an nem kompletten Spiel das auf dem Vehikel-Container von Newton basiert, allerdings wirds kein Rennspiel. Werde in den nächsten paar Wochen evtl. mal was dazu schreiben.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 06, 2004 22:11 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Sascha Willems hat geschrieben:
Aha, jetzt klappts auch hier.

Ah! Schön! Dann sind Matrizen doch nicht so schwer, wie ich dachte.
Wenn doch nur alles im Leben so schön wär...

Sascha Willems hat geschrieben:
Ist recht nett

:D

Sascha Willems hat geschrieben:
allerdings benutzt du wohl kein Time-Based-Movement, oder? Zumindest fährt das Fahrzeug bei mir im Vollbild langsamer als im Fenster.

Jep. Und zwar, weil ich im Zusammenhang mit der Anzahl der Fps merkwürdige Reaktionen bei Newton festgestellt habe.
So fingen die Räder dann bei bestimmten fps-Werten an auf dem Boden zu "hüpfen" (Wie bei einem Presslufthammer, in etwa).
Auserdem ist mir noch nicht zu 100% klar, was die Methode NewtonSetMinimumFrameRate() macht.
Erschwerend kam noch hinzu, dass ich eigentlich Latein hätte lernen sollen. ;)
Timebased Movement wird aber noch eingebaut werden.

Sascha Willems hat geschrieben:
P.S. : Arbeite grade an nem kompletten Spiel das auf dem Vehikel-Container von Newton basiert, allerdings wirds kein Rennspiel. Werde in den nächsten paar Wochen evtl. mal was dazu schreiben.

Na dann drück ich dir mal die Daumen und hoffe, dass es dann zu Weinachten Screenshots gibt. Schöne Bescherung ;)

Ich werd' mich in nächster Zeit mal mit den konvexen Hüllen von Newton auseinandersetzen. Die haben einen sehr schönen Eindruck bei mir hinterlassen.
Auserdem hab ich jetzt endlich eine Einstellung gefunden, mit der die Autos halbwegs realistisch fahren. Hab einfach die Reibung vom Material auf 1 erhöht. Damit kann man prima Elch-Test spielen ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 07, 2004 17:45 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Na dann poste ich hier mal nen sehr sehr frühen Screenshot zu dem Projekt :

Bild

Grob zum Spielprinzip :
Es ist eine Strecke gegeben, die man innerhalb einer bestimmten Zeit abfahren muss. Allerdings hängen am Fahrzeug eine (festlegbare) Anzahl von Anhängern, und auf jedem Anhänger liegt eine Last. Von dieser Last muss dann bei der Zieldurchfahrt ein Mindestsatz vorhanden bleiben, um weiterkommen zu können. Dürfte also eine recht spassige Geschicklichkeitssache werden, besonders wenn man Steigerungen fahren will ohne Sachen zu verlieren. Das Spielprinzip ist so in dieser Form recht einmalig (kenne zumindest nix in der Richtung), und macht schon jetzt Spaß. Technisch steht alles (Strecke inkl. Spezialzonen wird aus 3DS geladen, Fahrzeuge und Trailer inkls. Spezialinfos werden auch aus 3DS geladen, Level können auch schon gespeichert/geladen werden), jetzt gehts also ans Szenario, den Content und die Spiellogik.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 07, 2004 18:04 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Ja allein die Idde ist schonmal cool ;)
Und um die Umsetzung mache ich mir auch net wirklich sorgen ;)

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 07, 2004 19:32 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
das muss auf jedenfall jetzt schon nen daumen nach oben geben *g*

_________________
Aktuelles Projekt :
www.PicPlace.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Dez 07, 2004 19:55 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Das sind aber nicht die Frames per Second da oben links im Screenshot, oder??? :shock: :D

Zum Spielprinzip: Hübsche Idee :wink:.
Zur Grafik: Ich weiß nicht, wie du das machst. Irgendwie schauen so ziemlich alle Shots von dir genial aus.
Ok, hier schaut das jetzt nicht nach Grafikwunder aus, aber die Buttons der VCL drumherum tragen auch ihren Teil zur Grafik und zum Gesamteindruck bei. Schaut nach Editor aus.

Definition: Sascha, was verstehst du unter einem Rennspiel?`Sowas wie NFS? Oder generell eine Fahrt von A nach B unter Zeitdruck?

Zu 3DS: Das Format gefällt mir recht gut, nur wie schaut das aus mit der Länge der Bezeichner? Also Namen von Objekten, Materials und so weiter? Sind die auf 8 Zeichen begrenzt?
Kann man zu einem Objekt nicht noch einen Kommentar hinzufügen, oder sowas ähnliches? Zwecks speicherung von Spezialinfos. Bisher hab ich das so geregelt, dass ich irgendwelche Dummys genommen hab und deren Namen angepasst hab. In den Programmen selber hab ich dann die Positionen von den Dummys ausgelesen und dann halt entsprechend Startpositionen und sowas gesetzt.
Für Positionen ist das ja auch ok, aber was, wenn man einem Objekt (sagen wir mal einem Auto) spezielle Eigenschaften zuweisen will? Z.B. Unverwundbarkeit, oder - für Newton - die Masse und sowas.
Ich hab mir für solche Fälle bisher noch InI-Files o.ä. geschrieben und da das Zeug ausgelesen. Aber schöner wäre es natürlich direkt im 3DS.


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


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 1 Gast


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.010s | 16 Queries | GZIP : On ]