Skip to content

Commit c886fd8

Browse files
committed
put camera position in 4th column of eye matrix
1 parent 3266763 commit c886fd8

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

libraries/vr/src/processing/vr/PGraphicsVR.java

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,10 @@ public void registerUpdate(String methodName) {
8080

8181
public PMatrix3D getEyeMatrix() {
8282
PMatrix3D mat = new PMatrix3D();
83-
mat.set(rightX, upX, forwardX, 0,
84-
rightY, upY, forwardY, 0,
85-
rightZ, upZ, forwardZ, 0,
86-
0, 0, 0, 1);
83+
mat.set(rightX, upX, forwardX, cameraX,
84+
rightY, upY, forwardY, cameraY,
85+
rightZ, upZ, forwardZ, cameraZ,
86+
0, 0, 0, 1);
8787
return mat;
8888
}
8989

@@ -92,10 +92,10 @@ public PMatrix3D getEyeMatrix(PMatrix3D target) {
9292
if (target == null) {
9393
target = new PMatrix3D();
9494
}
95-
target.set(rightX, upX, forwardX, 0,
96-
rightY, upY, forwardY, 0,
97-
rightZ, upZ, forwardZ, 0,
98-
0, 0, 0, 1);
95+
target.set(rightX, upX, forwardX, cameraX,
96+
rightY, upY, forwardY, cameraY,
97+
rightZ, upZ, forwardZ, cameraZ,
98+
0, 0, 0, 1);
9999
return target;
100100
}
101101

@@ -123,16 +123,22 @@ public void eye() {
123123

124124
// Erasing any previous transformation in modelview
125125
modelview.set(camera);
126-
modelview.translate(cameraX, cameraY, cameraZ);
127126
modelview.apply(eyeMatrix);
128127

129-
// eyeMatrix is orthogonal, so taking the transpose inverts it.
128+
// The 3x3 block of eyeMatrix is orthogonal, so taking the transpose
129+
// inverts it...
130130
eyeMatrix.transpose();
131+
// ...and then invert the translation separately:
132+
eyeMatrix.m03 = -cameraX;
133+
eyeMatrix.m13 = -cameraY;
134+
eyeMatrix.m23 = -cameraZ;
135+
eyeMatrix.m30 = 0;
136+
eyeMatrix.m31 = 0;
137+
eyeMatrix.m32 = 0;
131138

132139
// Applying the inverse of the previous transformations in the opposite order
133140
// to compute the modelview inverse
134141
modelviewInv.set(eyeMatrix);
135-
modelviewInv.translate(-cameraX, -cameraY, -cameraZ);
136142
modelviewInv.preApply(cameraInv);
137143

138144
updateProjmodelview();

0 commit comments

Comments
 (0)