[B3D] Physik 4WD Buggy in 3D

Übersicht BlitzBasic Codearchiv

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Nov 14, 2006 16:49
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, jetzt verstehe ich was du meinst. Das kann man lösen, wenn der Drehpunkt der Reifen sich im Zentrum der Reifen befindet und durch starke Verklinkungen gehalten wird. Um ein 'schwabeln' der Räder zu vermeiden, habe ich dazu kurze parallel verlaufende Speichen zur Radmitte (Drehpunkt) und sehr lang gezogene Speichen zur gegenüberliegender Fahrzeugseite (zur Stabilisation) gefertigt. Mein USB-Stick spimmt leider ein bischen und lösch mal paar Daten nach Lust und Laune. Zuhause habe ich ein Code der die Verklinkung darstellt. Morgen oder heute Abend lade ich ihn hoch...

@FOODy, geht denn die Demo von B3D dafür nicht?

Christoph

BeitragDi, Nov 14, 2006 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Um ein 'schwabeln' der Räder zu vermeiden, habe ich dazu kurze parallel verlaufende Speichen zur Radmitte (Drehpunkt) und sehr lang gezogene Speichen zur gegenüberliegender Fahrzeugseite (zur Stabilisation) gefertigt.

Von wo gehen die parallel verlaufenden Verklinkungen zur Radmitte?

FOODy

BeitragDi, Nov 14, 2006 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht sehr gut aus Very Happy
Das einzigste was komisch war, war das mit den Reifen. oO
Sonst ist es echt gut geworden!



Gruß,
FOODy
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Nov 14, 2006 17:48
Antworten mit Zitat
Benutzer-Profile anzeigen
So, um die Spannung jetzt nicht über zu strapazieren, habe ich mal kurz quick&dirty den Codeabschnitt nochmal geschrieben. Mit folgendem werden die VKs dargestellt. Somit kann man besser Fehleranalysen etc. durchführen.

Folgenden Code einfach nach UpdateWorld einfügen.Code: [AUSKLAPPEN]
 ;VK-Mesh zeichnen
 FreeEntity vkmesh
 vkmesh=CreateMesh()
 vkface=CreateSurface(vkmesh,brush)
 For q=1 To 6
  For vk.vk=Each vk
   k1.kp=Object.kp(vk\k1)
   k2.kp=Object.kp(vk\k2)
   x1#=EntityX(k1\pv)
   y1#=EntityY(k1\pv)
   z1#=EntityZ(k1\pv)
   x2#=EntityX(k2\pv)
   y2#=EntityY(k2\pv)
   z2#=EntityZ(k2\pv)
   x3#=Rnd(-.1,.1)+(x1+x2)/2
   y3#=Rnd(-.1,.1)+(y1+y2)/2
   z3#=Rnd(-.1,.1)+(z1+z2)/2
   v0=AddVertex(vkface,x1,y1,z1)
   v1=AddVertex(vkface,x2,y2,z2)
   v2=AddVertex(vkface,x3,y3,z3)
   AddTriangle vkface,v0,v1,v2
  Next
 Next

DAK

BeitragMo, Dez 18, 2006 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso fliegt das Auto, wenn ich lang genug auf Y drücke?
Gewinner der 6. und der 68. BlitzCodeCompo

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Dez 18, 2006 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil keine Begrenzer für das maximale bzw. minimale Einfahren der Stoßdämpfer eingebaut sind. Wenn du zu lange Y drückst, so haben die Dämpfer bzw. das was das fahrzeug zusammel hällt, eine negative Länge. Dies wird schon nach recht kurzer Zeit erreicht. Die Physikfunktionalität kann dann nicht mehr korrekt funktionieren und macht halt diesen 'Fehler'.

Mein Ziel war es, ein Beispiel zu veröffentlichen, dass mein maximales Einfachachheitskriterium erfüllt. Mit zwei If-Abfragen kannst du das Problem bereits beheben.

edit1
Um spezifisch auf deine Frage zurück zu kommen:
Das Auto fliegt, weil die Stangen-Solllängen-Korrektur immer nur in eine Richtung (Typeliste) abgearbeitet werden. Die Folge: Extreme Längenkorrekturen gehen dann zu ungunsten der Physik in eine Richtung, da bereits eine Korrektur einer Stange (vk) eine Reduzierung der nächsten im selben Verbindungspunkt (kp) zur Folge hat. Man könnte auch das beheben, indem man die Typeliste immer abwechselnt einmal runter und einmal hoch abarbeitet. dieses würde aber mehr Rechenaufwand bedeuten. Das Beispiel währe auch komplexer. Die Korrektur würde sich im Normalbetrieb so gut wie garnicht auswirken.
 

