Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
Three.js 如何使用两个透视相机及其两个对象分别进行缩放?_Three.js - Fatal编程技术网

Three.js 如何使用两个透视相机及其两个对象分别进行缩放?

Three.js 如何使用两个透视相机及其两个对象分别进行缩放?,three.js,Three.js,我有两个对象在窗口的右侧和左侧 我想在悬停时分别缩放这些对象 var itsLeftControls, itsRightControls; itsRightControls = new THREE.TrackballControls(itsRightCamera); itsLeftControls = new THREE.TrackballControls(itsLeftCamera); document.getElementById('SubContainerLeft').onm

我有两个对象在窗口的右侧和左侧

我想在悬停时分别缩放这些对象

 var itsLeftControls, itsRightControls;
  itsRightControls = new THREE.TrackballControls(itsRightCamera);
  itsLeftControls = new THREE.TrackballControls(itsLeftCamera);

 document.getElementById('SubContainerLeft').onmouseover = function () {
     aMouseOverActivate(itsLeftControls);
     aMouseOverDeactivate(itsRightControls);
    };

  document.getElementById('SubContainerRight').onmouseover = function () {
     aMouseOverActivate(itsRightControls);
     aMouseOverDeactivate(itsLeftControls);
   };

  function aMouseOverActivate(theControl)
   {
     theControl.zoomSpeed = 0.8;
   }

  function aMouseOverDeactivate(theControl)
   {
     theControl.zoomSpeed = 0.0;
   }

  function animateLeft()
  {
  requestAnimationFrame(animateLeft);
  renderLeft();
  }

 function renderLeft() 
 {
  itsLeftControls.update(); 
  itsLeftRenderer.render(itsLeftScene, itsLeftCamera);
 }

function animateRight()
  {
  requestAnimationFrame(animateRight);
  renderRight();
  }

 function renderRight() 
 {
  itsRightControls.update(); 
  itsRightRenderer.render(itsRightScene, itsRightCamera);
 }
若我将鼠标悬停在左侧,并尝试用鼠标滚轮进行缩放,那个么效果很好。之后,当我在右侧悬停时,我可以在右侧看到同样的缩放效果,而无需滚动鼠标。 如何解决这个问题

获取可选的第二个参数,该参数是dom元素,它将鼠标事件侦听器附加到该元素上。
如果未提供此参数,它会将事件侦听器附加到文档。
这意味着您的两个轨迹球控件都在侦听文档上的事件(而不是我认为您需要的各自容器)。
因此,只需将场景容器div作为第二个参数发送给TrackballControlls,就可以了

var leftContainer = document.getElementById('SubContainerLeft');
var rightContainer = document.getElementById('SubContainerRight');

var itsRightControls = new THREE.TrackballControls(itsRightCamera, rightContainer);
var itsLeftControls = new THREE.TrackballControls(itsLeftCamera, leftContainer);

给我们看看你的控制代码我在这里使用轨迹球控制。首先,我将左控件和右控件ZoomSpeed设置为0,并在悬停每一侧时调用上述函数。@2pha-我放大了左侧,然后转到右侧。因此,右侧对象也被自动放大,与左侧对象相同:(我希望只有当我滚动鼠标滚轮时,两侧对象才能工作。有人能帮我吗?我还在这里挣扎。向我们展示你的控件代码(你是如何将轨迹球控件添加到每个场景的)