如何在Three.js中更改相机类型?

时间:2012-12-27 21:13:39

标签: javascript webgl three.js

我在页面上为两个摄像头(Perspective和Orthographic)提供了一个下拉列表。现在我的三个场景正在使用透视相机。但根据下拉列表中的选择,我的相机应更改为“正交”并转到透视如果我在下拉列表中选择透视。我怎么能实现这个目标?请帮帮我。

有关详细代码,请参阅Jsfiddle链接:http://jsfiddle.net/sagh0900/7Anag/9/

camera = new THREE.PerspectiveCamera( 45, width / height, 0.1, 1000 );
camera.position.y = 0;
camera.position.z = 40;
camera.lookAt(new THREE.Vector3(0, 0, 0));  
scene = new THREE.Scene();
scene.add(camera);
mesh = new THREE.Mesh(new THREE.Geometry());
scene.add(mesh);

提前致谢

2 个答案:

答案 0 :(得分:6)

看看这个例子,

combo camera example

使用CombinedCamera。使用camera.toOrthographic()或camera.toPerspective()调用来更改投影。

答案 1 :(得分:3)

我认为您不能动态更改相机实例的相机类型,因为它们是单独的类,需要单独实例化。

但是,您可以创建两个相机实例,一个Ortographic和一个Perspective相机,并在render()调用中指定哪个相机处于活动状态。您需要在UI事件处理程序上更新摄像机的位置等,或者在渲染功能中克隆位置等。

但是看看three.js源代码,看起来不太难以破解支持orto / perspective模式切换的自定义相机类......但这会是一种黑客攻击。