2012-08-07 89 views
1

我想要創建大量對象並使用鼠標分別旋轉它們中的每一個。到目前爲止,我可以用鼠標選擇其中一個對象,但我不能使用鼠標來旋轉對象。three.js - 如何使用鼠標旋轉對象(但不使用攝像頭)

  1. 當鼠標只有mouse.x = event.clientX - windowHalfX; mouse.y = event.clientY - windowHalfY;,我只知道如何使用鼠標移動和鼠標按下事件處理程序改變SELECTED.rotation.ySELECTED.rotation.x(在選擇時爲選擇目標) - 我怎麼能控制SELECTED.rotation.z嗎?

  2. 如果所選對象顛倒,x旋轉也會反轉,這似乎不是非常可取的。有什麼辦法可以修改嗎?

很多例子我發現使用相機旋轉,而不是實際旋轉的對象。我想找到一個解決方案,可以旋轉對象而無需更換相機。

回答

1

您應該查看three.js中給出的控件示例。他們不舒服,大多數情況下你需要複製它們並像你想要的那樣進行修改。但是他們把一個物體當作控制器,這可能是相機或物體。這裏是一個小例子:

yawLeft = -((event['pageX'] - fullWidth) - halfWidth)/halfWidth; 
pitchDown = ((event['pageY'] - fullHeight) - halfHeight)/halfHeight; 

rotationVector.x = (-pitchUp + pitchDown); 
rotationVector.y = (-yawRight + yawLeft); 
rotationVector.z = (-rollRight + rollLeft); 

var tmpQuaternion = new THREE.Quaternion(); 
tmpQuaternion.set(rotationVector.x * rotMult, rotationVector.y * rotMult, rotationVector.z * rotMult, 1).normalize(); 
object.quaternion.multiplySelf(tmpQuaternion); 

對象可能是相機或模型。這並不重要,因爲相機也是THREE.Object3D。

+0

感謝您的回覆,我會先試試:) – nelsonwrong 2012-08-08 01:10:11

相關問題