我找到了很多解决方案,但它只适用于PerspectiveCamera,因为OrthographicCamera没有fov。 有没有解决方法?如何使用OrthographicCamera在threejs中将对象放入相机?
0
A
回答
0
正如@gaitat说,THREE.OrthographicCamera
你需要调整它的视锥的尺寸,以适应你要放大物体的大小。
简单明了的事情是使用geometry.boundingSphere
和内置照相机top
,left
,bottom
和up
。越容易的事情将是使用camera.zoom
做的工作,即
// center camera on the object (ellipse in this case)
var boundingSphere = ellipse.geometry.boundingSphere
// aspect equals window.innerWidth/window.innerHeight
if(aspect > 1.0)
{
// if view is wider than it is tall, zoom to fit height
camera.zoom = viewHeight/(boundingSphere.radius * 2)
}
else
{
// if view is taller than it is wide, zoom to fit width
camera.zoom = viewWidth/(boundingSphere.radius * 2)
}
// Don't forget this
camera.updateProjectionMatrix()
这将设置缩放级别,以使得对象(在此情况下,椭圆形)完全适合您的相机的视锥。
但是,你也将不得不要么居中对象上的摄像头:
- 旋转的摄像头,这样的BoundingSphere所中心最终指向BoundingSphere所中心
- 平移相机在相机的截锥轴上
由于翻译相机比较容易,所以两者都是比较容易的,THREE.OrthographicCamera
主要用来显示你的s的2D表示cene(即对于UI,或者采取在平行于摄像机平面的地方一些其他的东西),这里是代码来做到这一点:
camera.position.copy(boundingSphere.center)
// The number here is more or less arbitrary
// as long as all objects that need to be visible
// end up within the frustum
camera.position.z = 15
这是假设你的对象是在平行于XY平面,而且一些平面摄像机定位为平行于Z轴(因为它是默认情况下)。
这里是codepen,它显示了XY平面中的小网格和椭圆。在鼠标按下相机将放大到椭圆形,并在鼠标弹起时它会回到它的原始状态:
0
正交相机的定义包括left
,right
,top
,bottom
平截头体飞机,它们实际上定义了相机的边界。所以你需要将你的物体的边界框与你的相机边界相匹配。对象的边界框的长度应小于或等于right-left
,对象的边界框的长度应小于或等于bottom-top
。
如果您通过这些长度的比例缩放您的物体,则该物体应该适合您的相机。
相关问题
- 1. 相对于视角,我如何在ThreeJS中移动相机?
- 2. 如何在C#中使用Dapper将对象放入字典中?
- 3. 如何将对象放在相机前面总是
- 4. 如何将相机预览放入UIImageView?
- 5. 如何将对象放入链表中?
- 6. ThreeJS对象在视图中?
- 7. 如何在THREE.JS中将相机放在相机前?
- 8. 如何将随机对象放入堆栈而不会将对象变为DeferredElementImpl?
- 9. 将相机对准对象
- 10. 如何使用onload函数将值放入对象中?
- 11. 将对象放入JDBC中?
- 12. 如何在使用后释放相机?
- 13. ThreeJS raycaster关闭与相机和对象的坐标大于1000000
- 14. Libgdx OrthographicCamera - 如何设置图形对象始终居中?
- 15. 如何将对象放入字符串?
- 16. 如何将对象放入数组
- 17. ThreeJS:更新相机FOV
- 18. 对象旋转中的对象ThreeJS
- 19. threejs,保持对象在另一对象
- 20. 如何在Struts 2中将对象放入ThreadLocal中?
- 21. 如何使用CoffeeScript将多个项目放入JSON对象?
- 22. 如何添加reflectionMaterial为对象threejs
- 23. 如何将相机输入放在屏幕上并模糊它?
- 24. ThreeJS禁用相机后面的渲染
- 25. 相机在ThreeJS有奇怪的行为
- 26. 如何将一个对象数组放入另一个对象?
- 27. 如何将对象放入另一个对象Angular/Javascript
- 28. 投影机和Ray与OrthographicCamera
- 29. 如何使用ThreeJS生成对象的顶部和透视图?
- 30. 将对象放入包
你试过已经与'THREE.OrthographicCamera()'什么? – prisoner849
当然,但所有解决方案都需要设置fov - 它用于PerspectiveCamera。 –