Animate[
ushift=1.1;
Oa={1,0,0,0};
Ob={0,1,0,0};
Oc={0,0,1,0};
Od={0,0,0,1};
OA={-1,0,0,0};
OB={0,-1,0,0};
OC={0,0,-1,0};
OD={0,0,0,-1};


(*definition of tetrahedron*)
tetrahedron[vecs_]:=Table[Polygon[Drop[vecs,{k}]],{k,1,4}];

(*definition of projection*)
proj[x_]:=Switch[
mode,
1,x[[{1,2,3}]],
2,x[[{1,2,4}]],
3,1/(x[[4]]+ushift)x[[{1,2,3}]]
];


(*Rotation matrix "ON" the plane π spanned by m={0,0,0,1}&n={1,1,1,1}*)
(*r has same length as n and orthogonal to n on π*)
(*p,q are orthogonal vectors against π. They can have arbitrary length.*)
n={1,1,1,1};
r=-1/Sqrt[3]{1,1,1,-3};
p={2,-1,-1,0};
q={0,1,-1,0};
Rot[θ_]:=(
P:=Transpose[{n,r,p,q}];P.{{Cos[θ],-Sin[θ],0,0},{Sin[θ],Cos[θ],0,0},{0,0,1,0},{0,0,0,1}}.Inverse[P]
);




ABCD0=Transpose[{OA,OB,OC,OD}];
ABCD:=Rot[t].ABCD0;
vecsABCD:=Table[proj[(Transpose[ABCD])[[k]]],{k,1,4}];
polyABCD:=tetrahedron[vecsABCD];

abcd0=Transpose[{Oa,Ob,Oc,Od}];
abcd:=Rot[t].abcd0;
vecsabcd:=Table[proj[(Transpose[abcd])[[k]]],{k,1,4}];
polyabcd:=tetrahedron[vecsabcd];

outoftheworld=Point[{200,0,0}];
segs:=If[showsegs,Table[Table[Line[{vecsABCD[[j]],(Drop[vecsabcd,{j}])[[k]]}],{k,1,3}],{j,1,4}],outoftheworld];

(*ptA:=vecsABCD[[1]];ptB:=vecsABCD[[2]];ptC:=vecsABCD[[3]];ptD:=vecsABCD[[4]];
pta:=vecsabcd[[1]];ptb:=vecsabcd[[2]];ptc:=vecsabcd[[3]];ptd:=vecsabcd[[4]];*)

font=12;
txtA:=Text[Style["A",font],vecsABCD[[1]]];
txtB:=Text[Style["B",font],vecsABCD[[2]]];
txtC:=Text[Style["C",font],vecsABCD[[3]]];
txtD:=Text[Style["D",font],vecsABCD[[4]]];
txta:=Text[Style["a",font],vecsabcd[[1]]];
txtb:=Text[Style["b",font],vecsabcd[[2]]];
txtc:=Text[Style["c",font],vecsabcd[[3]]];
txtd:=Text[Style["d",font],vecsabcd[[4]]];
names:={txtA,txtB,txtC,txtD,txta,txtb,txtc,txtd};


myrange:=Switch[mode,1,{{-1.,1.},{-1.,1.},{-1.,1.}},
2,{{-1.,1.},{-1.,1.},{-1,1}},3,{{-1.4,1.4},{-1.4,1.4},{-1.4,1.4}}];

Graphics3D[{Opacity[0.3],(*Text["L",1/u1 OL[[{1,2,3}]]],Text["K",1/u1 OK[[{1,2,3}]]],
Text["M",1/u1 OM[[{1,2,3}]]],Text["A",1/u1 OA[[{1,2,3}]]],*)
Red,polyABCD,Blue,polyabcd,Black,Opacity[1],names,Green//Darker,Dashed,segs}
,PlotRange->myrange,Boxed->False]

(*controllers*)
,{t,0, 1/3 Pi},(*{{ushift,1.1},Table[0.05 k,{k,0,40}],ControlType->PopupMenu},*)
{{mode,3,"projection style"},{1->"(x,y,z,u)->(x,y,z)",2->"(x,y,z,u)->(x,y,u)",3->"(x,y,z,u)->((x/u),(y/u),(z/u))"},ControlType->PopupMenu},{showsegs,{True,False},ControlType->Checkbox}]