Car-Physik

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Matthias

Betreff: Car-Physik

BeitragSa, Okt 27, 2007 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hay. Ich habe mich mal versucht an einem Autorennspiel. Soweit functioniert alle. Die Autos fahren schön ihre Bahnen und coliederen auch miteinander wie es sein mus. Nur die AutoPhysik mit der bin ich überhaupt nicht zu frieden. Ist so Raumschiffartig.

Das Beispiel von BlitzBasic.com kann mann auch vergessen. Das gefält mir auch nicht. Das ding ist viel zu schwamig. Auch wenn ich die Trägheit raus nehme dan dreht das ding irgendwie durch.

Kennt jemand ein gutes Tutorial. Oder hat jemand mit CarPhysik schon etwas Erfahrung gemacht, und kann mir helfen?

SpaceTaste drücken um zu starten. 0.6MB
https://www.blitzforum.de/upload/file.php?id=2229

user posted image

Das Map stammt nicht von mir dient nur als Platzhalter

peacemaker

BeitragSa, Okt 27, 2007 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso nimmste nich ne Physikengine wie z.B. Newton? Die hat ziemlichen Haufen an Befehlen für Autos...
Ich weiss aber nicht ob du das irgendwie in 2D nutzen kannst....

MfG
~Tehadon~
www.tehadon.de
http://www.blitzforum.de/worklogs/14/
 

Matthias

BeitragSa, Okt 27, 2007 19:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja ich will nicht unbedingt auf eine DLL zurück greifen da mann da nichts mehr großartigs ändern kann.

Who

BeitragSo, Okt 28, 2007 22:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Du könntest, damit das Ganze realistischer wird, bei langsamer Geschwindigkeit die Lenkung stärker als bei schneller Geschwindigkeit machen (das ist natürlich kein Ersatz für richtiges schliddern). Aber noch wichtiger finde ich das Kollisionsverhalten Auto <-> Auto (zB seitlich ins Heck des Gegners fahren + abdrängen). Das habe ich selbst mit einer zweiten Kollision gelöst:

1. Kollisionsabfrage: Auto, Auto (Bilder werden gemalt)
2. Kollisionsabfrage: maskiertes Bild das sich auch mit dem Auto dreht, bei dem aber nur die vordere Hälfte des Autos vorhanden ist (nicht gemalt)

Damit kann man prüfen, wo die Kollision stattfindet und dann auch, in welche Richtung die Autos gedreht werden müssen.

/ \ wird zu | | oder sogar \ / (Fahrtrichtung nach oben)

_ / wird zu _ \

Ich hoffe diese notdürftige Skizze hilft dir weiter und beantwortet deine Frage

MFG Who

EDIT: sorry, ich hatte übersehn dass das BMax ist, damit kenne ich mich nicht aus... meins ist für B2D Embarassed

Markus2

BeitragMo, Okt 29, 2007 14:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich versuche mich gerade daran es über Verbindungen zu lösen
welche die Karosse bzw. den Autoboden nachbilden .
Die Verbindungen kann man sich wie Federn vorstellen und eine
Feder hat zwei befestigungs Punkte .
4 von den befestigungs Punkten nehme ich als Räder welche
dann auch Kontakt haben zum Boden (je nach Untergrund)
und die Karosse stabilisieren .
Ich bin damit noch nicht ganz fertig und habe die Hoffung das
es sehr echt wirkt .

Eingeproggt

BeitragMo, Okt 29, 2007 14:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hat jemand von euch denselben Fehler gemacht und geht auf ne HTL, Fachrichtung Maschinenbau oder ähnliches?

Uns wird seit Jahren versucht, die Mechanik einzutrichtern... das geht natürlich weit darüber hinaus, was die meisten im Physik Unterricht lernen, aber ich will jetzt mal nur von den Grundgleichungen reden...

Masse mal Beschleunigung ist Summe aller Kräfte

Der Ansatz ist nicht so schwer (aber ohne Skizzen und Formeleditor verdammt schwer zu erklären^^)

