Three.js 相机对象 .up 属性

发布于 2021-08-09 13:10:51 字数 1466 浏览 1550 评论 0

Threejs 相机对象 Camera 的 .up 属性表示相机对象的上方向,如果你有一定图形学基础,你可以很好的理解,如果没有图形学基础也没关系,你可以在 threejs 代码中更改 .up 的属性值,查看threejs 渲染结果有什么变化。

.up 属性默认值是 new THREE.Vector3(0,1,0),沿着y轴朝上,你可以使用下面代码看渲染效果绿色 y 轴数值向上,你可以改变 .up 属性的值,查看渲染结果变化。

camera.position.set(200, 300, 200);
// 浏览器控制台查看.up属性的默认值
console.log(`.up属性值`,camera.up);
camera.lookAt(0,0,0);
// 创建一个三维坐标系和一个圆台用来辅助显示up改变后渲染效果的改变
// 场景插入三维坐标轴,用来查看up属性值改变渲染效果区别
scene.add( new THREE.AxesHelper( 150 ) );
// 通过一个上下直径不同的圆柱来辅助查看up改变后渲染效果的改变
var geometry = new THREE.CylinderGeometry( 2, 5, 40, 32 )

把相机对象 .up 属性默认值 new THREE.Vector3(0,1,0) 改为相反方向 new THREE.Vector3(0,-1,0),沿着 y 轴负方向,up 改变后的渲染效果你可以看到,绿色 y 轴向下,与原来方向相反。

camera.up.set(0,-1,0)
//渲染效果:红色x轴向上
camera.up.set(1, 0, 0);
//渲染效果:蓝色z轴向上
camera.up.set(0, 0, 1);

Three.js 执行相机方法 .lookAt() 时候,会读取上方向 .up 的属性值,然后用于相机对象的矩阵计算,具体计算过程可以参考 Object3D.js 源码,如果你不关心 .lookAt() 方法具体封装代码,只需要记住使用的时候,如果你想改变 .up 的属性值,需要先重置 .up 的属性值,然后执行 .lookAt() 方法。

// 如果需要改变默认的up属性值,需在执行looAt()方法之前改变
camera.up.set(0, 0, 1);
camera.lookAt(0,0,0);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

泛泛之交

暂无简介

0 文章
0 评论
21558 人气
更多

推荐作者

已经忘了多久

文章 0 评论 0

15867725375

文章 0 评论 0

LonelySnow

文章 0 评论 0

走过海棠暮

文章 0 评论 0

轻许诺言

文章 0 评论 0

信馬由缰

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文