view.portal

Ein zweiter View, der als Kamera-Portal dem View angehängt wird. Ein Portal ist eine spezielle Oberfläche einer Level- oder Map-Entity, auf die dieser zweite View aufprojiziert wird. Auf diese Art können Fenster in verschiedene Bereiche des Levels sowie Spiegel realisiert werden. Ist das mirror-Flag in WED für eine Oberfläche gesetzt, wird der Portal-View auf diese Oberfläche gelegt. Es kann immer nur ein Portal gleichzeitig sichtbar sein. Sind verschiedene Portals im Blick, wird nur das erste korrekt dargestellt.Die Transparenz des Portals wird vom albedo-Parameter der Oberfläche (0..100 %) angegeben. Ist die Oberfläche Teil einer Map-Entity, geht deren Albedo mit ein, was ein sanftes Ein/Aus-blenden von Spiegelungen erlaubt.Sobald eine Portaloberfläche im View sichtbar ist, werden die portal_x, portal_y und portal_z-Parameter des Views auf einen Vertex der Portaloberfläche gesetzt. Diese Parameter können zur Darstellung eines Echtzeitspiegels verwendet werden, indem die Parameter des Portal-Blickes entsprechend gesetzt werden.

Typ:

View*

Besonderheiten:

Beachten Sie, dass dies, obwohl es wie ein echter Spiegel aussieht, nur ein zweiter imaginärer Kameraview ist. Der imaginären Kamera dürfen keine Hindernisse, wie andere Entities oder Level-Oberflächen, im Weg sein. Sie muss durch ein 'Loch' in der Wand, an die der Spiegel angebracht ist, schauen. Der Spiegel selbst sollte, damit sie für die imaginäre Kamera unsichtbar ist, eine nicht gedrehte Map-Entity sein. Die Seitenwände des 'Spiegelloches' müssen auf den None-render-Modus gesetzt sein, damit auch sie unsichtbar sind, wenn die Kamera um ihre imaginäre Position herum geschwenkt wird.

Edition:

P

Beispiel:

// Code zur Darstellung eines horizontalen Spiegels mittels eines Kameraviews durch den Boden 
view mirror { }
function init_mirror_z()
{
  camera.portal = mirror;
 	mirror.noshadow = on; // unterdrücke Schatten im Spiegel
 	mirror.portalclip = on;
 	while (1)
 	{
	  proc_late(); // führe Funktion nach allen anderen aus - die Kamera muss vorher bewegt 										werden
 	  mirror.genius = camera.genius;
    mirror.aspect = -camera.aspect;    // klappe das Bild von oben nach unten um 
    mirror.arc = camera.arc;
 	  mirror.fog = camera.fog;
 	  mirror.x = camera.x;
 	  mirror.y = camera.y;
 	  mirror.z = 2*camera.portal_z-camera.z;  // bewege die Kamera um das zweifache der 																			Portal-Distanz nach unten.
 	  mirror.pan = camera.pan;
 	  mirror.tilt = -camera.tilt; // klappe den vertikalen Kamerawinkel um
 	  mirror.roll = -camera.roll;
 	  wait(1);
  }
} 

Siehe auch:

layer, pos_x, pos_y, size_x, size_y, x, y, z, pan, tilt, roll, arc, aspect, offset_x, offset_y, ambient, fog, fog_start, fog_end, alpha, genius, flags 

► Aktuelle Version Online