[B3D] Physik 4WD Buggy in 3D
Übersicht

![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sieht sehr gut aus ![]() 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 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wieso fliegt das Auto, wenn ich lang genug auf Y drücke? | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. |
||
Stevenehemals "Steven04" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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... |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. | ||
Stevenehemals "Steven04" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habs mal wieder gespielt. In der Schule. War der absolute Renner ![]() 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: Dasselbe ist mir schonmal mit dem Kopf passiert ![]() Hoffe, du findest den Fehler. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() Der Beitrag passt im übrigen nicht ganz hierher ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() 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 ![]() Sowas musste mal machen ![]() |
||
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 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() http://www.3impact.com/Monster.../index.htm Die Demo die ich seinerzeit gespielt hatte war besser ![]() |
||
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group