【发布时间】:2020-06-10 04:14:52
【问题描述】:
我创建了下面的函数来获取世界坐标,但它在两次给出不同的值。
单击 dbId 时,我得到 dbid 坐标并将其传递给下面的函数,该函数为我提供世界坐标,但是当我将该 dbId 选择保存到 DB 并下次重新加载页面以查看它时,您可以看到,它给了我不同的坐标。 为什么会这样?
保存 dbid 阶段
dbid 坐标 x:-26.277027130126953 y: 18.102033615112305 z:-7.173819303512573
获取世界坐标 x: 256.76347287180107 y: 306.8180434914181 z: 0
重新加载页面阶段
dbid 坐标 x:-26.277027130126953 y: 18.102033615112305 z:-7.173819303512573
获取世界坐标 x: 422.50000131979897 是:249.49997927733767 z: 0
function getWorldCoordinates(position){
var screenpoint = viewer.worldToClient(
new THREE.Vector3(position.x,
position.y,
position.z,));
return screenpoint
}
function getObjPosition(dbId) {
function getObjPosition(dbId) {
const model = viewer.model;
const instanceTree = model.getData().instanceTree;
const fragList = model.getFragmentList();
let bounds = new THREE.Box3();
instanceTree.enumNodeFragments( dbId, ( fragId ) => {
let box = new THREE.Box3();
fragList.getWorldBounds( fragId, box );
bounds.union( box );
}, true );
const position = bounds.center();
return position;
}
【问题讨论】:
标签: autodesk-forge autodesk-viewer autodesk-model-derivative autodesk-data-management