autodesk-forge - 如何正确使用 SetViewFromArray
问题描述
我有两个 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)]
我假设“位置”是指相机位置,“目标”是我的对象。试过了,但我无法获得正确的视图。我也不知道“向上”是什么意思。
有人可以解释一下或分享示例代码吗?
谢谢班杜
解决方案
最简单的方法是使用“viewer.restoreState(JSON_OBJ)”方法。
在 JSON_OBJ 对象内指定“目标对象”和相机的位置(“眼睛”),然后调用 restoreState。您可以指定其他内容,例如 FOV 和枢轴点,以获得您想要的外观。
这是一篇包含详细信息的博客文章:https ://forge.autodesk.com/blog/view-each-floor-using-vertical-explode
这是一个简单的示例,它指定目标和眼睛并调用 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)
更新:
但是如果你更喜欢使用setViewFromArray
,那么请确保使用getViewArrayFromCamera
来获取相机状态数组,如下所示:
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])
推荐阅读
- go - 是否可以在 POD 运行时替换容器中的可执行文件?
- excel - 向列添加值会增加运行时间是否有原因?
- python - 根据距离和出现频率选择一个项目(从一组项目中)
- r - 如何在子列表上使用“lapply”(r)
- python-3.x - Rasa Core - 无法访问操作模板名称,因为该名称不是该域的注册操作
- python - 如何在 DRF 中组合/混合对象级别和用户级别权限?
- c - C - 错误:“struct name_s”类型的定义不完整
- docker - 如何使用 ansible 删除过时的容器?
- vb.net - 为什么即使我的程序以管理员身份执行,也无法访问特定文件夹?
- python - 在两列上使用 groupby 后获取第三列的最大值