1. 首页
  2. three.js

three.js在摄像机之间切换时如何防止竞态

three.jsn我有一个具有多个摄影机的场景。n在每个时间点,用户可以选择一个摄影机,并平移/缩放/旋转摄影机。n摄影机共享一个动态观察控制对象。n动态观察控制对象有多个事件侦听器:onMouseMove、onmouseheel等。n选择摄影机时,动态观察控制对象中的摄影机设置为所选相机。n但使用此架构,我会遇到竞争条件。n考虑以下用例:n1. 已选择Camera1。轨道控制摄像机设置为camera1n2. 用户通过滚动鼠标更改缩放,从而触发鼠标滚轮设置camera1的缩放。n3. 在计算轨道控制。照相机。变焦,则选择Camera2,设置轨道控制摄像机到camera2n4. 计算轨道控制。照相机。变焦完成和缩放应用到错误的相机(camera2而不是camera1)n我可以想出以下解决方案:n1. 引入互斥。我发现了一些与在Javascript中使用互斥有关的链接,例如这里、这里和这里我担心这种方法会影响性能。锁定链接到事件侦听器的每个函数以及每个动画的orbitControl更新函数可能会导致糟糕的用户体验。n2. 每个摄像头都有一个单独的orbit控件。据我所知,与例如C++在Javascript中有一个对象的多个实例不同,这意味着对象的整个内容,包括所有功能,每个实例都是重复的。因为我有数百个摄像头对象,我担心这会占用内存。n3. 当前的体系结构,多个摄像头共享一个轨道控制对象,对你来说逻辑合理吗?n4. 您是否建议为每个摄像机配备单独的轨道控制对象?n5. 关于如何组织对象,您还有其他建议吗?n How to prevent race conditions when switching between camerasn

three.js在摄像机之间切换时如何防止竞态 为WP2原创文章,链接:https://www.wp2.cn/three-js/three-js%e5%9c%a8%e6%91%84%e5%83%8f%e6%9c%ba%e4%b9%8b%e9%97%b4%e5%88%87%e6%8d%a2%e6%97%b6%e5%a6%82%e4%bd%95%e9%98%b2%e6%ad%a2%e7%ab%9e%e6%80%81/