Editor - Problem
Übersicht

Cedric30003Betreff: Editor - Problem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey!
Ja ich weiß viele werden jetzt wieder ![]() ![]() Nun, in erster Linie wollen wir so verfahren, dass man mit der Maus die einzelnen Fahrstraßen-Teile aneinandersetzt, und welche - wenn die Endpunkte nah genug beieinander liegen - dort "einrasten". SPäter sollen die einzelnen Fahrstraßen (alle WayPoints untereinander) in einer txt gespeichert werden. Nun stellt sich (leider Gottes) noch ein Problem auf: Bei der Überfahrt von einer Weiche kommt man ja auf eine Gegenfahrspur (bei einer Kehranlage), solange bis man wieder auf einer richtigen Fahrspur ist oder zurück fährt. Ähnlich ist es beim zurücksetzen: Dann müssen die WayPoints ja auch wieder in Gegenrichtung gelesen werden. Ich hoffe mal dass dies hier einigermaßten verständlich war, da es etwas blöde ist, es zu formulieren. Danke im Voraus MfG Cedric |
||
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB) |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
An welcher Stelle kommt es da zu welchem Problem? | ||
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 Der Denkansatz dazu fehlt einfach, wie man das am besten anfängt, wir haben jetzt zwar schon nee Stunde überlegt aber sind im Endeffekt nur zu folgendem ergebnis gekommen:
Code: [AUSKLAPPEN] Type Schiene Field ID ;selbsterklärend Field Rot_start ;Rotationsgrad am Anfang des Gleises Field Rot_ende ;Rotationsgrad am Ende des Gleises Field Rast_start;Ob dieses Gleis an ein vorheriges angehängt ist oder es ein neues "Fresitehendes" ist Field Rast_ende ;Ob am Ende des Gleises ein weiteres eingerastet ist End Type Graphics3D 1366,768,32,1 SetBuffer BackBuffer() FPSTimer = CreateTimer(30) Global cam1 =CreateCamera() licht = CreateLight() AppTitle "Editor" Kachel = LoadMesh("Kachel.3ds") PositionEntity cam1,0,3.5,0 10er = LoadMesh ("10m.3ds") HideEntity 10er 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 KeyHit (1) Kamera() UpdateWorld RenderWorld WaitTimer (FPSTimer) Flip 0 Wend End Und da hängt es halt. Der Grundstein dazu fehlt, warauf man dann weiteres aufbaut. Wir wissen einfach nicht genau wie man dies umsetzen kann, wir haben jetzt nur Teilstücke uns überlegt, welche aber nicht umsetzbar sind, da man sie auf das jetzig bestehende nicht anwenden kann. Bitte seid uns nicht böse aber es ist mal wieder so eine typische "Denksperre" wie man so (un-)schön sagt. ![]() Danke für deine bisjetzige Stellungnahme. MfG Cedric&PhillipB |
||
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB) |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Typ Schiene ist definitiv unvollständig. Auf jeden Fall fehlen noch solche Dinge wie Koordinaten und Mesh.
Probiert doch einfach mal, einzelne Teile des Codes auszukommentieren oder regelmäßig DebugLog ![]() ZEVS |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Geht es darum die Teile ein zu rasten, die Waypoints richtig zu erstellen, oder sich anhand der Waypoints zu bewegen? | ||
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 ![]() |
|
---|---|---|
Erstmal geht es daraum dass die Schiene einrastet, weiteres wird dann später darauf aufgebaut. | ||
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB) |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
meine Gedanken dazu:
So wie ich das aus dem Code lese, enthält der Typ "Schiene" lediglich die verschiedenen möglichen Gleisstücke, wie bei einer Modelleisenbahn? Dann fehlt euch aber noch der Typ "Strecke", der die WayPoints repräsentiert und als eines seiner Fields ein Array "Verbindungen()" enthalten sollte. Eine "Weiche" ist dann zwar optisch von Typ "Schiene" aber logisch 3 Waypoints A1 B1 B2 die mit zwei Verbindungen A1-B1 und A1-B2 verbunden sind. Nun ist es vollkommen unerheblich, ob der Zug von A1 via B1 nach C1... und irgendwann nach S1 kommt, oder ob er der Zug von A1 via B2 nach C2...und irgendwann über eine Weiche R2 wieder auf S1 kommt. Die Schienen sind übrigens nicht Bilder die man den WayPoints zuordnen sollte , sonder Bilder der "Verbindung". Möglicherweise dort wieder einen Typ anlegen, der die aktuelle Ausrichtung der Schiene in dieser spez. Verbindung festhält. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Am besten gibt es eine "ausgewähltes Stück"-Variable (wahl z.B. durch CameraPick![]() |
||
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 gut, soweit hatten wir das mittlerweile auch schon wieder interprettiert, Aber es gibt ja Kurven, wo der Endpunkt ja nicht in die genau gleiche Richtung zeigt:
![]() Ich denke mal das sagt mehr als dass ich jez die tastatur qualmend tippe MfG Cedric Edit: Ich entschuldiuge mich für die Rechtschreibfehler im Bild |
||
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB) |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum macht ihr ein große Kurve nicht aus einem großen Mesh? Oder wie wolltet ihr kurven realisieren?
Die Ausrichtung der Waypoints lässt sich ja aus dem vorhergehendem Teil berechnen. |
||
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 es sind mehrere vorgefertigtre Mesh Objekts die im 3DS Format vorliegen.
Und diese Objekte sollen ineinader einrasten |
||
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB) |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eventuell solltet ihr zu jeder Schiene die vorherige Speichern. Da findet ihr immer die nächste Schiene und könnt beliebig vorwärts und rückwärts fahren. Die Position des nächsten Streckenabschnittes erhält man dann mithilfe des vorhergehenden und ein paar Winkelfunktionen.
Eine Frage: Soll die Strecke 3D oder 2D sein? ZEVS |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann gibt es doch keine Probleme. Die Abmessungen der Meshes sind bekannt, ggf. gibt es für eine Kurve mehrere Waypoints deren Position auch bekannt ist. Sobald man das neue Teil dazu setzt, wird die Fahrrichtung für die Waypoints berechnet - oder im Editor sind wie Waypoints sowieso nochmal sicht- und einstellbar. | ||
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 ![]() |
|
---|---|---|
3D
(Sonst würden wir keine .3ds dateien laden;)) @Xeres: SOrry, aber ich habe mir das jetzt zum 10. mal durchgelesen, und werde daraus nicht schlau. Ich weiß, es ist nicht gerne gesehen: aber wäre ein Beispiel möglich, welches ncihtmal lauffähig sein muss, sondern einfach nur die Struktur bzw vorgehensweise wiedergibt. Kopieren würde ich es eh nicht können, da ja eh alles angepasst werden müsste. Danke im Voraus MfG |
||
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB) |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich halte es für einen Fehler, wenn man den Schienen schon eine Fahrrichtung gibt. Letztendlich ist es doch für den Zug so, dass er die Schiene am einen Ende "betritt" und dann natürlich am anderen Ende wieder verlässt. Dort wird er an die nächste Schiene übergeben.
Es ist klug von Euch, den Winkel jedes Schienenstück zu wissen, damit man dann imemr weiß, in welchem Winkel das nächste Stück gedreht werden muss, um an das vorherige zu passen. Setzt man an eine gerades Stück, das in Richtung 0° läuft eine Kurve mit 30°, dann werden die nächsten anzusetzenden Schienen um 30° gedreht dort angesetzt. Ein Gerades, dass ja selbst 0° hat, kommt dann auch am Ende wieder mit 30° raus und. Eine Kurve mit wieder 30° wird am Ende also bei 60° rauskommen, was bedeutet, dass das nächste Stück diesmal um 60° gedreht eingebaut werden muss, damit es passt. Ein gerades Stück kann übrigens an n° und an n+180° angebaut werden und passt trotzdem. Wird also ein gerades Stück bei 260° eingebaut, kann man sein Ende auch wie 80° betrachten und darf daher an ein entgegenkommendes Gleis mit 80° angeschlossen werden. Entwickelt daraus ein kurzes "Sondergleis" für Kehrschleifen. Später aus der Sicht des Zuges betritt er jedes Schienenstück mit 0° und dreht dann während des Schienenstück um die Gradzahl der Schiene. Da spielen Kehrschleifen keine Rolle mehr. Der Zug wird also bei dem "Sondergleis", die Richtung 260° beibehalten. Er fährt ja auch in Gegenrichtung. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lass mich das nochmal im Detail wiederholen:
Gehen wir mal kurz von einem bestehenden Teilstück Strecke aus. Ich klicke eine Maustaste, CameraPick wählt dieses eine Teilstück als Aktiv aus. Dann setzte ich mit der anderen Maustaste ein neues Stück daran. Aus der Position & Größe des erstens Stücks und der Größe des zweiten wird die zweite Position errechnet. Der 1. Waypoint bekommt seine korrekte Ausrichtung durch das ansetzen des 2. Stücks, da jetzt wie Richtung festgelegt ist. Das neue Teilstück wird automatisch als Aktiv ausgewählt. Jetzt kann man z.B. eine komplett gerade Strecke hintereinander setzen, und alles funktioniert prima. Jedes Modell-Objekt muss die Informationen über mögliche Ansatzpunkte erhalten - über Childs/Joints oder aus einer Datei geladen - und ggf.wo relativ zum Modell die Waypoints verlaufen. Ansonsten: Versuche beim BPS #11 mit zu machen oder achte zumindest auf die Ergebnisse. Das Thema ist in seiner Gesamtheit schon etwas komplexer, da werde ich zumindest nicht mal eben ein Beispiel her zaubern. |
||
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 ![]() |
|
---|---|---|
Deine Erklärung war sicher besser als ein Beispiel, da hast du recht.
Wir werden das mal versuchen, sowie Xeres beschrieben hat, umzusetzen. Weitere Fragerei wäre Laufen ohne fortzukommen ![]() MfG Cedric Edit: Gibt es eine Möglichkeit, genau Winkelkurven mit einem 3D Programm zu erstellen? Oder vllt auch mit blitz3D?!? Im Anim8or is mir keine gute Funktion bekannt. |
||
Windows 7 Enterprise (x64) | AMD Athlon II X4 620 (4x2,61GHz) | 8GB RAM | nVIDIA GeForce 9500GT (1024MB) |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
hier mal eine spielerei von mir.
das Programm setzt aus 3 Grundelementen eine Strecke zusammen. Man muss nur 3 Dinge angeben: - eigene Objekt-Nr - Verwendetes Grundelement - Objekt an das angeschlossen wird BlitzBasic: [AUSKLAPPEN] Graphics 1000,800 vielleicht könnt ihr es ja irgendwie brauchen.... |
||
- Zuletzt bearbeitet von Midimaster am Fr, Aug 19, 2011 17:31, insgesamt 2-mal bearbeitet
![]() |
PhillipB |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Midimaster: Ein großes Lob !
Bis zur Funktion hab ich alles verstanden. Fehlt da eigentlich nicht noch die Gleis ID ? Wie werden die Gleise sonst zusammen gefügt? Könntest du villt. so nett sein Die einzelnen Schritte in der Funktion zu kommentieren, dann würden wir noch ein Stück weiter kommen. mfg |
||
STRINGS - Einige tragen sie|wir programmieren sie! ![]() |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich dachte mir gleich, dass ihr nach genau sowas sucht.
Was du hier siehst, ist die Logik zum Zusammensetzen der Schienen. Die Funktion macht genau das. Du muss nur sagen, welches Schienenstück du an welches setzen möchtest und schon wird es korrekt ausgerichtet und erhält auch gleich noch eine ID. BlitzBasic: [AUSKLAPPEN] AddGleis 401,GERADE,299 der erste Parameter ist die ID, die das neue Gleisstück erhalten soll. Der zweite Parameter zeigt auf eine Schiene einer Schienensammlung mit best. Grundelementen. Der dritte Parameter legt fest, mit welchem Element das neue Schienenstück verknüpft werden soll. Hier mal die Funktion mit mehr Kommentaren: BlitzBasic: [AUSKLAPPEN] Function AddGleis (Nr% , Art% , An%) |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group