2017-09-22 56 views
0

我在窗口的右側和左側有兩個對象。 enter image description here如何分別使用兩個PerspectiveCameras及其兩個對象進行縮放?

我想在我將它懸停時單獨縮放這些對象。

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); 
} 

如果我將鼠標懸停在左側,並嘗試用鼠標滾輪縮放,它工作正常。之後當我懸停在右側時,我可以看到右側沒有滾動鼠標的同樣的縮放效果。 如何解決這個問題?

+0

向我們展示您的控件的代碼 – 2pha

+0

我在這裏使用了TrackballControls。首先,我設置左和右控件ZoomSpeed爲0,並在每個側面懸停時調用上述函數。 – Mhd

+0

@ 2pha - 我放大左側,並去右側。所以,右側的對象也像左側一樣放大,自動:(我希望兩側的對象只在滾動鼠標滾輪時才起作用 – Mhd

回答

1

TrachballControls接受一個可選的第二個參數,它是將要附加鼠標事件偵聽器的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); 
+0

yeey它的工作:)非常感謝你2pha。 – Mhd

相關問題