@@ -115,7 +115,7 @@ THREE.VREffect = function ( renderer, onError ) {
115
115
116
116
var sceneL , sceneR ;
117
117
118
- if ( scene instanceof Array ) {
118
+ if ( Array . isArray ( scene ) ) {
119
119
120
120
sceneL = scene [ 0 ] ;
121
121
sceneR = scene [ 1 ] ;
@@ -162,7 +162,7 @@ THREE.VREffect = function ( renderer, onError ) {
162
162
163
163
// Regular render mode if not HMD
164
164
165
- if ( scene instanceof Array ) scene = scene [ 0 ] ;
165
+ if ( Array . isArray ( scene ) ) scene = scene [ 0 ] ;
166
166
167
167
renderer . render ( scene , camera ) ;
168
168
@@ -172,10 +172,10 @@ THREE.VREffect = function ( renderer, onError ) {
172
172
173
173
function fovToNDCScaleOffset ( fov ) {
174
174
175
- var pxscale = 2.0 / ( fov . leftTan + fov . rightTan ) ;
176
- var pxoffset = ( fov . leftTan - fov . rightTan ) * pxscale * 0.5 ;
177
- var pyscale = 2.0 / ( fov . upTan + fov . downTan ) ;
178
- var pyoffset = ( fov . upTan - fov . downTan ) * pyscale * 0.5 ;
175
+ var pxscale = 2.0 / ( fov . leftTan + fov . rightTan ) ;
176
+ var pxoffset = ( fov . leftTan - fov . rightTan ) * pxscale * 0.5 ;
177
+ var pyscale = 2.0 / ( fov . upTan + fov . downTan ) ;
178
+ var pyoffset = ( fov . upTan - fov . downTan ) * pyscale * 0.5 ;
179
179
return { scale : [ pxscale , pyscale ] , offset : [ pxoffset , pyoffset ] } ;
180
180
181
181
}
@@ -186,44 +186,45 @@ THREE.VREffect = function ( renderer, onError ) {
186
186
zNear = zNear === undefined ? 0.01 : zNear ;
187
187
zFar = zFar === undefined ? 10000.0 : zFar ;
188
188
189
- var handednessScale = rightHanded ? - 1.0 : 1.0 ;
189
+ var handednessScale = rightHanded ? - 1.0 : 1.0 ;
190
190
191
191
// start with an identity matrix
192
192
var mobj = new THREE . Matrix4 ( ) ;
193
193
var m = mobj . elements ;
194
194
195
195
// and with scale/offset info for normalized device coords
196
- var scaleAndOffset = fovToNDCScaleOffset ( fov ) ;
196
+ var scaleAndOffset = fovToNDCScaleOffset ( fov ) ;
197
197
198
198
// X result, map clip edges to [-w,+w]
199
- m [ 0 * 4 + 0 ] = scaleAndOffset . scale [ 0 ] ;
200
- m [ 0 * 4 + 1 ] = 0.0 ;
201
- m [ 0 * 4 + 2 ] = scaleAndOffset . offset [ 0 ] * handednessScale ;
202
- m [ 0 * 4 + 3 ] = 0.0 ;
199
+ m [ 0 * 4 + 0 ] = scaleAndOffset . scale [ 0 ] ;
200
+ m [ 0 * 4 + 1 ] = 0.0 ;
201
+ m [ 0 * 4 + 2 ] = scaleAndOffset . offset [ 0 ] * handednessScale ;
202
+ m [ 0 * 4 + 3 ] = 0.0 ;
203
203
204
204
// Y result, map clip edges to [-w,+w]
205
205
// Y offset is negated because this proj matrix transforms from world coords with Y=up,
206
206
// but the NDC scaling has Y=down (thanks D3D?)
207
- m [ 1 * 4 + 0 ] = 0.0 ;
208
- m [ 1 * 4 + 1 ] = scaleAndOffset . scale [ 1 ] ;
209
- m [ 1 * 4 + 2 ] = - scaleAndOffset . offset [ 1 ] * handednessScale ;
210
- m [ 1 * 4 + 3 ] = 0.0 ;
207
+ m [ 1 * 4 + 0 ] = 0.0 ;
208
+ m [ 1 * 4 + 1 ] = scaleAndOffset . scale [ 1 ] ;
209
+ m [ 1 * 4 + 2 ] = - scaleAndOffset . offset [ 1 ] * handednessScale ;
210
+ m [ 1 * 4 + 3 ] = 0.0 ;
211
211
212
212
// Z result (up to the app)
213
- m [ 2 * 4 + 0 ] = 0.0 ;
214
- m [ 2 * 4 + 1 ] = 0.0 ;
215
- m [ 2 * 4 + 2 ] = zFar / ( zNear - zFar ) * - handednessScale ;
216
- m [ 2 * 4 + 3 ] = ( zFar * zNear ) / ( zNear - zFar ) ;
213
+ m [ 2 * 4 + 0 ] = 0.0 ;
214
+ m [ 2 * 4 + 1 ] = 0.0 ;
215
+ m [ 2 * 4 + 2 ] = zFar / ( zNear - zFar ) * - handednessScale ;
216
+ m [ 2 * 4 + 3 ] = ( zFar * zNear ) / ( zNear - zFar ) ;
217
217
218
218
// W result (= Z in)
219
- m [ 3 * 4 + 0 ] = 0.0 ;
220
- m [ 3 * 4 + 1 ] = 0.0 ;
221
- m [ 3 * 4 + 2 ] = handednessScale ;
222
- m [ 3 * 4 + 3 ] = 0.0 ;
219
+ m [ 3 * 4 + 0 ] = 0.0 ;
220
+ m [ 3 * 4 + 1 ] = 0.0 ;
221
+ m [ 3 * 4 + 2 ] = handednessScale ;
222
+ m [ 3 * 4 + 3 ] = 0.0 ;
223
223
224
224
mobj . transpose ( ) ;
225
225
226
226
return mobj ;
227
+
227
228
}
228
229
229
230
function fovToProjection ( fov , rightHanded , zNear , zFar ) {
0 commit comments