Hilfe bei 3D-Autogame

Previous topic - Next topic

Tenorm

Hi,

ich hab mal spontan versucht, ein kleines 3D-Auto-Game im Gelände zu machen. Damit mein Auto auch immer so steht, wie es soll, also jenachdem ob es bergauf oder schräg fährt, messe ich die Entfernung von Reifen zu Boden an allen 4 Reifen. Ich möchte dann das Auto so drehen, dass es richtig steht. Funktioniert aber nicht richtig...

Hier der Cdeausschnitt:

Code (glbasic) Select

lv=X_COLLISIONRAY(99,0,car_x+SIN(  30+car_yrot)*1.5,car_y,car_z+COS(  30+car_yrot)*1.5,0,-1,0)
rv=X_COLLISIONRAY(99,0,car_x+SIN(- 30+car_yrot)*1.5,car_y,car_z+COS(- 30+car_yrot)*1.5,0,-1,0)
lh=X_COLLISIONRAY(99,0,car_x+SIN( 150+car_yrot)*1.5,car_y,car_z+COS( 150+car_yrot)*1.5,0,-1,0)
rh=X_COLLISIONRAY(99,0,car_x+SIN(-150+car_yrot)*1.5,car_y,car_z+COS(-150+car_yrot)*1.5,0,-1,0)

car_xrot=ASIN((lv+rv)-(lh+rh))/10//durch 10 weil der Ausschlag sonst zu extrem wird
//"car_yrot" wird durch spieler bestimmt
car_zrot=ACOS((lv+lh)-(rv+rh))/10//durch 10 weil der Ausschlag sonst zu extrem wird


Funktioniert aber nicht.

Danke schon mal

Gruß

Tenorm

Sebastian

Was funktioniert denn nicht? Hast du einen Screenshot?

Tenorm

#2
Das Auto dreht sich nicht/falsch. Lange erklärung folgt, muss erst noch über verständliche Formulierung nachdenken  =D
Schon mal der screenshot

Danke für die schnelle antwort  :good:

REEDIT:
OK, Liste der Probleme:
-> x-Rotation funktioniert nur bei 3 von 4 Seiten  :'( (also jenach himmelsrichtung, von der ich den berg anfahre)
-> z-Rotation funktioniert nicht/falsch
-> Manchmal haben 2 oder mehrere der 4 messpunkte den selben, bzw. den kehrwert, was ich mir nicht erklären kann, da das ja nur der fall ist, wenn man die rampe gerade anfährt...

REREEDIT:
Erklärung zum screenshot(von oben nach unten)
// zeile 1-5 erklärt/unwichtig
messpunkt links vorne
messpunkt rechts vorne
messpunkt links hinten
messpunkt rechts hinten
x-rotation
y-rotation
z-rotation

[attachment deleted by admin]

Schranz0r

Da würde sich das Newton ganz gut machen ;)
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Tenorm

 Eigendlich kann GLB ja alles was gebraucht wird (und in newton bin ich noch ned richtig drin  :whistle: )

Schranz0r

für die collision und richtungsangaben bestimmt von Vorteil ;)
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Kitty Hello

Nun, Du hast 4 Punkte aber nur eine Drehrichtung des Fahrzeugs.
Ich würde daher das Fahrzeug auf 3 "Räder" ständern. 2 Vorne, eins hinten in der Mitte.

Jetzt hast Du die Höhen an den 3 Punkten. Wenn Du die Vektoren AB und AC kreuzt, hast Du einen "Nach oben" Vector. Der sollte dir helfen beim Ausrichten. Ist aber nicht trivial. Da wäre Newton schon einfacher.

Tenorm

Die idee mit 3 punkten is ned schlecht, aber da würde ich probleme bekommen, wenn mein auto mit den hinterreifen auf 2 hügeln steht (collisionray würde ja dann, das "tal" ausmessen und das auto würde "versinken"). Ich hab mal die exe hochgeladen.
http://rapidshare.de/files/40232396/Auto.zip.html
Auf einer seite des Berges funktionierts einwandfrei, auf der anderen seite ist die z-rot verkehrtherum  :S

Sebastian

Kann es sein, dass du die Blickrichtung des Fahrzeugs nicht berücksichtigst. Bei mir stimmen die Achsen nämlich erst dann nichtmehr, wenn ich das Auto neu ausrichte. Solange ich gerade aus fahre stimmt eigentlich alles einigermaßen.

Tenorm

#9
Meinst du mit blickrichtung die y-rotation?
Die messlinien befinden sich immer unter den rädern, auch wenn der wagen sich dreht:

lv=X_COLLISIONRAY(99,0,car_x+SIN(  30+car_yrot)*1.5,car_y,car_z+COS(  30+car_yrot)*1.5,0,-1,0)

EDIT: Versuch mal den Berg von der anderen seite aus anzufahren, da passt die z-rot garnicht, x-rot passt immer. Danke.

Schranz0r

Klar passts dann net . Da die Drehung zur Welt bezogen ist . Da dreht sich die Achse nicht mit ;)

du brauchst das:

X_PUSHMATRIX
X_POPMATRIX


;)
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Tenorm

check ich ned  :O
soll ich die welt beim auto mitdrehenlassen?

Schranz0r

Nein, dein Auto brauch seine eigene Matrix sprich vorne muss immer der Z+ sein, links  X+ und oben Y+.
Egal wie sich es dreht.

Dafür brauchst du dann POP- und PUSHMATRIX.
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Tenorm

Wie geht das, ich denk mit x_pop/pushmatrix kann man nur weitere objekte an eine bestehende Matrix anhängen, nicht eine neue erstellen.

Schranz0r

Ich mach dir nachher ein kleines Beispiel, bin grad noch am FMod Wrappen
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard