Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
web worker中的Three.js:模拟动画而不渲染到画布_Three.js_Web Worker_Device Orientation - Fatal编程技术网

web worker中的Three.js:模拟动画而不渲染到画布

web worker中的Three.js:模拟动画而不渲染到画布,three.js,web-worker,device-orientation,Three.js,Web Worker,Device Orientation,我有一个假设性的问题: 是否可以在不渲染到画布的情况下模拟对象的动画。我只想使用Vector.project(camera)捕捉对象的位置,并使用CSS显示它。和3.DeviceOrientationControl控制摄像机“查看”模拟的方式 我试着注释THREE.WebGLRenderer,但似乎THREE.perspectiveCamera无法更新它的MatrixWorld属性。因此,摄影机似乎不移动,Vector.project(摄影机)给出一个静态值。我这样做是因为我需要将我的三个.js

我有一个假设性的问题:

是否可以在不渲染到画布的情况下模拟对象的动画。我只想使用
Vector.project(camera)
捕捉对象的位置,并使用CSS显示它。和
3.DeviceOrientationControl
控制摄像机“查看”模拟的方式

我试着注释
THREE.WebGLRenderer
,但似乎
THREE.perspectiveCamera
无法更新它的
MatrixWorld
属性。因此,摄影机似乎不移动,
Vector.project(摄影机)
给出一个静态值。我这样做是因为我需要将我的三个.js代码放在一个web worker中

我是否仍然需要使用
THREE.WebGLRenderer
进行工作模拟

更新:

我检查了以下内容:

  • 我更深入地研究了
    ((three.scene.getObjectByName(“one”)).matrixWorld.getPosition()).project(three.camera),我使用示例检查具有上述要求的以下值(在web worker内部,没有渲染器):
  • 但是,正常(无修改)时,我检查以下各项:


我注意到,
camera.matrixWorld
属性在这两种情况下都有显著差异。我不明白有什么不同。

显然,更新
camera.matrixWorld
属性仍然需要triple.WebGLRenderer.render中的以下行:

scene.updateMatrixWorld();
camera.updateMatrixWorld();
camera.matrixWorldInverse.getInverse(vs._3.camera.matrixWorld);
matrix: {"elements":{"0":3.2167603969573975,"1":0,"2":0,"3":0,"4":0,"5":2.1445069313049316,"6":0,"7":0,"8":0,"9":0,"10":-1.000100016593933,"11":-1,"12":5.4684929847717285,"13":2.1445069313049316,"14":-0.2000100016593933,"15":0}}
camera.projectionMatrix: {"elements":{"0":3.2167603969573975,"1":0,"2":0,"3":0,"4":0,"5":2.1445069313049316,"6":0,"7":0,"8":0,"9":0,"10":-1.000100016593933,"11":-1,"12":0,"13":0,"14":-0.2000100016593933,"15":0}}
camera.matrixWorld: {"elements":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":-2.220446049250313e-16,"6":-1,"7":0,"8":0,"9":1,"10":-2.220446049250313e-16,"11":0,"12":-1.7000000476837158,"13":-1,"14":0,"15":1}}
matrix.getInverse(camera.matrixWorld): {"elements":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":-2.220446049250313e-16,"6":1,"7":0,"8":0,"9":-1,"10":-2.220446049250313e-16,"11":0,"12":1.7000000476837158,"13":-2.220446049250313e-16,"14":1,"15":1}}
matrix.multiplyMatrices(camera.projectionMatrix, matrix.getInverse(camera.matrixWorld)): {"elements":{"0":3.2167603969573975,"1":0,"2":0,"3":0,"4":0,"5":-4.761761943205948e-16,"6":-1.000100016593933,"7":-1,"8":0,"9":-2.1445069313049316,"10":2.2206681307011713e-16,"11":2.220446049250313e-16,"12":5.4684929847717285,"13":-4.761761943205948e-16,"14":-1.2001099586486816,"15":-1}}
scene.updateMatrixWorld();
camera.updateMatrixWorld();
camera.matrixWorldInverse.getInverse(vs._3.camera.matrixWorld);