将视图设置为正交
Set view to orthographic
如何获取当前视图并将视图设置为正交?
我尝试使用 viewer.getCamera() 来获取当前设置视图的参数,然后使用 viewer.applyCamera() 进行设置。
var camera = viewer.getCamera();
console.log('Camera: ' + JSON.stringify(camera));
哪个returns:
Camera: {
"metadata": {"version":4.3,"type":"Object","generator":"ObjectExporter"},
"object":{"uuid":"78D2EA86-853B-473F-9E0E-E3F0C8874E40",
"type":"Camera",
"matrix":[1,0,0,0,0,1,0.00009999999747378752,0,0,-0.00009999999747378752,1,0,114010.796875,88329.0078125,135503.609375,1],
"children":[
{"uuid":"53C7FA49-B00C-4616-9E7A-CCB94A661A45",
"type":"DirectionalLight",
"color":8355711,"intensity":0,
"matrix":1,0,0,0,0,1,0,0,0,0,1,0,-0.5,0.20000000298023224,0.05999999865889549,1]},
{
"uuid":"7D5EC244-7268-4190-8480-4BD1DD56F8CB",
"type":"Object3D","matrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]
}]}}
然后我尝试设置,"matrix"数组作为参数,但是视图跳转。
viewer.setViewFromArray(params);
我使用当前相机的数据遵循数组的格式,并通过 viewer.setViewFromArray 应用它们。我保留了所有其他参数,但只将最后一个参数设置为 1(正交)。它看起来在我这边运行良好。
viewerApp.myCurrentViewer.setViewFromArray([
viewerApp.myCurrentViewer.getCamera().position.x,
viewerApp.myCurrentViewer.getCamera().position.y,
viewerApp.myCurrentViewer.getCamera().position.z,
viewerApp.myCurrentViewer.getCamera().target.x,
viewerApp.myCurrentViewer.getCamera().target.y,
viewerApp.myCurrentViewer.getCamera().target.z,
viewerApp.myCurrentViewer.getCamera().up.x,
viewerApp.myCurrentViewer.getCamera().up.y,
viewerApp.myCurrentViewer.getCamera().up.z,
viewerApp.myCurrentViewer.getCamera().aspect,
viewerApp.myCurrentViewer.getCamera().fov,
1,
1
]);
您还可以查看源代码 Viewer3D.js 以了解 setViewFromArray 的工作流程。
Viewer3D.prototype.setViewFromArray = 函数(参数,名称){....}
如果您只想在透视图和正交图之间切换视图,可以使用直接 API:
Viewer.navigation.toOrthographic()
Viewer.navigation.toPerspective()
如何获取当前视图并将视图设置为正交?
我尝试使用 viewer.getCamera() 来获取当前设置视图的参数,然后使用 viewer.applyCamera() 进行设置。
var camera = viewer.getCamera();
console.log('Camera: ' + JSON.stringify(camera));
哪个returns:
Camera: {
"metadata": {"version":4.3,"type":"Object","generator":"ObjectExporter"},
"object":{"uuid":"78D2EA86-853B-473F-9E0E-E3F0C8874E40",
"type":"Camera",
"matrix":[1,0,0,0,0,1,0.00009999999747378752,0,0,-0.00009999999747378752,1,0,114010.796875,88329.0078125,135503.609375,1],
"children":[
{"uuid":"53C7FA49-B00C-4616-9E7A-CCB94A661A45",
"type":"DirectionalLight",
"color":8355711,"intensity":0,
"matrix":1,0,0,0,0,1,0,0,0,0,1,0,-0.5,0.20000000298023224,0.05999999865889549,1]},
{
"uuid":"7D5EC244-7268-4190-8480-4BD1DD56F8CB",
"type":"Object3D","matrix":[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]
}]}}
然后我尝试设置,"matrix"数组作为参数,但是视图跳转。
viewer.setViewFromArray(params);
我使用当前相机的数据遵循数组的格式,并通过 viewer.setViewFromArray 应用它们。我保留了所有其他参数,但只将最后一个参数设置为 1(正交)。它看起来在我这边运行良好。
viewerApp.myCurrentViewer.setViewFromArray([
viewerApp.myCurrentViewer.getCamera().position.x,
viewerApp.myCurrentViewer.getCamera().position.y,
viewerApp.myCurrentViewer.getCamera().position.z,
viewerApp.myCurrentViewer.getCamera().target.x,
viewerApp.myCurrentViewer.getCamera().target.y,
viewerApp.myCurrentViewer.getCamera().target.z,
viewerApp.myCurrentViewer.getCamera().up.x,
viewerApp.myCurrentViewer.getCamera().up.y,
viewerApp.myCurrentViewer.getCamera().up.z,
viewerApp.myCurrentViewer.getCamera().aspect,
viewerApp.myCurrentViewer.getCamera().fov,
1,
1
]);
您还可以查看源代码 Viewer3D.js 以了解 setViewFromArray 的工作流程。
Viewer3D.prototype.setViewFromArray = 函数(参数,名称){....}
如果您只想在透视图和正交图之间切换视图,可以使用直接 API:
Viewer.navigation.toOrthographic()
Viewer.navigation.toPerspective()