【问题标题】:Dynamic adding new models into viewer将新模型动态添加到查看器中
【发布时间】:2021-05-14 21:31:08
【问题描述】:

我想创建一个网页,在左侧,模型缩略图将显示,在右侧,我需要显示所述模型。我找到了最初加载多个模型的解决方案,如下所示:

    window.addEventListener('DOMContentLoaded', () =>
        loadModels([
            { urn: "urn1", xform: { x: -60, y: 0, z: 0 } },
            { urn: "urn2", xform: { x: 60, y: 0, z: 0 } },
            { urn: "urn3", xform: { x: 50, y: 0, z: 50 } },
        ])
    );

并使用以下函数

       Autodesk.Viewing.Initializer(viewerOptions, () => {

            const div = document.getElementById('forgeViewer');
            viewer = new Autodesk.Viewing.Private.GuiViewer3D(div, { extensions: ["DragControlExtension"] });
            viewer.start();
            urns.map((m) => {
                Autodesk.Viewing.Document.load(`urn:${m.urn}`, (doc) => {
                    var viewables = doc.getRoot().getDefaultGeometry();
                    viewer.loadDocumentNode(doc, viewables, {
                        placementTransform: (new THREE.Matrix4()).setPosition(m.xform),
                        keepCurrentModels: true,
                        globalOffset: { x: 0, y: 0, z: 0 }
                    })
                        .then(onLoadFinished);
                });

            })
        });

现在,我的问题是:“我可以在运行时拖动一个新模型吗”。另外,是否可以通过拖动来移动现有模型。

Autodesk.Viewing.Initializer 之后,有什么事件或方法可以帮助吗? (一些参考资料也会有所帮助。)

【问题讨论】:

    标签: c# asp.net-core autodesk-viewer blazor-webassembly


    【解决方案1】:

    加载模型后,您可以通过修改其 placementTransform 来移动它 - 例如如果 secondModel 是您刚刚添加并尝试使用例如移动的那个键盘上的键,你可以这样做:

    document.onkeydown = event => {
      if (!event.shiftKey)
        return;
    
      if (event.code === "ArrowRight") {
        let tr = secondModel.getPlacementTransform();
        // move along X axis
        tr.elements[12] += 1;
        secondModel.setPlacementTransform(tr);
      }
    
      if (event.code === "ArrowLeft") {
        let tr = secondModel.getPlacementTransform();
        // move along X axis
        tr.elements[12] -= 1;
        secondModel.setPlacementTransform(tr);
      }
    };  
    

    您可以在此处找到有关它的更多详细信息:https://forge.autodesk.com/blog/dynamic-model-placement

    【讨论】:

    • 感谢您的帮助。我还有两个查询是否可以在现有查看器中使用模型添加新模型,我可以选择一个模型并移动该模型吗?
    • 1) 是的,您可以继续将模型添加到查看器 2) 是的,您可以按照文章中的方式移动任何模型。如何选择要移动的模型取决于您。根据他们的名字,根据他们的索引(第一次加载与第三次加载),让用户从中选择一个对象
    • 感谢您的回答。您能给我提供一些类似上面的链接,以便在查看器中已经存在模型的查看器中添加模型吗?还有任何关于该方法的深入文档和解释吗?
    • 你可以一直用相同的参数调用 viewer.loadDocumentNode() 来一次又一次地添加相同的模型
    猜你喜欢
    • 2021-05-21
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 2015-05-11
    • 2015-08-28
    • 1970-01-01
    相关资源
    最近更新 更多