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!