Autodesk forge 如何正确使用SetViewFromArray

Autodesk forge 如何正确使用SetViewFromArray,autodesk-forge,Autodesk Forge,我有两个3D点:目标对象的中心和相机位置。我想设置一个视图,就好像我从相机位置看对象一样 我正在努力找出如何计算setViewFromArray()函数的视图参数 View parameters: [position-x, position-y, position-z, target-x, target-y, target-z, up-x, up-y, up-z, aspect, fov (radians), orthoScale, isPerspective (0=perspective, 1

我有两个3D点:目标对象的中心和相机位置。我想设置一个视图,就好像我从相机位置看对象一样

我正在努力找出如何计算setViewFromArray()函数的视图参数

View parameters: [position-x, position-y, position-z, target-x, target-y, target-z, up-x, up-y, up-z, aspect, fov (radians), orthoScale, isPerspective (0=perspective, 1=ortho)]
我假设“位置”是指摄像机的位置,“目标”是我的对象。我试过了,但看不清楚。我也不知道“向上”是什么意思

有人能解释一下或者分享一下示例代码吗

多谢各位
Bandu

最简单的方法是使用“viewer.restoreState(JSON_OBJ)”方法

在JSON_OBJ对象内指定“目标对象”和相机的位置(“眼睛”),并调用restoreState。您可以指定其他内容,如FOV和轴心点,以获得所需的外观

以下是一篇详细的博文:

下面是一个快速示例,指定目标和眼睛并调用restoreState:

const JSON_OBJ = {"viewport":{"name":"",
    "eye":[-56.65177484061517,-110.22448381222459,48.75854608014884],
    "target":[-56.61241442215515,-110.13854629080645,48.725902642962545],
    "up":[0.13593096966393645,0.29678471606580187,0.9452203995872939],"worldUpVector":[0,0,1],
    "pivotPoint":[17.422795311668544,39.67309215526787,3.7083339691161967],"distanceToOrbit":172.6794473004014,
    "aspectRatio":1.9732770623333973,
    "projection":"perspective","isOrthographic":false,
    "fieldOfView":37.80748217565049}
}
        
viewer.restoreState(JSON_OBJ)

更新:

但是,如果您喜欢使用
setviewfromrarray
,请确保使用
getviewarrayfromrcamera
来获取相机状态数组,如下所示:

    let cameraState = viewer.getViewArrayFromCamera()
    > [126.9228, -105.0679, 107.23, 116.13, -28.34, 33.9, 0, 0, 1, 1.90909, 0.761012]
    viewer.setViewFromArray([126.9228, -105.0679, 107.23, 116.13, -28.34, 33.9, 0, 0, 1, 1.90909, 0.761012])
获取生成的阵列,然后移动摄影机,如下所示:

    let cameraState = viewer.getViewArrayFromCamera()
    > [126.9228, -105.0679, 107.23, 116.13, -28.34, 33.9, 0, 0, 1, 1.90909, 0.761012]
    viewer.setViewFromArray([126.9228, -105.0679, 107.23, 116.13, -28.34, 33.9, 0, 0, 1, 1.90909, 0.761012])