Steven

ehemals "Steven04"

BeitragDi, Dez 19, 2006 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Ik finde das Beispiel auch ganz nett. Habe mir jetzt so etwas ähnliches selbstgeprogt, nur meins enthält leider noch einige Bugs...

Aber eine Frage hätte ik: Ich verzweifele schon seit längerem daran, eine "Zurücksetz-Funktion" einzubauen. Mein Problem ist, dass ik nicht weiß, wie ik alle entitys an eine Stelle setzen kann...

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Dez 19, 2006 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie meinst du das 'Alle Entitys an einer Stelle setzen'? Falls du das Verschieben, in diesem Fall das Auto, meinst, so müssten dann alle Knotenpunkte eines zusammenhängendem Objektes gleichzeitig versetzt werden. Das ginge mit TranslateEntity ganz gut, oder einem Reset des Fahrzeugs.
 

Steven

ehemals "Steven04"

BeitragDi, Dez 19, 2006 20:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Jap, das meinte ik. Ich bekomme es aber aus irgendeinem Grund nicht hin: Ich bekomme nicht alle "Kugeln von den Reifen" dann zu der gewünschten position, die ich mit positionentity angebe.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Dez 20, 2006 14:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Dieses Problem habe ich bereits an einen früheren Beitrag schon beschrieben. Umpositionieren oder drehen ist nicht einfach via PositionEntity oder RotateEntity möglich. Beim Umpositionieren geht es ja noch recht einfach. Alle KPs müssen relativ verschoben werden. Mit PositionEntity würde man eine absolute Position angeben. Wenn diese auch noch auf einem Punkt geschoben werden, so wird die VK-Ausgleichsroutine diese 'aussereinander sprengen'. Probiere es doch mal TranslateEntity nachdem das Fahrzeug schon 'zusammen gebaut' ist. Rotieren ginge auch zB mit Matrizen. Da man aber in B3D nicht auf diese verändert zugreifen kann, muß man sich was anderes überlegen. Drehungen von 90° könnte man mit Spiegelungen der X/Y-Achsen machen. Feinrotationen ginge mit anderen Funktionen 'Drehimpuls' zB.

Black Spider

BeitragFr, März 23, 2007 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
hm,
ich hab mir den Code jetzt schon ziemlich lange angeschaut,
und das Prinzip mit den Verklinkungen und Knotenpunkten ist recht schick,
ein teil kapier ich sogar, zwar sind mir ein paar sachen noch etwas suspekt, doch im allgemeinen... allerdings,
wo genau sagst du dem Fahrzeug es soll sich entsprechend der Position der Knotenpunkte drehen?
Das einzige was ich dazu gefunden habe ist diese Zeile:
Code: [AUSKLAPPEN]
 UpdateWorld

 ;KnotenPunkte
 vertexcounter=0
 For kp.kp=Each kp
  kp\yg=kp\yg-.0022
  MoveEntity kp\pv,kp\xg,kp\yg,kp\zg
  If CountCollisions(kp\pv)>0 kp\xg=0:kp\yg=0:kp\zg=0
  VertexCoords face,vertexcounter,EntityX(kp\pv),EntityY(kp\pv),EntityZ(kp\pv)
  vertexcounter=vertexcounter+1
 Next


soweit ich das erkenne verschiebst du die Vertices in dem Wagen entsprechend,
doch wenn ich jetzt ein normales Mesh habe, dann würde das doch gar nicht Funktionieren,
wie bekäme man das eigentlich da hin?
(oder sind das garnicht diese Zeilen die dafür zuständig sind)
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, März 23, 2007 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Stimmt, dazu habe ich bereits schon am Anfang berichtet. Man kann kein Mesh einfach so integrieren, da das ganze System ja nicht auf ein Entity zurück greift. Es sind viel mehr mehrere 'Entitys' bzw. Position im 3D-Raum die sich gegenseitig beeinflussen, so wie es die Moleküle eines Körpers ja auch tun.

Da mir die Problematik nun auch bekannt ist, und ich dazu nicht mehr zu stande war, dieses zu lösen, habe ich folgenden Beitrag eröffnet: https://www.blitzforum.de/foru...hp?t=20938 Letztendlich hat BIG BUG eine sehr gut Lösung zum Problem gefunden. Was du nun brauchst - um ein Mesh einbinden zu können - ist nun folgendes. Lege drei Knotenpunkte eines Fahrzeugs fest, die deine Koordination für das Mesh bereit stehen. Positioniere das Mesh an einem dieser Punkte und richte es anhand der relativen Position entsprechend aus. Fertig.

