Forge Viewer - получение неправильных координат XYZ при использовании instranceTree программы просмотра - PullRequest
0 голосов
/ 24 февраля 2020

Я строю метку, когда пользователь нажимает на dbId, для этого я использую функцию ниже, чтобы найти координаты, но она возвращает мне неправильные координаты вместо правильных. например, чтобы получить координату х как где-то около 400, я получаю только 12,85.

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;
}

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Кажется, я нашел решение.

Наконец, мы должны использовать worldToClient, чтобы получить соответствующие координаты. Но мне интересно, почему эти вещи не документированы в надлежащем месте, чтобы объяснить новичкам, таким как я, исследовать этот домен?

position = viewer.worldToClient (new THREE.Vector3 (position.x, position.y, position. г))

0 голосов
/ 24 февраля 2020

Попробуйте отменить глобальные смещения, установив следующие параметры загрузки:

const options={
   globalOffset:{x:0,y:0,z:0}
   //...
}
viewer.loadModel/start(svf, options)
viewer.loadDocumentNode(doc, geo, options)
...