如何解决将新模型动态添加到查看器中
我想创建一个网页,其中左侧将显示模型缩略图,而在右侧,我需要显示所述模型。我找到了最初加载多个模型的解决方案,如下所示:
window.addEventListener('DOMContentLoaded',() =>
loadModels([
{ urn: "urn1",xform: { x: -60,y: 0,z: 0 } },{ urn: "urn2",xform: { x: 60,{ urn: "urn3",xform: { x: 50,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,z: 0 }
})
.then(onLoadFinished);
});
})
});
现在,我的问题是:“我可以在运行时拖动新模型吗”。另外,是否可以通过拖动来移动现有模型。
在 Autodesk.Viewing.Initializer
之后,是否有任何事件或方法可能会有所帮助? (一些参考也会有所帮助。)
解决方法
加载模型后,您可以通过修改其 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。