温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Autodesk Forge View Cube
autodesk-forge forge

其他 - Autodesk Forge View多维数据集

发布于 2020-05-19 10:41:27

我有一个伪造查看器的标记扩展名,并且我想用标记svg中的坐标更改模型位置。我已经有了坐标并想进行更改,但是什么也没有。

我得到了此代码的坐标

    let svg = document.querySelector('svg');
    let box = svg.getAttribute('viewBox').split(' ');

并想以此改变立场

viewer.autocam.camera.position.setX(parseFloat(box[0]));
viewer.autocam.camera.position.setY(parseFloat(box[1]));
viewer.autocam.camera.position.setZ(parseFloat(box[2]));

查看更多

提问者
Hovo216
被浏览
40
Bryan Huang 2020-03-03 15:37

您的代码正在更改相机的位置...您是否要更改模型相机的位置...

要更改相机的位置,请尝试navigation.setView

const position = new THREE.vector3(x,y,z)
const target = NOP_VIEWER.navigation.getTarget()
viewer.nativation.setView(position, target)

编辑

要翻译(移动)整个模型,请尝试翻译所有片段:

const total = NOP_VIEWER.model.getInstanceTree().fragList.length //fragment is 0 indexed and increments by 1 so basically iterate from 0 to length -1 

//...
for (int i=0,i<total,i++){
const fragProxy = NOP_VIEWER.impl.getFragmentProxy(NOP_VIEWER.model,i);

                const position = new THREE.Vector3(
                    target.x - fragProxy.offset.x,
                    target.y - fragProxy.offset.y,
                    target.z - fragProxy.offset.z);

                fragProxy.position = position;

                fragProxy.updateAnimTransform();

}
            viewer.impl.sceneUpdated(true);

有关更多详细信息,请参见此处示例