Tutorial: Rollbandanzeige

  • Für die klassische Rollbandanzeige gibt es einen eigenen Materialtyp. Wie dieser konfiguriert und verscriptet werden muss, ist Thema dieses Artikels.

    1 Vorarbeit

    1.1 Rollband

    Das eigentliche Rollband wird als einfaches, unanimiertes Rechteck konstruiert, wo eine exemplarische Rollbandtextur, die genau ein Feld umfasst, draufgemappt wird. Generell können mehrere Rollbänder, die die gleichen Ziele und Zielreihenfolge haben, zusammen gefasst werden.

    1.2 Anti-Flacker-Polygon

    Damit es später beim Übergang auf das jeweils nächste Ziel nicht zu einem "Flackern" des Rollbandes kommt - was dadurch entsteht, dass die Textur erst nachgeladen werden muss - wird außerdem noch pro getrennt verscriptetem Rollband ein jeweils komplett separates, verstecktes, einzelnes Polygon benötigt, welches jeweils ein eigenes Mesh darstellt. Auf dieses wird später stets die Textur das übernächsten Zieles (oder der Liniennummer) gemappt, sodass diese bereits vorgehalten wird und nicht erst beim Betätigen des Rollbandes geladen werden muss. Was für eine Textur dort aufgebracht wird, ist völlig egal, Hauptsache, die einzelnen Polygone werden auch als getrennte Meshs exportiert und im ContentTool importiert, sodass pro Polygon ein eigenes Material zugewiesen werden kann.

    1.3 Die exemplarische Textur

    Mit "exemplarischer" Textur meine ich die Textur, die man im 3D-Modell zum korrekten Mapping benutzt. Sie selbst wird später nicht in Erscheinung treten, sondern stets durch die "eigentlichen" Zieltexturen ersetzt. Die exemplarische Textur "baut" man so auf, wie später alle anderen Rollband-Ziele aussehen. Wenn Seiten- und Frontrollband kombiniert werden, könnte sie so aussehen:



    Wichtig ist, dass verschiedene "Ausschnitte" nicht übereinander angeordnet werden! Sähe es z.B. so aus:



    ...dann würde sowohl vorne als auch an der Seite immer abwechselnd das vordere und das seitliche Rollband-Ziel zusehen sein. Das ist meistens unerwünscht, daher die seitliche Anordnung.
    Man kann es sich auch so vorstellen, dass man ein "echtes" Rollband nimmt und dann so waagerecht zerschneidet, dass man pro Ziel einen "Schnipsel" erhält.

    1.4 Die tatsächlichen Rollband-Texturen

    Jedes Rollband-Ziel (oder -nummer) wird dann als separate Textur gespeichert mit der Funktion "Eigenständige Texturen". Abgesehen von der oben erwähnten, exemplarischen Textur für den Export aus dem 3D-Programm (die "Rot-Gelbe" ;-) ), sollten die wirklichen Rollband-Ziel-Texturen auch in einem anderen Ordner/Container gespeichert werden, um eine gewisse Systematik und Unabhängigkeit zu erreichen.


    Importiert werden sie separat im ContentTool unter "Eigenständige Texturen". Bei Rollband-Nummern empfehlen sich manuell vergebene, aufeinander folgende ContentIDs.

    1.5 Import der Texturen im ContentTool

    Nach dem Start des ContentTools wählt man "Eigenständige Texturen" und wählt dann die Textur aus.



    Sofern es sich um eine *.bmp-Datei handelt, erscheint eine Vorschau der Textur (diese Funktion ist leider bei *.dds-Dateien nicht möglich). Außerdem sind bereits diverse Optionen sichtbar und vorgewählt.



    Die Optionen sind üblicherweise schon sinnvoll eingestellt. Hier aber nochmal in Kurzform:

    • "Wiederholung" (oder "Wiederholung gespiegelt", "Geklemmt" oder "Einmalig"): Wie verhält sich die Textur, wenn man sie über ihren Rand hinaus nutzen möchte - üblicherweise soll sie dann einfach "wieder von vorne" anfangen - sich also "wiederholen".
    • Dateiname: Dies ist nicht der Dateiname der importierten *.bmp- oder *.dds-Datei, sondern der der künftigen LOTUS-internen Textur. Es ist schlicht der komplette Name der Originaldatei plus ".ltx".
    • Content-ID: Wie auch bei anderen Precontainern kann hier die ID selbst eingestellt und die Rechtevergabe sowie Sichtbarkeit geregelt werden. Wichtig ist an dieser Stelle vor allem, dass "Im Map-Editor sichtbar" eingestellt wird. Bei den Rollband-Zielen sollte die ID gezielt sinnvoll und systematisch vergeben werden (s.u.).

    Nun schlicht auf "Save & Pack" klicken, dann wird der Container gepackt, in das LOTUS-MyContent-Verzeichnis gelegt und ist ab sofort verfügbar. Sollen mehrere Texturen dieses Ordners importiert werden, reicht es, zunächst auf "Save" zu klicken, dann über "Import" die nächste Textur zu wählen und nach dem letzten Import auf "Save & Pack" zu klicken.

    1.6 ContentIDs

    Die ContentIDs sollten gezielt, systematisch und dokumentiert vergeben werden, insbesondere, wenn sie aus dem Script heraus manuell angesteuert werden sollen (und nicht über Hofdateien gesteuert werden).


    In unserem Beispiel werde ich von einem Nummern-Rollband ausgehen, welches die Nummern 0 bis 9 enthält. Die Texturen sollen die Content-Sub-IDs 10000 bis 10009 erhalten und die UserID desjenigen Users, der die Rollbandtexturen importiert hat, sei 12345678. Die vollständigen ContentIDs lauten also 12345678:10000 bis 12345678:10009

    2 Script

    Script und Material-Eigenschaften kommunizieren bzgl. des Textur-Tauschs über zwei Integer-Variablen, die in die PUBLIC_VARS-Sektion des Scripts eingetragen werden müssen. Wir nennen sie hier DisplayNumberUpperTexID: integer; und DisplayNumberLowerTexID: integer;. Dann brauchen wir noch eine dritte Variable für das Anti-Flacker-Polygon: DisplayNumberPreLoadTexID: integer; Außerdem benötigen wir eine Variable, die für das "Verschieben" des Rollbandes zuständig ist, diese nennen wir DisplayNumberTranslate: single;.


    Wir nehmen nun an, dass es eine "single" (!!) Variable gibt, die von 0 bis 9 durchlaufen kann (z.B. angesteuert über zwei Tasten-Events), diese heiße displayNumber: single.


    Der Code zum Ansteuern der drei "public Vars" könnte nun so aussehen:

    (Ich hab ihn bisher noch nicht getestet, falls ich Tippfehler oder schlimmer eingebaut habe, freue ich mich sehr über Feedback! :-) )


    3 Material

    3.1 Rollband

    Für Rollbänder gibt es aufgrund der etwas "verwickelten" (im wahrsten Sinne des Wortes! :-D ) Konstruktion einen eigenen Materialtyp: "Roller Blind Display".


    Hier sind folgende Konfigurationen durchzuführen:

    • Blendmodus: Wenn es Abschnitte oder generell Transparenzen gibt (z.B. zum Durchschauen auf eine dahinterliegende Textur, die z.B. die Technik zeigt, wenn das Rollband ausgebaut oder zuende ist), dann muss hier natürlich "Alphatransparenz" ausgewählt werden. Sonst geht auch "Normales Rendern".
    • Helligkeit der Nachttextur: Rollbänder können ohne Probleme auch beleuchtet werden. Die Nachttextur bewegt sich dabei NICHT, weil davon ausgegangen wird, dass es sich um eine feststehende Vorder- oder Hintergrund-Beleuchtung ist, und nicht das Band selbst leuchtet.
    • Rollband-Position: Als Zahl muss hier eine 1 eingetragen werden, da ansonsten das Ziel nicht 1:1 bewegt wird, sondern mit dem Faktor, den diese Zahl darstellt. Dahinter, als Variable, wird DisplayNumberTranslate ausgewählt.
    • Nachttextur mit normaler Textur multiplizieren: Dieser Haken dürfte eigentlich immer angehakt werden.
    • Normale Textur: Das ist jetzt die "obere" Textur. Was vorne ausgewählt wird, ist völlig egal, entscheidend ist, dass dahinter als Variable DisplayNumberUpperTexID eingestellt wird.
    • 2. Textur: Das ist die "untere" Textur. Hier gilt dasselbe - die Variable ist DisplayNumberLowerTexID.

    3.2 Anti-Flacker-Hilfs-Polygone

    Zuletzt muss jedem der am Anfang erwähnten, versteckten Polygon ein komplett eigenes Material zugewiesen werden. Dieses braucht nur vom Typ "Simple" sein. Wichtig ist, dass ins Variablen-Feld der Standard-Textur - so wie schon beim Rollband - diesmal die Variable DisplayNumberPreLoadTexID eingetragen wird.


    Fertig! :-)