javascript - Three.js - 在缩放时保持对象静态
问题描述
我在应用程序中使用 Three.js 进行 2D 演示,因此我使用 MapControls 设置了正交相机。场景中添加了一些对象,可以进行 2d 平移和放大/缩小。除了它们,我还有一个箭头对象,它必须是静态的,即从平移和缩放中排除。这个箭头将有一个特殊的形式和动画旋转,这就是为什么我不使用 CSS 来绘制它。
我尝试了此 SO 帖子中的指南,并成功限制了平移。
scene.add(camera);
...
camera.add(directionArrow);
但是当使用鼠标滚轮放大/缩小时,箭头也会放大/缩小。
这是一个复制最少的jsfiddle。
三角形(箭头)在缩放时应该保持静止,就像在平移时一样。
解决方案
使用 GUI 层和渲染层。
如果在 GUI 层中绘制指针,则可以根据需要更改渲染层,而不会影响 GUI 层。
通常 Three.js GUI 层是用 HTML 完成的。
一旦你有了这个,你将需要获取对象的坐标并更新 HTML。这是该过程中最复杂的部分,因此这里有一篇关于如何通过一些示例进行此操作的文章。
https://threejsfundamentals.org/threejs/lessons/threejs-align-html-elements-to-3d.html
推荐阅读
- javascript - 如果我将检查放入变量中,为什么流程会抱怨?
- lotus-notes - 如何在 Lotus Notes 的 MIME 电子邮件中包含 DocLink?
- bash - 不好:Windows 10 上的 Git Bash
- c - 我在什么环境下打开 prj/dtp 文件?
- html - 是否可以仅从特定 iframe 加载 HTML 页面?
- python - 如何分解一个函数来引用 Python 迷宫游戏中的不同“关卡”?
- python - 迭代就地子列表堆排序python实现
- c# - 如何为调用方法制定特定顺序?
- java - 如何使用 Spring Boot 授权/验证 SHA1 令牌(仅在单个端点上)?
- vue.js - VueJS addRoutes 添加更多子路由