Es wird allerdings ein weiteres Problem geben. Nämlich das der Reifen. In diesem Beispiel besteht jeder Reifen aus 8 KPs, was zum einen Rechenaufwendig ist und durch die interne Physik, keine große Fahrgeschwindigkeit erlaubt. Ziel ist es nun, nur noch ein KP pro Reifen zu erstellen und entsprechend umzurechnen. Also Drehmoment etc. Vorteil dieser Methode: Weniger Recourcenverbrauch zur Berechnung, schnelle Fahrgeschwindigkeit möglich, bessere Gewichtsverteilung gegenüber den Rest des Fahrzeugs. Nachteil: Keine Kreiselstabilität mehr (was aber bei einem Auto nicht zu tragen kommt (bei einem Motorrad wohl eher (hab ich auch ein Beispiel zu))).

Um den Unterschied der Reifen zu sehen, vergleiche mal die 2D-Version https://www.blitzforum.de/foru...hp?t=19846 gegenüber meines Contestbeitrages http://www.hectic.de/data/buggy_2d.rar

Leider habe ich noch keine 3D-Version mit entsprechenden Reifen programmiert. Ich denke aber, dass man den Code von BIG BUG verändert auch dazu verwenden könnte.^^
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Eingeproggt

BeitragDi, Mai 08, 2007 13:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habs mal wieder gespielt. In der Schule. War der absolute Renner Very Happy

Wenn sich 4 Leute auf das Spiel stürzen und es von vorn bis hinten und von hinten bis vorne durchspielt, findet man auch solche Fehler:

user posted image

Dasselbe ist mir schonmal mit dem Kopf passiert Very Happy

Hoffe, du findest den Fehler.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Mai 08, 2007 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Very Happy Ja, sieht sehr lustig aus. Ich weiß auch woran das liegt, weiß aber nicht ob man es gescheit lösen kann, denn, im Grunde ist es kein wirklicher Fehler. Durch ein Unfall hast du bestimmte (unsichtbare) Bauteile über beansprucht, was zu einem 'Flip' (oder wie man es nennen mag) führte. Man könnte Kontrollmechanismen einbauen die sowas dann wieder gläten oder das Fahrzeug einfach schrotten wenn ein so heftiger Unfall geschieht.

Der Beitrag passt im übrigen nicht ganz hierher Wink, da es sich hier um die 3D-Version handelt und es sich hierbei um eine erweiterte 2D-Version (Contest) handelt, welcher Code nicht veröffentlicht wurde. Aber sobald ich etwas mehr Zeit und Lust finde, wird die Codespielerei richtig zu einem Spiel ausgebaut.

Mit dem Kopf hatte ich es übrigens noch nie. Muss auch lustig aussehen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Kernle 32DLL

BeitragMi, Jun 13, 2007 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Feine Sache, Feine Sache ^^

Wenn ich den Code verstehen würde, würde ich glatt nen Game drauß
machen xD

ich hoffe du bastelst da snoch was weiter Razz Ist echt coool !
Das erinnert mich an so nen Mini-Truck Game.... da fielen auch einfach
die Teile bei überstrapazierung ab... ich schau mal ob ichs finde ^^

Grüßle:
Kernle

PS: Jaaaa, Bridge Builder, das war noch nen geiles Game Very Happy
Sowas musste mal machen Wink
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog]
Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89
Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Jun 13, 2007 21:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Bridge Builder habe ich auch zum Abwinken gespielt. Das Spiel hat mir auch die Idee gegeben, sowas mal selber zu probieren. Hier meine Version vom ''Bridge Builder''. Zu finden https://www.blitzforum.de/foru...p;start=36
Bridge Builder für arme sozusagen. Very Happy

Zu verstehen ist nicht schwer. Lese dir dazu den Threatverlauf meiner 2D-Version. Die 2D-Version ist etwas einfacher für den Anfang. Wenn du denoch Fragen hast, kannst du immer gern Fragen stellen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Kernle 32DLL

BeitragMi, Jun 13, 2007 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, werd ich machen ^^
Ist jedenfalls faszinierend ^^

Ich für meinen Teil habe nach etwas Google-Suche auch das Trucking
game wiedergefunden was ich angesprochen habe Wink

http://www.3impact.com/Monster.../index.htm

Die Demo die ich seinerzeit gespielt hatte war besser Razz
Mein PC: "Bluelight" - Xtreme Gamer PC [Video]
Meine Projekte: Cube-Wars 2010 [Worklog]
Anerkennungen: 1. Platz BCC #7 , 1. Platz BCC #22 , 3. Platz BAC #89
Ich war dabei: NRW Treff III, IV ; Frankfurter BB Treffen 2009

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group