javascript - 在 ThreeJS 中使用一个 OrbitControls 和两个摄像头?
问题描述
我在一个页面上有两个画布。我想要一个 OrbitControls 来控制每个画布上的相机。如果用户在 canvas1 上缩放,我希望 canvas2 也可以缩放。我该怎么办?
解决方案
您可以创建两个轨道控制实例,并在检测到第一个摄像机在第一个场景中移动时移动另一个摄像机。
// initialize two scenes, renderers, and cameras
const controls1 = new THREE.OrbitControls( camera1, renderer1.domElement );
const controls2 = new THREE.OrbitControls( camera2, renderer2.domElement );
controls1.addEventListener( 'change', () => {
camera2.position.copy( camera1.position );
camera2.rotation.copy( camera1.rotation );
render();
} );
controls1.addEventListener( 'change', () => {
camera1.position.copy( camera2.position );
camera1.rotation.copy( camera2.rotation );
render();
} );
这是一个示例实现:https ://jsfiddle.net/62x8c139/ 。
在这种情况下,两个摄像机将在两个场景中定位在完全相同的位置。
希望有帮助!
推荐阅读
- javascript - 为什么要指定一个 wrap 元素:或者
或 JSX 中的 <> 返回? - android - 如何在下一个按钮功能上更新 recyclerview 中的索引
- laravel - 如何在 laravel eloquent 中获取子数据和父 writer 数据?
- typescript - 为 aurelia 验证创建自定义 FluentRule
- sql-server - 这个图像值的格式是什么?
- javascript - 如何在javascript中加入基于ID的匹配字符串?
- c++ - 基于 c++ 范围的 std::vector 迭代的顺序
- ios - 在某些设备上的 iPhone Safari 中网页加载缓慢
- ios - 呈现模态全屏 SwiftUI
- php - 将单个数组转换为多维