Das schöne ist schonmal, das so ein Gerät, einmal aufgebaut, einen festen Standpunkt hat, und ich in der Simulation auch keine sich bewegenden Objekte benötige. Im Prinzip schaue ich mich also nur innerhalb eines Raumes (=Würfels) um und messe Winkel zwischen verschiedenen kleinen Zielmarken an den Raumwänden. (=lese die Winkelwerte ab und subtrahiere...)
Im Prinzip müsste sowas relativ leicht zu coden sein. Ich stelle mir vor, aus irgendeinem der zahlreichen rotierender-Würfel-Turorials das ganze zu entwickeln, indem ich den Würfel ranhole, so dass ich ihn von innen sehe, und die Rotation mit Mausevents zu koppeln.
Soweit, so gut!
Mormalerweise geht man bei sowas so vor, das man erst mit Kimme/Korn/Diopter das Ziel grob anpeilt, und dann eventuell noch mit einem Blick durch das Fernrohr schaut, wo die Zielmarke genau ist. Dann wird der letzte Rest mit den Feinstellschrauben erledigt, so dass das Fadenkreuz exakt auf der Zielmarke liegt.
-->Also benötige ich zwei Ansichten: Die großräumige Kimme/Korn/Diopteransicht und die Fernrohransicht.
Grundsätzlich dachte ich, das Grobanzielen über Kimme/Korn mit der Maus (a la 3D-Shooter) zu erledigen, und die Feinstellschrauben mit WASD zu simulieren.
Bei den Ansichten würde ich gerne wissen, wie ich das mit Fernrohr- und Kimme/Korn-Ansicht am besten handele. Die große Kimme-/Korn-Ansicht wäre mit der üblichen 3D-Shooter-Ansicht vergleichbar. Dann gibt es noch die Fernrohr-Ansicht, wo man näher dran ist, und wo nur ein kreisrunder Bildausschnitt dargestellt werden soll...
Mir sind zunächst 3 Möglichkeiten eingefallen, die in Betracht kämen:
1) Umschalten zwischen Kimme/Korn- und Fernrohransicht, z.B. per Tastendruck oder Mausklick
2) Lösungen mit zwei "Viewports"
2.1) In einer Ecke des Bildschirms ist die Fernrohr-Ansicht, der Rest ist die Kimme/korn-Ansicht.
2.2) Es muß kein Vollbild-Modus sein: Ein Windows-Fenster für die Kimme/Korn-Ansicht, und eines für die Fernrohr-Ansicht. Diese können frei auf dem Desktop angeordnet werden. Allerdings sollten ein Fenster dann nicht schließbar sein, oder sich mit einem Klick wiederherstellen lassen. Dann könnte in ein Fenster auch noch die Ableseskala und eines könnte Textmeldungen ausgeben. Das wären dann mehrere OpenGL-Fenster... Leider habe ich zu sowas noch kein Tutorial gefunden.
Wahrscheinlich ist das leichteste das Umschalten der Ansichten, z.B. per Linksklick....
Ein weiteres Problem ist die Simulation des Fernrohrs. Dieses muß ja für Zielen in unterschiedlicher Entfernung jedesmal scharf gestellt werden. Das heißt, ich muß die Fernrohransicht dann immer extrem weichzeichnen. Mit dem Mausrad sollte dann das Weichzeichnen in mehreren Stufen verschwinden. Wie mach ich das??
(Für den Anfang würde es mir auch ausreichen, einfach irgendeinen zufälligen Unschärfegrad beim Neuanzielen draufzulegen, der mit dem Mausrad dann "weggedreht" werden muß; eine richtige Fernrohrsimulation mit Brennweite etc. kann ja später noch dazu...)
Umsetzen wollte ich das gesamte Projekt mit Freepascal und JEDI-SDL. Bei JEDI-SDL ist auch ein tolles Tutorial dabei, was in Freepascal läuft. Die Pascal-Texte verstehe ich auch alle zu 99%. In die OpenGL-Tricks wollte ich mit diesem Projekt dann einsteigen.
Also meine Agenda zusammengefasst:
-Würfel (Raum) in der Innenansicht mit Texturen bekleben, Fester Standpunkt, Orientierung per Maus (sollte schaffbar sein)
-Umschalten zwischen "normaler" Kimme/Korn-Ansicht und spezieller "Fernrohransicht". (???)
-Fernrohrschärfe (?????)
Vor allem zu den letzten Punkten hätte ich gern einige Tipps!
Das wären dann mehrere OpenGL-Fenster... Leider habe ich zu sowas noch kein Tutorial gefunden.
Wir daran liegen das man sowas fast nie benötigt. Wenn man den unbedingt beides gleichzeitig sehen muss, würde ich das auch in einem einzigen Fenster machen, also so Splitscreen. Ich denke am einfachsten geht sowas über den Scissor-Test
Bei deiner Fernrohschärfe hilft dir vielleicht das Stichwort Blur weiter. Sowas implementiert man im Shader. Also erst die Szene in eine Textur rendern, und diese dann mit dem Blur-Shader rendern.
P.S.
Ähm, wieso einen Würfel von innen vermessen, wäre es nicht viel cooler, wenn man eine Landschaft/Stadt/etc. vermessen muss? Genial wäre es natürlich, wenn man auch noch nen Vermessungsassistenten mit diesen Stangen (als Ziel) durch die gegen kommandieren kann
P.S.S.:
Oh, ist ja dein erster Post, willkommen bei DelphiGL
Dann zu deinen Ideen:
Ich würde zu der Variante mit Umschalten tendieren. Ist denke ich wirklich einfacher und auch realistischer, schätze ich mal. Gleichzeitig durch ein Fernrohr und dran vorbei schauen geht zwar, macht aber wohl keiner, aus gutem Grund. Außerdem wäre sowas wohl auch wenig hilfreich.
Für die Unschärfe brauchst du wohl "Depth of Field". Hab das zwar noch nie selbst gemacht, aber wenn man sucht findet man sicher einiges dazu. Der Vorteil ist, das dann nahe Gegenstände korrekt verschwommen sind. Die Distanz ist dabei dann - außer der Kameraperspektive - der einzige Parameter. Und die kann man dann ja mitspeichern, sodass die Einstellung beim nächsten mal Durchschauen gleich ist.
Wenn man keine Objekte hat die über verschiedene Distanzen verteilt sind, reicht aber wohl wirklich auch Blur. Aber ohne irgendwas, was man betrachten kann, ist Schärfe recht sinnlos.
"Ein Würfel von Innen" errinnert mich stark an Skybox.
Auf jeden Fall brauch man dann auch recht hochauflösende Texturen, sonst fliegt der Schwindel mit der Box auf.
Noch was zu der Fernrohrsicht: Den runden Ausschnitt erreicht man entweder mit einem texturierten Quad mit Alphakanal oder besser mit den Stencilbuffer, weil da die Ränder genauer sind.
Den Vorsclag mit der Landschaft oder Stadt solltest du im Hinterkopf behalten. Würde meiner Meinung nach auch dem Unterhaltungswert einen immensen Aufschwung verleihen.
Hm... fällt mir nochwas ein... naja, nicht wirklich.
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.