----------------------------
----------------------------
     CollageVR readme 
----------------------------
----------------------------
NS 06 Jan 97


Viewer VRweb
------------
- wird von CollageVR als "vrweb" aufgerufen.
- bei mir existiert ein symbolischer Link ~/.vrweb -> ~/vrweb.
  In ~/vrweb ist dann das Binary vrweb enthalten.

Beispiele
---------
- Die 3D-Beispiele haben alle ein "3D" im Namen.
  
  
Bedienung
---------
Die Bedienung ist gegen"uber CollageTwo unver"andert, bis auf
den Umstand, dass der gestartete VRML-Viewer jeweils das im internen 
2D-Viewer aktuelle Bild anzeigt. (Die Ausgaben f"ur den internen
2D-Viewer, PostScript, und VRML sind jetzt 1:1:1 aufeinander abgebildet.)
Die meisten 3D-Objekte erzeugen keinerlei Darstellung f"ur den internen 
2D-Viewer.

  
Grammatik-Erweiterungen
-----------------------

- Neue Optionen
  -------------
  * Option /v: Analog zu /f f"ur die PostScript-Ausgabe werden
    hiermit die Dateinamen der erzeugten VRML-Dateien festgelegt.
    Diese haben standardm"assig die Endung *.wrl (f"ur "world").
  
- Neue math. Funktionen des Parsers
  ---------------------------------
  * rotate3d(p,rotDir,angle): Rotation von p um angle Grad um die
    Achse rotDir.
  
- Neue Makros (in trans.csi)
  --------------------------
  * TRANSLATE3D(x,y,z)
  * SCALE3D(x,y,z)
  * ROTATE3D(rotDir,a)	Rotation um Achse rotDir um a Grad
   
- Neue Objekte
  ------------
  
  * "dot", "line", "polyline" und "polygon" sind jetzt auch in 3D
    verwendbar.
    
  * cube <width> <height> <depth> [<rgb>]
    An (0,0,0) zentrierter Quader mit den angegebenen Ausmassen. Diese
    werden durch die aktuelle Transformation beeinflusst.
    Beispiel:
    cube 3 4 5 rgb (100,100,100)
    
  * sphere <radius> [<rgb>]
    An (0,0,0) zentrierte Kugel mit angegebenem Radius. Kugeln k"onnen 
    durch Transformationen in Ellipsoide verformt werden.
    Beispiel:
    sphere 2 rgb (255,0,0)
    
  * cone (all|sides|bottom) <bottomRadius> <height> [<rgb>]
    An (0,0,0) zentrierter Cone mit angegebenem Radius und H"ohe.
    all = Alle Fl"achen sind vorhanden
    sides = Nur die Seitenfl"ache ist vorhanden
    bottom = Nur die untere Scheibe ist vorhanden
    Beispiel:
    cone sides 3 5 rgb (0,100,255)
    
  * cylinder (all|sides|bottom|top) <radius> <height> [<rgb>]
    An (0,0,0) zentrierter Zylinder mit angegebenem Radius und H"ohe.
    all = Alle Fl"achen sind vorhanden
    sides = Nur die Seitenfl"ache ist vorhanden
    bottom = Nur die untere Scheibe ist vorhanden
    top = Nur die obere Scheibe ist vorhanden
    Beispiel:
    cylinder all 1 5 rgb (200,0,0)
    
  * pointlight <point> [<rgb>]
    Eine Punktlichtquelle an der angegebenen Position. Durch die
    nachfolgende Partfarbe (rgb(r,g,b)) werden die Intensit"at und
    die Farbe des Lichtes festgelegt. Lichtquellen sollten am besten
    nur in der Startcollage vorkommen, da erstens ihre Maximalanzahl
    durch den VRML-Viewer begrenzt wird und sie zweitens nur auf
    Objekte wirken, die in der VRML-Datei noch folgen (gleiche
    Reihenfolge wie die erzeugten Parts).
    Beispiel:
    pointlight (0,300,0) rgb (255,255,255)
    
  * native <Textblock> [<rgb>]
    Eine beliebige VRML-Sequenz, die von CollageVR in einen VRML-
    Separatorblock eingeschlossen und transformiert wird. 
    Beispiel:
    native 
	BeginAttributes 
	    "Texture2 {filename \"earth-small.jpg\"}\n"
	    "Sphere {radius 10}\n"
	EndAttributes
	rgb (255,255,255)
  
  
- Einbindung von 2D-Grammatiken
  -----------------------------
  * "ANDERUNG: Bei der Angabe der erlaubten Transformationsklassen
    (Transformations (affine|translations|scaleTranslations) ist
    jetzt eine Dimensionsanzahl (2 oder 3) anzuf"ugen. Alte 2D-
    Grammatiken k"onnen trivial auf 3D erweitert werden, indem 
    einfach hinter "grammar" ein "transformations affine 2" erfolgt.
    Damit m"ussen die Transformationen nur noch innerhalb von
    2 Dimensionen eindeutig (also 3-testbar) sein. Alle 2D-Punkt-
    angaben werden automatisch um eine 0 als dritte Koordinate
    erg"anzt. Um 3D-Manipulationen an den so erzeugten Collagen
    vornehmen zu k"onnen, m"ussen diese aber weiterhin "von Hand"
    nach 3D umgesetzt werden, was aber i.d.R. recht einfach ist.
    
  * Beispiel: Die Beispiele Tree3D[<n>].cgr zeigen die schrittweise
    Umsetzung der Tree-Grammatik auf echtes 3D.
    
    
Have fun.
