I've searched through some old threads about this issue back in the days and was just wondering if anyone ever came up with a solution.
That is to pretty much display your playable char infront of camera from i.e the func_cameraview without it getting "hidden".
I know ID did it with cinematics actor but what i am more interested in is to have the actual playermodel, alive and controllable, but viewed from a static camera.
The Happy Friar wrote:
Resident Evil style you're thinking?
Yes, thats a good example.
something must be broken or missing, even from 2007 this fellow still didn't get an answer, and I believed a target_setInflunce would work as well.
http://www.doom3world.org/phpbb2/viewtopic.php?f=1&t=19828&hilit=target_setInfluenceI've tried this also and with other cameras too, securitycam etc...
in essence switchToView should work, obviously there's some code missing, that's my 24 cents....
I don't have the time for that but I'd look in scripts and def files...for the culprit, I'm sure it's in there somewhere, just have to take some time to find out why it's not firing. (out of curosity) I may look later.... but for now that's what comes to mind....as it just might not be implimented and just has to be added? with some of the things this tech can do I don't see why this can't function and be used as such..... anyone find anything let us know and I'll do the same....

Should be easy enough in the SDK just need to unsurpress the player entity from the renderview same as mirrors.
Anyway heres a little script hack using pm_thirdperson cvars.
Code:
void main(){
while(1){
sys.setcvar("pm_thirdperson",1);
sys.setcvar("pm_thirdpersonangle",0);
while (sys.getcvar("pm_thirdPerson")){
vector playerpos = $player1.getWorldOrigin();
vector tnPos = $target_null_1.getWorldOrigin();
//Distance
playerpos_z += sys.strToFloat(sys.getcvar("pm_normalviewheight"));
vector distance = tnPos - playerpos;
vector normdist = distance;
normdist_x = abs(distance_x);
normdist_y = abs(distance_y);
normdist_z = playerpos_z;
sys.setcvar("pm_thirdpersonrange",$target_null_1.distanceToPoint(normdist));
//Angle
vector camangle;
distance_x = distance_x * -1;
camangle=sys.VecToAngles(distance);
vector viewangles = $player1.getViewAngles();
float viewangle = viewangles_y;
sys.setcvar("pm_thirdpersonangle",viewangle+camangle_y);
//Height
float height = (tnPos_z - playerpos_z);
if (height > 20){
height = 20;
}
if (height < -20){
height = -20;
}
sys.setcvar("pm_thirdpersonheight",height);
sys.waitFrame();
}
}
}
and a test map to go with
Code:
Version 2
// entity 0
{
"classname" "worldspawn"
// primitive 0
{
brushDef3
{
( 0 0 -1 0 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 0 1 -232 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 -1 0 -328 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 1 0 -320 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( -1 0 0 -408 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 1 0 0 400 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
}
}
// primitive 1
{
brushDef3
{
( 0 0 -1 0 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 0 1 -232 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 1 0 0 -528 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 1 0 -320 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( -1 0 0 -408 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 -1 0 312 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
}
}
// primitive 2
{
brushDef3
{
( 0 0 -1 0 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 0 1 -232 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 -1 0 -328 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 1 0 0 -528 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 1 0 -320 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( -1 0 0 520 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
}
}
// primitive 3
{
brushDef3
{
( 0 0 -1 0 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 0 1 -232 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 -1 0 -328 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 1 0 0 -528 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( -1 0 0 -408 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 1 0 320 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
}
}
// primitive 4
{
brushDef3
{
( 0 0 1 -232 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 -1 0 -328 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 1 0 0 -528 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 1 0 -320 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( -1 0 0 -408 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 0 -1 224 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
}
}
// primitive 5
{
brushDef3
{
( 0 0 -1 0 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 -1 0 -328 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 1 0 0 -528 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 1 0 -320 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( -1 0 0 -408 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
( 0 0 1 -8 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/base_wall/gotcbar1" 0 0 0
}
}
}
// entity 1
{
"classname" "info_player_start"
"name" "info_player_start_1"
"origin" "-120 -176 16"
}
// entity 2
{
"classname" "target_null"
"name" "target_null_1"
"origin" "64 16 208"
}
// entity 3
{
"classname" "light"
"name" "light_1"
"origin" "72 -48 168"
"noshadows" "0"
"nospecular" "0"
"nodiffuse" "0"
"falloff" "0.000000"
"texture" "lights/ambientlight"
"_color" "1 1 1"
"light_radius" "1012 652 304"
}