Editor - Problem
Übersicht

![]() |
PhillipB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also das ganze mit Sin und Cos habe ich noch nie verstanden :S
Was genau kann da jetzt raus wenn wir das auf 3d machen? P.S.:Gibt es eine Möglichkeit die Meshs in B3d auch direckt zu einem Winkel zu formen? Bei Anim8or ist mir nälich leider auch keine gute Möglichkeit bekannt. |
||
STRINGS - Einige tragen sie|wir programmieren sie! ![]() |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
A. Raumkoordinaten mit sin() und Cos() (siehe Bild A) BlitzBasic: [AUSKLAPPEN] Xadd = Schiene(Art)\Lang * Sin(loc\Richtung) im Fall der GERADE wende ich SIN() und COS() an, um die X und Y Anteile einer Linie zu erhalten, die irgendwie im Raum rotiert liegt. Dabei gilt immer: Code: [AUSKLAPPEN] X-Anteil = SIN(Richtung) * Länge
Y-Anteil = COS(Richtung) * Länge B. Tangente mit sin() und Cos() (siehe Bild B) BlitzBasic: [AUSKLAPPEN] MitteRx = loc\X1 + Cos(Strecke(An)\Richtung) * Schiene(Art)\Radius Um nun einen Punkt neben einer Linie zu finden, bei dem ein bestimmter Radius genau in dieser Linie tangieren würde, wende ich einen Trick an. Ein vertauschtes SIN() und COS() liefert genau die Senkrechte zu einer Richtung. Und so ein Mittelpunkt wäre genau senkrecht zur Linie C. Kreise malen mit sin() und Cos() (siehe Bild C) Sin() und Cos() laufen immer von -1 bis +1. Und dabei immer so das gilt sin()^2 + cos()^2 = 1 Damit lassen sich also Dreiecke malen, bei denen zu einem best. Winkel immer eine gleichlange Längskante 1 entsteht . Die "Spitzen" dieser laufen also wie ein Radius um den gemeinsamen Eckpunkt der Dreiecke. D. Was kann da raus... Na das müsst Ihr doch wissen. Ich kann euch ja nicht euer Programm schreiben. Nur beim Theoriewust helfe ich gerne... Früher oder später werdet ihr alle Formeln darin benötigen. Ich schreibe grad eine, die ausrechnet, wo die 2.Achse eines Waggons sein muss, wenn die erste Achse an einer best. Stelle der Strecke ist. Für die 3D-Objekte ist es nur wichtig, wo sie liegen Strecke\X1->X und Stecke\Y1->Z und in welchem Winkel sie gedreht werden müsssen Strecke\Richtung. Außerdem müsst ihr darauf achten, dass der Nullpunkt euerer 3D-Objekte immer mittig am einen Ende der Schiene sitzt (notfalls PositionMesh() ) Das ganze ist übrigen eigentlich ein reines 2D-Problem. Schienen sind ja nahezu zweidimensional. Also ich würde mit einer Vorstufe anfangen, die erst mal alle Probleme in TopDown-Sicht löst. Die Schienen wären dann nur Images mit schwarzen Linien als Schienen drauf. In einem solchen Modell lassen sich alle Fragen einer Eisenbahn bereits lösen und das Modell kann später fast ohne Änderungen auf 3D übertragen werden. E. Meshs zu Winkeln formen Da ich die totale Null bin, wenn es um 3D-Objekte geht, kann ich dir da nicht wirklich weiterhelfen. Meines Wissens nach gibt es immer so etwas wie "Rotationskörper" herstellen. Dabei wird eine Schienenstück (z.b. nur 2 Schwellen lang) um einen Mittelpunkt, der weit weg von den Schwellen liegt, rotiert und so entstehen 720 Schwellen, die dann einen Kreis bilden. |
||
Cedric30003 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ersteinmal Danke an alle insbesondere an Midimaster, der sich die Zeit genommen hat uns eine so umfangreiche Erklärung zu erstellen!! *daumen hoch*
Derzeit haben wir diesens Beispiel noch nicht weiter eingegriffen, da ja der Grundstein dazu fehlt, zu welchem ich jetzt komme: Nun haben wir erstmal mit dem Objekte setzen angefangen, das schlichtuntergreifend dass einfachste ist. Wir wollen dass wenn eine Taste gedrückt wird, mehrere Objekte kopiert werden (2 Cubes welche nacher als einrastpunkte dienen sollen und die eigentliche Fahrstraße) Nun haben wir aber ein Problem bei der Zuweisung der ID's welche immer weiter erhöht werden sollen. Wir haben uns auch schon in der Hilfe "CopyMesh" durchgelesen, aber da wird einmal nur ein Objekt kopiert. Hier einfach mal der Code, der sagt glaube ich mehr aus: Code: [AUSKLAPPEN] Graphics3D 1366,768,32
SetBuffer BackBuffer() FPSTimer = CreateTimer(30) Global quit = 0 Global cam1 =CreateCamera() licht = CreateLight() AppTitle "Editor" Kachel = LoadMesh("Kachel.3ds") PositionEntity cam1,0,3.5,0 ;Objekte laden GeradesGleis = LoadMesh("10m.3ds") HideEntity GeradesGleis Point = LoadMesh("Point.3ds") Global PointID% = 1 Global SchieneID% = 1 HideEntity Point Function Kamera() ;Kamera drehen If MouseDown (2) TurnEntity cam1,-MouseYSpeed()/4,0,0 TurnEntity cam1,0,-MouseXSpeed()/4,0,1 MoveMouse GraphicsWidth()/4,GraphicsHeight()/2 EndIf ;[Block] Freie Kamerabewegung ;bewegen If KeyDown(17) And KeyDown (42) Then MoveEntity cam1, 0, 0, +0.5 EndIf If KeyDown(17) Then MoveEntity cam1, 0, 0, +0.02 EndIf If KeyDown(31) Then MoveEntity cam1, 0, 0, -0.02 EndIf If KeyDown(32) Then MoveEntity cam1, +0.02, 0, 0 EndIf If KeyDown(30) Then MoveEntity cam1, -0.02, 0, 0 EndIf ;Kamera hoch und runter If KeyDown(16) Then TranslateEntity cam1, 0, 0.05, 0 EndIf If KeyDown(18) Then TranslateEntity cam1, 0, -0.05, 0 EndIf ;[End Block] ;[Block] Perspektiven ;Fahrersicht If KeyDown (2) Then PositionEntity cam1,0,3.5,84 RotateEntity cam1,0,0,0 End If ;IBIS Sicht If KeyDown (3) Then PositionEntity cam1,-2,2,88 RotateEntity cam1,0,0,0 End If ;[End Block] End Function While Not quit = 1 If KeyDown(1) Then quit = 1 Kamera() If KeyHit(2) Then ;Gerades Gleisstück später mit auswalmöglichkeit ;) "Point" + PointID% = CopyMesh (Point) PositionEntity "Point" + PointID%,0,0,0 PointID% = PointID% + 1 "Point" + PointID% = CopyMesh (Point) PositionEntity "Point" + PointID%,0,0,-10 PointID% = PointID% + 1 "Schiene" + SchieneID% = CopyMesh (GeradesGleis) PositionEntity "Schiene" + SchieneID%,0,0,0 SchieneID% = SchieneID% + 1 EndIf UpdateWorld RenderWorld WaitTimer (FPSTimer) Flip 0 Wend End Danke im Voraus MfG Phillip&Cedric |
||
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB) |
![]() |
biggicekey |
![]() Antworten mit Zitat ![]() |
---|---|---|
Befasst euch mit Types und mit Funktionen.
Wenn ihr Types verstanden habt, werdet ihr auch Midimasters Beispiel verstehen und eine ganze Menge mehr. https://www.blitzforum.de/help/Type Dann müsst ihr wie Midimaster eine Funtion schreiben, die bei Tastendruck automatisch ein neues Objekt erstellt und in eure Type "Datenbank" mit der entsprechenden ID einträgt. Alles was Ihr braucht steckt schon hier im Thread. |
||
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller Nothing more to register - you've cleaned us out![/size] |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jupp, Types benutzen. Die Instanz ist immer eindeutig, eine "ID" ist unnötig und Fehleranfällig. | ||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Cedric30003 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja das war mir schon alles klar.
Aber wir wollen einfach nur dass ein Objekt kopiert wird und dann einen Namen zugewiesen bekommt, mit einer ID, welche sich bei jedem erneuten drücken (in diesem Falle von Key2 bzw. "1" über den Buchstaben) um 1 erhöhen soll. Mehr wollte ich derzeit garnicht. MfG Phillp&Cedric |
||
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB) |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab nochmal genau hingesehen: So funktionieren Variablen nicht.
CopyEntity gibt ein Integer Handle zurück. Du versuchst das irgendeinem String zu zu ordnen - das bringt nichts. Variablen, Arrays, Types - da kannst du das Objekt hinterlegen, nicht in Strings. |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Cedric30003 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sorry wenn ich frage, aber wie soll es dann umgestezt werden? | ||
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB) |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
...mit Types...
Ein Field ![]() |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jungs,...ihr zäumt das Pferd von hinten auf! Das mit dem 3D-Teil kommt es viel später!
Zitat: ...mit dem Objekte setzen angefangen, das schlichtuntergreifend dass einfachste ist.
Eben nicht! Die Objekte lassen sich erst sinnvoll "setzen", wenn klar ist wohin! Es ist nichts gewonnnen, wenn ihr die Bildchen von den Schienen in eine 3D Umgebung reinwerft. Daraus weiß noch kein Zug, wohin er fahren kann! Zunächst müsst Ihr ein funktionierendes Gleissystem in seiner Logik hinbekommen, bevor ihr Euch Gedanken macht, wie man optisch mit der Maus die Schienenstücke aneinanderbekommt. Ich wollte über das Thema "Ich schreib ein Computerspiel, das mehr kann als alle anderen zuvor" schon immer mal ein Tutorial machen. Ich sehe das so oft, dass sich die Leute Gedanken um Probleme machen, die (wenn überhaupt) erst in einem 5. Upgrade eine Rolle spielen werden. Computerspiele schreiben ist wie eine Evolution. Man fängt ganz klein an und dann kann man es ausbauen. Wenn Ihr wollt assistiere ich Euch gerne bei dem Projekt. Meine Vorgehensweise wäre so: 1. Version: 1D-Schienen-Logik entwickeln, Punkt-Lok draufstellen. Hin und Herfahren lassen. Dabei natürlich immer darauf achten, dass die Typen schon für 3D geeignet sind. Gerne am Ende das Ganze in eine 3D-Welt einbauen. 2. Version: 2D-Schienensystem mit Kurven entwickeln. (Das ist, was ich gestern schon fertig hatte) Lok mit 2 Achsen draufstellen. Im Kreis fahren lassen. Dabei tauchen einige Probleme gegenüber 1D auf, die gelöst werden wollen. Gerne am Ende das Ganze in eine 3D-Welt 3. Version: 2D-Schienensystem um Weichen erweitern. 4. u.s.w Dabei kann man zum Spass das Ganze auch immer in einer (erst mal flachen) 3D-Welt laufen lassen. Noch mal: Ein Schienensystem ist von der Logik her nur 2D! Eine Lok sogar nur 1D! Denn die kann in Ihrem System nur geradeausfahren. |
||
Cedric30003 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Midimaster hat Folgendes geschrieben: Eben nicht! Die Objekte lassen sich erst sinnvoll "setzen", wenn klar ist wohin! Es ist nichts gewonnnen, wenn ihr die Bildchen von den Schienen in eine 3D Umgebung reinwerft. Daraus weiß noch kein Zug, wohin er fahren kann!
Ja, das war uns schon klar, wir wollen ja erstmal Testweise versuchen das Schienenlegen ansich hinzubekommen, alles weitere kommt dann ja nacher darauf, wir wollten uns erstmal damit vertraut machen Übrigens: Du hast eine PM ![]() MfG Cedric&Philllip |
||
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group