|
|
|
|
Hilfe für Raumformen Erstellen |
|
|
Wie erstelle ich eine eigene Raumform?
Im Prinzip benötigt ihr dazu nur einen simplen Text-Editor, wie zum Beispiel das Windows "Notepad". Hilfreich wäre noch ein anderes Grafik-Programm, um eine Skizze zu erstellen, dazu tuts aber auch ein Blatt Papier. Eine Skizze ist bei komplexeren Räumen unabdingbar, aber das werdet ihr von selbst verstehen. Öffnet das Notepad und erstellt euch eine Datei mit dem Namen eures neuen Raumes und der Endung ".rde". Zum Beispiel "MeinRaum.rde".
Ich werde immer so Code Blöcke einsetzen, und diesen Codeblock immer erweitern, sodass sich nach und nach eine vollständige Datei ergibt.
Nun können wir beginnen mit dem erstellen des Raumes. Dazu bietet Moove verschiedene Befehle an. Einige müssen IMMER in der Datei vorkommen, andere sind optional.
in der ersten Zeile muss immer der Befehl "ROOM" stehen:
Code
|
1:
|
|
ROOM 1, "MeinRaum"
|
Die Anführungszeichen müssen dabei gesetzt werden und der name des Raumes muss exakt so heissen, wie die Datei, aber ohne das ".rde". Wenn eure Datei also "MeinRaum.rde" heisst, so ist der Raumname "MeinRaum".
In den nächsten Zeilen die Befehle "RESOLUTION, AMBIENT LUX und BACKGROUND":
Code
|
1:
2:
3:
4:
5:
|
|
ROOM 1, "MeinRaum"
RESOLUTION 1.0
AMBIENT LUX 1
BACKGROUND RGB 0,0,0
|
RESOLUTION sollte nicht verändert werden, AMBIENTE LUX hat mit der Grundbeleuchtung des Raumes zu tun, und BACKGROUND RGB gibt die Hintergrundfarbe im RGB Code an. Mit diesen beiden Werten könnt ihr rumspielen. Ich lasse diese jedoch auch immer gleich.
Der Befehl "START":
Mit dem Befehl START gibt man den Startpunkt an, an dem man in den Raum eintritt. Dieser Startpunkt sollte logischerweise immer innerhalb des Raumes liegen, da es sonst eine Fehlermeldung Seitens Moove gibt. Ich würde den Anfangs immer auf 0,0,0 lassen. Kann später dann geändert werden. Aber Grundsätzlich den Raum immer um den Punkt 0,0 herum aufbauen, das heisst wir arbeiten später mit positiven und negativen Koordinaten. Dieses sollte so beachtet werden, da ansonsten schonmal Fehler auftreten könnten, die so vermieden werden.
Der Parameter FACE gibt dabei an, in welche Richtung der Akteur dabei blickt. Die einheit ist ein wenig unglücklich gewählt, finde ich. Es ist das Bogenmass in PI. Dabei gelten folgende Grundregeln:
- 1.57 = 90°
- 3.14 = 180°
- 4.71 = 270°
Die Punkte setzen sich so zusammen, x,y,z. Dabei ist y die Höhe über dem Boden. Der Startpunkt sollte immer die Höhe 0 haben, denn sonst "fällt" der Akteur eh herunter, wenn kein Objekt unter ihm ist. Dazu eine Skizze:
Bild: Ein Punkt im 3D Koordinatensystem
Unser Code sieht dann so aus:
Code
|
1:
2:
3:
4:
5:
6:
7:
|
|
ROOM 1, "MeinRaum"
RESOLUTION 1.0
AMBIENT LUX 1
BACKGROUND RGB 0,0,0
START 0,0,0 FACE 3.14
|
Diese Einstellungen sind IMMER in jeder "rde-Datei" vorzunehmen. Jetzt kommen wir dann zum Bau des eigentlichen Raumes. Wir bauen erstmal einen grossen 4-Eckigen Raum. Dazu benötigen wir 4 Eckpunkte. Einen Punkt definiert man mit dem Befehl "VERTEX".
Der Befehl VERTEX benötigt die Angabe von Koordinaten, wie wir es schon bei dem Befehl START hatten, und zusätzlich einen Namen:
Code
|
1:
|
|
VERTEX A, -1000.0, 400.0, -1000.0
|
A ist hier der Name des Punktes, es können beliebige Namen benutzt werden, sie müssen jedoch eindeutig sein, und dürfen nicht doppelt benutzt werden. (Beispiele: A, B, C, 1, 2, 3, a1, a2, b1, b2 etc.).
Wie ihr seht, sind hier bei den Koordinaten immer noch Dezimalstellen dabei. Ich empfehle diese auch immer zu benutzen, auch wenn man immer nur "ganze" Punkte verwendet. also immer x.0, y.0, z.0 benutzen. Das erspart später Ärger, denn ihr wisst ja wie pingelig Moove manchmal ist.
Wie schon erwähnt, würde ich immer als Mitte 0,0,0 annehmen und von dort aus, den Raum drumherum bauen. So ergeben sich für unser Beispiel 4 Eckpunkte, die wir hier mit A, B, C, D bezeichnen.
Bei einer gewünschten Raumgrösse von 2000x2000 Punkten und einer Höhe von 400 ergeben sich also Folgende Punkte:
Code
|
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
|
|
ROOM 1, "MeinRaum"
RESOLUTION 1.0
AMBIENT LUX 1
BACKGROUND RGB 0,0,0
START 0,0,0 FACE 3.14
VERTEX A, -1000.0, 400-0, -1000.0
VERTEX B, 1000.0, 400-0, -1000.0
VERTEX C, 1000.0, 400-0, 1000.0
VERTEX D, -1000.0, 400-0, 1000.0
|
Nun haben wir 4 Ecken unseres Raumes. Diese benötigen wir auch um den Bereich zu definieren, der später "sichtbar" ist und den man auch "begehen" kann. Es empfiehlt sich also, immer einen rechteckigen, grossen Bereich als Erstes zu definieren, um diese beiden Bereiche zu definieren, sonst bekommt ihr später Probleme euch in dem Raum zu bewegen. Diese 4 "Hauptecken" definiere ich immer zu Beginn, und baue darauf dann meine komplexeren Räume auf. Aber dazu später mehr. Wir bauen ja erstmal einen einfachen 4-eckigen Raum. Also mit dem Befehl "REGION" definiert man eine Region. Ich nenne diese immer "X". Man kann zwar mehrere definieren, aber lasst das bitte, denn ihr könnt später die Kamerasteuerung nicht mehr gescheit benutzen, wenn ihr mit mehr als einer Region arbeitet. Der Befehl REGION benötigt einen Namen und 4 Punkte. Ich nenne die Region immer "X", also:
Code
|
1:
|
|
REGION X, A, B, C, D
|
Zum definieren des begehbaren Bereiches benötigen wir den Befehl "WALKAREA". Diese Befehl benötigt nur die Angabe von 4 Punkten:
Code
|
1:
|
|
WALKAREA A, B, C, D
|
Unser Code sieht dann so aus:
Code
|
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
|
|
ROOM 1, "MeinRaum"
RESOLUTION 1.0
AMBIENT LUX 1
BACKGROUND RGB 0,0,0
START 0,0,0 FACE 3.14
VERTEX A, -1000.0, 400-0, -1000.0
VERTEX B, 1000.0, 400-0, -1000.0
VERTEX C, 1000.0, 400-0, 1000.0
VERTEX D, -1000.0, 400-0, 1000.0
REGION X, A, B, C, D
WALKAREA A, B, C, D
|
Um etwas sehen zu können, benötigt ihr mindestens eine Kamera im Raum. Diese definieren wir mit dem Befehl "CAMERA". Der Befehl benötigt mehrere Angeben: Ausgangspunkt, Punkt, wo sie hinschaut, und was sie sieht.
Code
|
1:
|
|
CAMERA x1, y1, z1 TO x2, y2, z2 SEES Region
|
CAMERA x1, y1, z1 gibt den Ausgangspunkt, also wo die Kamera "hängt" an. Beachtet, dass sie nicht "IN" einer Wand oder Decke hängt, sondern immer etwas davor.
TO x2, y2, z2 markiert den Punkt auf den die Kamera schaut. Dieser darf auch ausserhalb der Raumgrenzen liegen, macht aber wenig Sinn.
SEES Region gibt die Region an den die Camera sehen kann, also bei uns "SEES X". Wie gesagt, tut euch einen gefallen und arbeitet nur mit EINER Region.
Unser Code wird grösser:
Code
|
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
|
|
ROOM 1, "MeinRaum"
RESOLUTION 1.0
AMBIENT LUX 1
BACKGROUND RGB 0,0,0
START 0,0,0 FACE 3.14
VERTEX A, -1000.0, 400-0, -1000.0
VERTEX B, 1000.0, 400-0, -1000.0
VERTEX C, 1000.0, 400-0, 1000.0
VERTEX D, -1000.0, 400-0, 1000.0
REGION X, A, B, C, D
WALKAREA A, B, C, D
CAMERA 0, 350, 0 TO 0, 50, 900 SEES X
|
Als erste Kamera wähle ich immer eine, die am Startpunkt steht. EINE Kamera muss auch IMMER definiert sein, sonst schmiert Moove ab, wenn ihr in den Raum wollt.
Es können beliebig viele Kameras definiert werden.
Nun brauchen wir einen Boden und eine Decke.
Und damit man auch was sieht, ein Material, also eine Textur.
Eine Textur definiert man mit "MATERIAL", Boden mit "FLOOR" und die Decke mit "CEILING".
Material benötigt einen Namen und eine Angabe WAS es ist, Textur oder Farbe.
Code
|
1:
2:
3:
|
|
MATERIAL holo TEXTURE "__holodeck.jpg"
oder
MATERIAL schwarz RGB 0,0,0
|
Wobei ich niemals eine Farbe benutze, immer die Moove Standart Holohdeck-Textur. "holo" bzw. "schwarz" wäre der Name des Materials.
Die Texturdatei muss im Ordner "Moove/art/jpg" sein !!! Also wenn ihr eigene Texturen direkt verwenden wollt, so kopiert diese zuerst nach "Moove/art/jpg", sonst gibt es nachher eine Fehlermeldung. Aber in der Regel würde ich immer mit dem holodeck arbeiten.
Anmerkung: Wenn ihr eigene Texturen verwendet, dann könnt ihr sie später trotzdem im Raumbemaler übermalen !!!
Die Befehle FLOOR und CEILING benötigen nur wieder 4 Punkte.
Bild: Der Boden.
Demnach sieht unser Code dann so aus:
Code
|
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
|
|
ROOM 1, "MeinRaum"
RESOLUTION 1.0
AMBIENT LUX 1
BACKGROUND RGB 0,0,0
START 0,0,0 FACE 3.14
VERTEX A, -1000.0, 400-0, -1000.0
VERTEX B, 1000.0, 400-0, -1000.0
VERTEX C, 1000.0, 400-0, 1000.0
VERTEX D, -1000.0, 400-0, 1000.0
REGION X, A, B, C, D
WALKAREA A, B, C, D
CAMERA 0, 350, 0 TO 0, 50, 900 SEES X
MATERIAL holo TEXTURE "__holodeck.jpg"
FLOOR A, B, C, D
CEILING A, B, C, D
|
Jetzt brauchen wir nur noch 4 Wände. Dazu gibt es den Befehl "WALL" (Wow, wer hätte das gedacht). Der Befehl benötigt die Angabe 2er Punkte und die Parameter PAINT und NOSMAP. Der Parameter PAINT gibt ein zuvor definiertes Material an, also zum Beispiel unser Material holo. Der Parameter NOSMAP sagt nur das KEINE Shadow-Map benutzt wird und sollte IMMER benutzt werden, es sei denn ihr wisst wie man eine Shadow-Map erzeugt und benutzt. Aber das würde an dieser Stelle nun zu weit führen und ist auch nicht notwendig in Moove.
Code
|
1:
|
|
WALL x,z PAINT holo NOSMAP
|
Die Koordinate y wird hier nicht benötigt, da Wände immer auf dem Boden stehen, also die Höhe 0 haben. Die Reihenfolge der Punkte x und z, also A,B oder B,A, definiert die Richtung, aus der die Wand sichtbar ist - die andere Seite der Wand ist unsichtbar. Bei einer Trennwand, die von beiden Seiten zu sehen sein soll, müsst ihr beachten, dass die Koordinaten nicht aufeinander liegen, sondern einen kleinen Abstand haben. Ich mach diesen Abstand immer 50 Pixel. Also Wände sind immer 50 Pixel "dick".
Beispiel:
Code
|
1:
2:
3:
4:
5:
6:
7:
8:
|
|
VERTEX a1, 100, 400, 100
VERTEX b1, 100, 400, 500
VERTEX a2, 150, 400, 100
VERTEX b2, 150, 400, 500
WALL a1,b1 PAINT holo NOSMAP
WALL b2,a2 PAINT holo NOSMAP
WALL a1,a2 PAINT holo NOSMAP
WALL b2,a1 PAINT holo NOSMAP
|
Ihr seht, dass die X-Koordinate um 50 grösser ist, und die eine Seite von A -> B und die andere von B -> A gezeichnet wird. So bekommt man eine Wand, die beidseitig ist und 50 Pixel dick. Liegen die Wände ineinander, also haben keinen Abstand, so könnt ihr sie nachher nicht gescheit bemalen. 10 Pixel reichen auch, aber ich habe mir 50 angewöhnt, das sieht später auch gut aus dann. Die beiden letzten Zeilen füllen die Seiten der Wand, sodass man nicht "reinschauen" kann.
Bild: Eine Wand.
Also der Code bis hier hin:
Code
|
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
|
|
ROOM 1, "MeinRaum"
RESOLUTION 1.0
AMBIENT LUX 1
BACKGROUND RGB 0,0,0
START 0,0,0 FACE 3.14
VERTEX A, -1000.0, 400-0, -1000.0
VERTEX B, 1000.0, 400-0, -1000.0
VERTEX C, 1000.0, 400-0, 1000.0
VERTEX D, -1000.0, 400-0, 1000.0
REGION X, A, B, C, D
WALKAREA A, B, C, D
CAMERA 0, 350, 0 TO 0, 50, 900 SEES X
MATERIAL holo TEXTURE "__holodeck.jpg"
FLOOR A, B, C, D
CEILING A, B, C, D
WALL A,B PAINT holo NOSMAP
WALL B,C PAINT holo NOSMAP
WALL C,D PAINT holo NOSMAP
WALL D,A PAINT holo NOSMAP
|
So, damit haben wir einen Quadratischen Raum, mit einer Grösse von 2000x2000 Pixeln und einer Höhe von 400 Pixeln.
Wenn ihr diesen Code in euer Notepad kopiert und unter "MeinRaum.rde" abspeichert. So könnt ihr den Raum in Moove erzeugen und benutzen.
Aber wie bekomme ich nun diese Datei in Moove, und wie wird daraus ein Raum ?
Dazu gibt es in Moove einen Befehl, der jedoch erst funktioniert, wenn ihr euch im "Testmodus" befindet. Um den Testmodus zu aktivieren, geht folgendermassen vor:
In eurem Moove-Browser:
EXTRAS -> OPTIONEN -> SERVICE
Dort den Haken machen bei "Testmodus".
Der Befehl zum Importieren der rde-Datei heisst "!ProcessRDE('Pfad zur rde-Datei')".
Ich habe mir in meinem Moove-Ordner einen Ordner gemacht und "Arbeit" genannt. Darin speicher ich immer meine Sachen, die ich bearbeite. Also in unserem Beispiel wäre meine Datei hier zu finden:
'c:MooveArbeitMeinRaum.rde'.
Also sieht unser Befehl so aus:
!ProcessRDE('c:MooveArbeitMeinRaum.rde')
Diesen Befehl gebt ihr so in euer Chatfenster ein, als würdet ihr etwas schreiben.
Moove antwortet darauf mit "TRUE", sofern alles ok war, oder gibt eine Fehlermeldung aus, wenn ein Fehler in der Datei vorliegt. Meistens passieren so Sachen, dass man einen Punkt doppelt hat, oder ein Punkt nicht definiert ist, den man bei FLOOR, WALL oder so, benutzt. (Beispiel: VERTEX A already defined / Punkt A bereits definiert).Kann man dann schnell ändern, abspeichern und den Befehl erneut ausführen bis halt "TRUE" angezeigt wird.
Danach kann man einen neuen Raum erzeugen und als Raumtyp findet man dann auch "MeinRaum" in der Liste.
|
|
|
|
|
|
|
|
|
|
|
|