Problem dabei ist halt die Lösung. Ich hätts schon längst umgesetzt, wenn mein Mechanik-Lehrer nicht ständig was von Differentialgleichungen reden würde. Smile Die kann man in BB nämlich nicht lösen, schon gar nicht in Echtzeit...

Hat sich jemand schonmal damit auseinander gesetzt? bzw läuft das am Ende eben auf dieses Feder-Knoten-System hinaus, welches hectic schonmal erfolgreich in seinem Buggy-Spiel umgesetzt hat?

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Dreamora

BeitragMo, Okt 29, 2007 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich studiere zwar Elektrotechnik aber auch wir haben das Privileg, Mechanik zu geniessen (und glaub mir, ist spassiger als quanten- und festkörper physik Wink )

Gescheite realistische Autophysik ist relativ schwer umzusetzen.

Die Grundlagen sind die Newtonschen Gesetze und die Federgesetze in Kombination mit den Hebelgesetzen/Momenten (Drehmoment etc).

Speziell letztere vergessen die meisten weil man sie in der normalen Physik auf Gymi Niveau nicht zu sehen bekommt oder nur kurz.
Sie sind jedoch für alles was nicht gerade aus geht mit einer rollenden Kugel von grundlegender Bedeutung weil sie zur m*a = Summe der Kräfte noch die Momentenkräfte hinzufügen. (ein spontan vorne abgebremster Würfel zb wird sich überschlagen. Wird er jedoch ohne Momente zb nicht)

Beim Auto zb sind das jene die daher rühren dass der Schwerpuntk des Fahrzeugs nicht im Rad ist und das es vor allem 4 gefederte Räder sind anstelle eines einzelnen.

Dadurch ergeben sich 2 Momente: Der eine in der Längsachse des Fahrzeugs beim Bremsen / Gasgeben (die Vertikale Achse des Fahrzeugs geht leicht nach vorne / hinten, schwerpunkt verschiebt sich dadurch).
Das andere Moment ist in der Querachse und kommt in Kurven zum tragen, wo die vertikale Achse des Fahrzeugs zur Aussenseite der Kurvenbahn neigt und die dortigen Räder stärker belastet werden.


Anmerkung: In der horizontalen Ebene gibt es kein Moment, da dieses nicht frei ist. Die Federn können nicht horizontal schwingen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Matthias

BeitragMo, Okt 29, 2007 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hay. Ich habe mich mal jetzt daran versucht eine Car Physik zu programieren. Ich glaube sie ist zwar schon etwas besser wie diese die ich in dem Racer Beispiel drin habe, aber das gelbe vom Ei ist sie immer noch nicht.

Also hier mal der Code in BB. (Ist ja kein Problem sie auch in BMax zu benutzen)


Code: [AUSKLAPPEN]

Graphics 800,600,32,2
Dim Auto(361)
TFormFilter False
Image=CreateImage(31,31):SetBuffer ImageBuffer(Image)
Color 255,0,0:Rect 6,0,20,32
Color 255,255,0
Rect 8,2,4,4
Rect 20,2,4,4
Rect 8,20,16,8
For I=0 To 360
Auto(I)=CopyImage(Image):RotateImage Auto(I),I
MidHandle Auto(I)

Next




KenX#=0
KenY#=0


IstPower#=0
MaxPower#=500 ;PS
Gewicht#=1555 ;Kg

PosX#=400:PosY#=300


Color 255,255,255
SetBuffer BackBuffer()

Repeat
Cls
Brems#=1:OK=0
WkSp=80
If KeyDown(203) Then Winkel=Winkel-WkSp*KenSpeed
If KeyDown(205) Then Winkel=Winkel+WkSp*KenSpeed
If KeyDown(200) Then IstPower=IstPower+.1:Ok=1
If KeyDown(208) Then IstPower=IstPower-.1:Brems=.96

If Ok=0 Then IstPower=IstPower-.1

If IstPower<0 Then IstPower=0
If IstPower>1 Then IstPower=1



If Winkel<0 Then Winkel=Winkel+359
If Winkel>359 Then Winkel=Winkel-359

