babylonjs - 在 babylon.js 中为 3d 模型添加按钮
问题描述
我是 babylon.js 的新手,我正在尝试创建类似的东西
https://sketchfab.com/3d-models/anatomy-of-the-human-brain-2019-4870387fd52b4706a87b1f3337356579
我已经导入了模型并在场景中添加了一个按钮,当我单击它时,数据会按预期显示。问题是远离模型的按钮。
这就是我所做的。 https://www.babylonjs-playground.com/#JUKXQD#341
有没有比我做的更好的方法?
解决方案
Sketchfab 上的按钮不是 3D 按钮,而是作为 HTML 层添加到呈现 3D 的画布顶部的 HTML 按钮。在每一帧上,HTML 位置都会更新。
类似这样的东西:
https://www.babylonjs-playground.com/debug.html#JUKXQD#344
请注意,投影发生在每一帧上:
scene.onBeforeRenderObservable.add(() => {
pointArray.forEach(point => {
// project from the stored picked point to the 2D screen)
var p = BABYLON.Vector3.Project(point.position,
BABYLON.Matrix.Identity(),
scene.getTransformMatrix(),
camera.viewport.toGlobal(scene.getEngine().getRenderHeight(), scene.getEngine().getRenderHeight()));
point.element.style.top = (p.y - point.element.offsetHeight / 2) + "px";
point.element.style.left = (p.x + point.element.offsetWidth) + "px";
})
});
推荐阅读
- java - 在 Mockito 中捕获静态方法调用的参数
- sql-server - IN (Select ...) 在特定数据库中的性能比 IN (values) 差得多
- jquery - 在参数数据中使用特殊字符调用 Ajax 时出现问题
- windows - 如何在 Windows 10 中复制大量文件和文件夹并在过程结束时回答有关替换/跳过/等的所有问题?
- sql - 优化数据库记录获取时间
- python - 用于从页面上的 html 中提取 javascript 变量的 Python 脚本
- python - 将两个矩阵相加(使用方法,不使用 numpy)
- go - 如何从 GO 中的 arango DB 中删除一个顶点并自动删除边缘?
- vbscript - SAP 脚本录制和回放 - 累积数据
- vega - timeFormat vega 格式秒