【问题标题】:Geo Location on click _ Forge viewer点击地理位置 _ Forge 查看器
【发布时间】:2021-10-10 06:12:41
【问题描述】:

我正在寻找有关如何在单击屏幕或在 Forge 查看器中选择模型元素时最好地显示真实世界坐标的指导。

我环顾四周并做了一些研究,但收效甚微,但我发现这篇文章有帮助,但是读出的坐标似乎与我期望看到的完全不同。

https://github.com/apprentice3d/ForgeViewerExtensions/blob/master/assets/js/extensions/transformationExplorer.js

您可以告诉我,我对查看器地理扩展了解不多,任何有关这方面的指导都会很棒。

谢谢汤姆。

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    如果在查看器中获取您点击的点的世界坐标就足够了,您可以简单地使用查看器的clientToWorld 方法,例如像这样:

    viewer.container.addEventListener('click', function (ev) {
        const result = viewer.clientToWorld(ev.clientX, ev.clientY);
        if (result) {
            console.log(result.point);
        }
    });
    
    

    【讨论】:

    • 感谢 petr,我也会考虑这个选项。
    • - 我一直在看这个,我想检查它是否返回了我点击的位置的坐标,为此我遵循了这个教程link点击位置不是位置如果有意义的话,我实际上点击了。图片link。箭头是点击,你可以看到球体在不同的位置。你知道是什么原因造成的吗?
    • 'viewer.container.addEventListener('click', function (ev) { const result = viewer.clientToWorld(ev.clientX, ev.clientY); if (result) {console.log(result .point); var geom = new THREE.SphereGeometry(10, 8, 8); var material = new THREE.MeshBasicMaterial({ color: 0xff0000 }); var sphereMesh = new THREE.Mesh(geom, material); sphereMesh.position .set(result.point.x, result.point.y, result.point.z); if (!viewer.overlays.hasScene('custom-scene')) { viewer.overlays.addScene('custom-scene' ); } viewer.overlays.addMesh(sphereMesh, 'custom-scene'); } });''
    • 我认为这可能与您的查看器画布从网页左上角偏移的方式有关。请注意,您单击的位置与球体出现的位置之间的差异与查看器画布与左上角或网页的距离非常相似。
    • 虽然人们认为在 HTML 元素中检索鼠标坐标会很简单,但不幸的是事实并非如此(例如,您可以看到 here)。
    【解决方案2】:

    我设法通过使用 NOP_VIEWER.model.getData().globalOffset 让它工作

    例子

    this.infoX.innerText = nodeData.position.x + NOP_VIEWER.model.getData().globalOffset.x;

    【讨论】:

      猜你喜欢
      • 2019-12-10
      • 2019-10-31
      • 1970-01-01
      • 2021-05-07
      • 2021-11-12
      • 1970-01-01
      • 2017-01-11
      • 2015-12-13
      • 2021-09-19
      相关资源
      最近更新 更多