Three.js:PointerLockControls以某种方式改变了模板的位置

时间:2014-03-05 12:48:54

标签: three.js stencil-buffer pointerlock

我正在使用模板缓冲区将两个THREE.js场景相互合成。这很有效,但是当我尝试使用PointerLockControls时,移动相机(使用鼠标或键盘)会以某种方式移动/移动视图的模板部分。它似乎落后于相机位置。

我尝试过其他控件(轨迹球,轨道),使用它们时不会出现此问题。

似乎有些冲突,但我不知道在哪里看。

PointerLock代码直接从examples复制。

这是渲染代码:

// 1: clear scene (autoClear is disabled)
renderer.clear(true, true, true);

// 2: draw portal mesh into stencil buffer
gl.colorMask(false, false, false, false);
gl.depthMask(false);
gl.enable(gl.STENCIL_TEST);
gl.stencilMask(0xFF);
gl.stencilFunc(gl.NEVER, 0, 0xFF);
gl.stencilOp(gl.INCR, gl.KEEP, gl.KEEP);

renderer.render(stencilScene, camera);

gl.colorMask(true, true, true, true);
gl.depthMask(true);
gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);

// 3: draw toScene on scencil
renderer.clear(false, true, false);

gl.stencilFunc(gl.LESS, 0, 0xff);

renderer.render(toScene, camera);

gl.disable(gl.STENCIL_TEST);

renderer.clear(false, false, true);

// clear the depth buffer and draw the fromPortal mesh into it
renderer.clear(false, true, false);

gl.colorMask(false, false, false, false);
gl.depthMask(true);

renderer.render(stencilScene, camera);

// draw the actual scene
gl.colorMask(true, true, true, true);
gl.depthMask(false); // gl.enable(gl.DEPTH_TEST) ?

renderer.render(fromScene, camera);

这是一个小提琴:http://jsfiddle.net/g8EWG/

如果你从左向右移动,或者只是环顾四周,那么转变是非常明显的。

非常感谢任何帮助。

0 个答案:

没有答案