In Antwort auf:


...muss du einen View von 6 Seiten mit einem Blickwinkel von 90 Grad in eine Texture zeichen. Alle Texturen zu einer Cubemap machen





Habe den ganzen Tag versucht, auch nur einen der 6 Views auf das +6.tga des Reflektionsshaders in effects.wdl zu rendern. (mit dem Player als Modell)
1. Der bmap_for entity Befehl braucht eine Entity-Angabe und akzeptiert nicht:

Code:
  

bmap bmp_envcube =<blood_gsmall+6.tga>;//CODE AUS EFFECTS.WDL

////////////////////////////////////////////////////////////////////////////////

function mtl_envmirror_view()
{
mat_set(mtl.matrix,matViewInv);
// reset the translation part of the matrix
mtl.matrix41 = 0;
mtl.matrix42 = 0;
mtl.matrix43 = 0;
// mirror the matrix in y direction (= screen plane normal),
mat_scale(mtl.matrix,1,-1,1);
}


function mtl_envmirror_init()
{
bmap_to_cubemap(bmp_envcube);//mtl.skin1);
mtl.event = mtl_envmirror_view;
mtl.enable_view = on;
}


material mtl_envmirror // environment cube
{
skin1 = bmp_envcube;
event = mtl_envmirror_init;
effect = "
// usw
}



//EIGENER CODE
//"REFLEKTMAP" pro frame einmal aufgerufen
view mirror1

{
layer=-1;
flags=visible;
}



function reflektMap()
{

while(!player){wait(1);}

mirror1.size_x=bmap_height (bmp_envcube);
mirror1.size_y=bmap_height (bmp_envcube);
mirror1.ambient = camera.ambient;
mirror1.fog=camera.fog;
mirror1.bmap = bmap_for_entity(bmp_envcube,0); // KLAPPT NICHT!!


//Bei vorher definierter entity type=...+6.tga geht der
//bmap_for_entity(entity ...usw Befehl,
//das Bild zum Test ins Level gestellt, zeigt den View,
//aber die reflektierte Map im Testmodell (Player) ändert sich nicht.

mirror1.visible = on;

while (1)
{
mirror1.genius = player;
mirror1.aspect = camera.aspect;
mirror1.arc = 90;//camera.arc;
mirror1.fog_start = camera.fog_start;
mirror1.fog_end = camera.fog_end;
mirror1.x = player.x;
mirror1.y = player.y;
mirror1.z = player.z;
mirror1.pan = player.pan;//-camera.pan;
mirror1.tilt = player.tilt;//camera.tilt;

//bmap_to_cubemap(bmp_envcube);
//mtl_envmirror_init();
//player.material=mtl_envmirror;
wait(1);
}

}





2. Wie macht man aus der (falls das überhaupt geht) neugerenderten +6.tga eine Cubemap, die dann im Material als neue Basis für die Environment Map gilt?
//bmap_to_cubemap(bmp_envcube);
//mtl_envmirror_init();
//player.material=mtl_envmirror;
//KLAPPT NICHT!