Spaces:
Running
Running
Fix mirrored camera in lookAt (closed models, correct orientation)
Browse files- parsers.js +1 -0
parsers.js
CHANGED
|
@@ -63,6 +63,7 @@ M.lookAt = function(eye, center, up){ /* from Muse engine.js */
|
|
| 63 |
var sx = fy*uz - fz*uy, sy = fz*ux - fx*uz, sz = fx*uy - fy*ux;
|
| 64 |
var sl = Math.hypot(sx, sy, sz) || 1; sx /= sl; sy /= sl; sz /= sl;
|
| 65 |
var cx = sy*fz - sz*fy, cy = sz*fx - sx*fz, cz = sx*fy - sy*fx;
|
|
|
|
| 66 |
var o = new Float32Array(16);
|
| 67 |
o[0]=sx; o[1]=cx; o[2]=fx; o[4]=sy; o[5]=cy; o[6]=fy; o[8]=sz; o[9]=cz; o[10]=fz;
|
| 68 |
o[12]=-(sx*eye[0]+sy*eye[1]+sz*eye[2]); o[13]=-(cx*eye[0]+cy*eye[1]+cz*eye[2]); o[14]=-(fx*eye[0]+fy*eye[1]+fz*eye[2]); o[15]=1;
|
|
|
|
| 63 |
var sx = fy*uz - fz*uy, sy = fz*ux - fx*uz, sz = fx*uy - fy*ux;
|
| 64 |
var sl = Math.hypot(sx, sy, sz) || 1; sx /= sl; sy /= sl; sz /= sl;
|
| 65 |
var cx = sy*fz - sz*fy, cy = sz*fx - sx*fz, cz = sx*fy - sy*fx;
|
| 66 |
+
sx = -sx; sy = -sy; sz = -sz; /* lookAt fix: right = up x back (stops mirrored view and missing faces) */
|
| 67 |
var o = new Float32Array(16);
|
| 68 |
o[0]=sx; o[1]=cx; o[2]=fx; o[4]=sy; o[5]=cy; o[6]=fy; o[8]=sz; o[9]=cz; o[10]=fz;
|
| 69 |
o[12]=-(sx*eye[0]+sy*eye[1]+sz*eye[2]); o[13]=-(cx*eye[0]+cy*eye[1]+cz*eye[2]); o[14]=-(fx*eye[0]+fy*eye[1]+fz*eye[2]); o[15]=1;
|