KenWk#=180-ATan2(KenX*1000,KenY*1000)
Unt=Abs(Winkel-KenWk):If Unt>179 Then Unt=360-Unt
Trag#=1-Abs(Unt)*.015:If Trag<.1 Then Trag=.1

If Brems>1 Then Brems=1

Kraft#=(IstPower*MaxPower*.0000075)*Trag
KenX=KenX+Sin(Winkel)*Kraft
KenY=KenY-Cos(Winkel)*Kraft




Ge#=Gewicht*.001

KenWk#=180-ATan2(KenX*1000,KenY*1000)
KenSpeed#=Sqr(KenX*KenX+KenY*KenY)

KenKraft#=KenSpeed/Float(Ge)



negKraft#=(KenSpeed*1.293)^2
KenSpeed=KenSpeed-negKraft




KenSpeed=KenSpeed*Brems



QX=Sin(KenWk)*50
QY=-Cos(KenWk)*50


KenX=Sin(KenWk)*KenSpeed
KenY=-Cos(KenWk)*KenSpeed










KX#=(KenX*400000)/Float(Gewicht)
KY#=(KenY*400000)/Float(Gewicht)

If (Abs(KX)+Abs(KY))<3 Then KX=0:KY=0

Speed=Abs(KenX)+Abs(KenY)

PosX=PosX+KX
PosY=PosY+KY
If PosX>800 Then PosX=PosX-800
If PosX<0 Then PosX=PosX+800
If PosY>600 Then PosY=PosY-600
If PosY<0 Then PosY=PosY+600

Line PosX,PosY,PosX+QX,PosY+QY





W=Winkel
DrawImage Auto(W),PosX,PosY


Text 10,10,IstPower+"  "
Text 10,30,KenX+"   "+KX
Text 10,50,KenY+"   "+KY
Text 10,80,"Speed="+KenSpeed







Text 10,90,Winkel+" "+KenWk+"  "+Unt
Text 10,100," "+Brems+"  "+Trag



Flip
Delay 20
Until KeyDown(1)=1
End

Vieleicht kann ich ein Wenig in Mathe aber in Physik haperts echt bei mir. Leider Crying or Very sad

Ich möchte gerne das es wie in echt wirkt. Also zb das mann am Anfang schnell beschleunigt und mann um so schneller mann wird mann progressiv immer mehr Kraftaufwand hat. Dazu gibt es ja schon eine Formel Energie=Masse*(Geschwindigkeit)^2

Wiederum hat mann nun aber den Luftwiederstand der Quadratich wirkt und bei 1.293 pro Kg liegt. Und gegen die schon investierte Kraft(Kenetiche Enagie wirkt)

Dann noch die Fliehkraft die in den Kurven wirkt.

Woran hängt die RandLenkung eigentlich ab. Nur an der momentanen Geschwindigkeit bestimmt nicht.

Also eine Menge sachen die rein müssen, aber keine Ahnung wie was von einander abhängt.
 

Dreamora

BeitragMo, Okt 29, 2007 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Von den Federkoeffizienten, der Lage, Geschwindigkeit und Gewicht des Schwerpunktes, Federhöhe, Gravitation, Heck- oder Frontantrieb, ...

Die Abhängigkeiten sind da nicht ganz so einfach und das kann auch nicht mit einer einzigen Gleichung gelöst werden.
Da musst du systematisch die Kennwerte bestimmen und weiter verarbeiten bis du alle gewünschten Werte erhälst: Krafteinwirkung auf die Federn, Kräfte auf die Räder, Kraft auf den Fahrzeugschwerpunkt, ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Xeres

Moderator

BeitragMo, Okt 29, 2007 16:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Also E=mc² hat mit Autophysik weniger zu tun, dafür mehr der Luftwiderstand. Der wirkt tatsächlich entgegen der Fahrtrichtung und wird durch Verwirblungen mit steigender Geschwindigkeit größer - besonders bei DTM-Rennspielen ist man hinter einem Gegner schneller, weil der vorn als Luftschild funktioniert.
Die Massenträgheit muss beim Beschleunigen, in Kurven und beim Abbremsen praktisch immer entgegengesetzt der soll-Richtung wirken. In kurven heißt das, wenn man auch schon umgelenkt hat, bewegt sich das Auto in die ursprüngliche Richtung weiter, siehe auch driften.
Wenn man' genau machen will ist es etwas viel, aber die meisten Formeln lassen sich fürs Programmieren sehr vereinfachen, Gravitation bzw. beschleunigte Bewegungen sind ja auch nicht all zu schwer umzusetzen.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Triton

