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-我放大了左侧,然后转到右侧。因此,右侧对象也被自动放大,与左侧对象相同:(我希望只有当我滚动鼠标滚轮时,两侧对象才能工作。有人能帮我吗?我还在这里挣扎。向我们展示你的控件代码(你是如何将轨迹球控件添加到每个场景的)