hou*_*oft 27 javascript 3d macos google-chrome three.js
在Three.js中,我想要将相机指向3D空间中的某个点.
为此,我尝试使用如下camera.lookAt
函数:
camera.lookAt(new THREE.Vector3(-100,-100,0));
Run Code Online (Sandbox Code Playgroud)
但是,我发现这个电话没有任何效果.它什么都不做.我尝试更改向量中的数字,并且我总是在屏幕上看到相同的外观,它应该在更改时.
我刚刚发现,如果我删除了THREE.TrackballControls
我的代码中的代码,camera.lookAt()
那么它应该是可行的.我如何使用THREE.TrackballControls有什么问题吗?这是我初始化它们的方式:
controls = new THREE.TrackballControls( camera, renderer.domElement );
controls.rotateSpeed = 10.0;
controls.zoomSpeed = 1.2;
controls.panSpeed = 0.2;
controls.noZoom = false;
controls.noPan = false;
controls.staticMoving = true;
controls.dynamicDampingFactor = 1.0;
var radius = 5;
controls.minDistance = radius * 1.1;
controls.maxDistance = radius * 100;
controls.keys = [ 65, 83, 68 ]; // [ rotateKey, zoomKey, panKey ]*/
Run Code Online (Sandbox Code Playgroud)
然后在我的渲染功能中我做:
function render() {
controls.update();
renderer.render(scene, camera);
}
Run Code Online (Sandbox Code Playgroud)
关于Three.js的文档非常缺乏,所以我想我会问这里.难道我做错了什么?
hou*_*oft 46
综观的源代码THREE.TrackballControls
,我想通了,我可以让相机的外观,我想通过设置trackballControls.target
到THREE.Vector3
我希望它看,然后重新描绘的情景.
小智 6
在我看来,我们不应该弄乱原始代码。我找到了一种方法来实现查看任何特定点的目标。在声明你的“控制”变量后,只需执行这两行代码:
// Assuming you know how to set the camera and myCanvas variables
control = new THREE.OrbitControls(camera, myCanvas);
// Later in your code
control.object.position.set(camX, camY, camZ);
control.target = new THREE.Vector3(targetX, targetY, targetZ);
Run Code Online (Sandbox Code Playgroud)
请记住,这会将焦点的中心切换到您的新目标。换句话说,您的新目标将是相机所有旋转的中心。当您熟悉以默认中心操作相机时,某些部分将很难看。尽量放大,你就会明白我在说什么 希望这会有所帮助。
是的请注意......似乎有THREE.TrackballControls或THREE.OrbitControls似乎覆盖了camera.lookAt函数,因为当你实例化控件实例时,你正在传递你的相机.您可能想要摆脱控件然后执行camera.lookAt()或以某种其他方式补间您的相机以验证控件对您的相机具有重写效果.我google了一会儿为什么camera.lookat()似乎没有任何效果.
归档时间: |
|
查看次数: |
17952 次 |
最近记录: |