BeitragMo, Okt 29, 2007 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Also das ist nicht so wirklich "off"topic.

Ich Arrow verschiebs mal nach Allgemein.
Coding: silizium-net.de | Portfolio: Triton.ch.vu

Markus2

BeitragMo, Okt 29, 2007 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn man das so macht wie ich es beschrieben (vor) habe ergeben sich die Drehmomente von selbst .
Man hat auch nix mit dem Massenmittelpunkt zu tun .
Diche Masse (schwer) besteht quasi aus vielen kurzen Verbindungen (Federn) .
Drehimpulserhaltung braucht man auch nicht lernen .
In dem 2D Buggy Beispiel von Hectic wo die Räder
aus Verbindungen bestehen kann man gut sehen wie die Kraft auf
die Straße übertragen wird .
Wie eine Raupe die sich zusammen zieht und wieder ausdehnt .

user posted image

user posted image

EDIT:habe mal nen Pic rein gemacht wie ich das meine bzw. versuche .
  • Zuletzt bearbeitet von Markus2 am Di, Okt 30, 2007 22:22, insgesamt 4-mal bearbeitet

ozzi789

BeitragMo, Okt 29, 2007 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Könntest du nicht mal den ganzen script posten?
Hab den durchbklick verloren thx ...

Bei diesem schnipsel kommt nur : Excpecting until or forever
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

Dreamora

BeitragMo, Okt 29, 2007 21:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Obiges sollte wenn du es 1:1 kopiert hast funktionieren.

Und Blitz ist CODE nicht Script
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

BIG BUG

BeitragMo, Okt 29, 2007 23:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Von den Federkoeffizienten, der Lage, Geschwindigkeit und Gewicht des Schwerpunktes, Federhöhe, Gravitation, Heck- oder Frontantrieb, ...


Gerade bei einem Top-Down-Rennspiel muss sich die Fahrphysik nur "gut anfühlen", ob dahinter eine aufwändige Physikberechnung steht oder nicht, interessiert doch keine Sau.
Wozu brauche ich hier über 200 Parameter für ein Physikmodell(wie bei aktuellen Rennsimulationen), wenn es sich am Schluß doch nicht so anfühlt, wie man es gerne hätte?

Ich hatte mal an einem System überlegt, wo es im Prinzip zwei Schwerpunkte pro Auto gibt. Einer hinten und einer vorne zwischen den Rädern. Je nach Abtriebseinstellung und Gewichtsverteilung könnte man diesen beiden Punkten dann unterschiedliche Trägheitsmerkmale zuweisen und so ein Untersteuern oder Übersteuern erreichen.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)
 

Dreamora

BeitragDi, Okt 30, 2007 0:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich sagte ja auch nicht, dass man das so nutzen muss.
Es wurde gefragt, was einen Einfluss darauf hat bei realistischen Fahrzeugsimulationen.
Wie weit man das ganze vereinfacht oder komplett weg lässt, hängt primär davon ab obs eine Simulation oder ein Arcade Racer werden soll etc
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Markus2

BeitragMi, Okt 31, 2007 23:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin heute einen großen Schritt weiter gekommen Cool

Die EXE läuft als 640x480 im Fenster . (BBMax im Debug Modus)
http://home.kamp.net/home/r15502/AutoDemo.zip

Einfach mal Gas geben,Lenkrad einschlagen,3&4 Halten,Gas loslassen!
Oder einfach 3,4,Links fest halten und mit dem Gas spielen Exclamation

EDIT:habs heute nochmal hoch geladen , das Auto bleibt nun im Fenster

user posted image

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group