我有一个

 function createControls(){ return new THREE.TrackballControls( camera,domElement );}


用创建

THREE.TrackballControls=function(object, domElement){.....}
controls = createControls(camera, renderer.domElement);
restoreView(controls, vars);
addDefaultKeyEventListener();


调整webgl容器的大小后,控件将无法正常工作。准确地说,是发生了以下事件:用户在屏幕上单击时,一个黄色的球会移动到3d空间中平原上的确切位置。在调整大小事件之后,球会移动到一个位置,该位置的偏移量与我认为与调整大小的比例有关。当我尝试重新定义控件变量时,它崩溃了。

如何更新具有新的camera和renderer.domElement输入变量的控件?

最佳答案

TrackballControls为此提供一种方法:handleResize()。因此,如果您使用创建控件

controls=new THREE.TrackballControls(...);


您只需要添加

controls.handleResize();


进入在resize事件中调用的函数。

10-07 17:47