Camera 在Maxscript中设置FOV

Camera 在Maxscript中设置FOV,camera,rendering,maxscript,Camera,Rendering,Maxscript,我对Mascript和Autodesk还比较陌生-我有一个简单的脚本,可以放置一个相机,我想在水平和垂直方向上更改FOV 我正在使用中提供的示例,我的脚本如下所示: rgb_cam = freecamera name: "foo" position:[0,0,0] rgb_cam.fov Float default: 45.0 第二个命令给出了错误: -- Type error: Call needs function or class, got: 45.0 -- MAXScript cal

我对Mascript和Autodesk还比较陌生-我有一个简单的脚本,可以放置一个相机,我想在水平和垂直方向上更改FOV

我正在使用中提供的示例,我的脚本如下所示:

rgb_cam = freecamera name: "foo"  position:[0,0,0]
rgb_cam.fov Float default: 45.0
第二个命令给出了错误:

-- Type error: Call needs function or class, got: 45.0
-- MAXScript callstack:
--  thread data: threadID:8848
--  ------------------------------------------------------
--  [stack level: 0]
--  In top-level
所以我想,调用函数的方式是错误的,尽管文档中这么说。 最后,这只会更改水平视野,而不会更改垂直视野-如何通过MaxScript更改它


我使用的是Autodesk 3ds Max 2018-学生版

您只需将值指定给fov参数,您可以这样做:

rgb_cam = freecamera name: "foo"  position:[0,0,0]
rgb_cam.fov = 33.0
rgb_cam = freecamera name: "rgb"  position:[0.0,0.0,25.0] rotation: (eulertoquat (eulerAngles 0 0 0))
--Horizontal FOV 
rgb_cam.fovType = 1
rgb_cam.fov = 84.1
--Vertical FOV
rgb_cam.fovType = 2
rgb_cam.fov = 48.1

文档告诉您的是fov默认为45,是一个浮点值,该行不是有效的代码。

我自己能够找到解决方案。文档不是如何执行文件,而只是显示默认参数的使用方式。此外,必须更改确定实际选择的视野设置的标志,如下所示:

rgb_cam = freecamera name: "foo"  position:[0,0,0]
rgb_cam.fov = 33.0
rgb_cam = freecamera name: "rgb"  position:[0.0,0.0,25.0] rotation: (eulertoquat (eulerAngles 0 0 0))
--Horizontal FOV 
rgb_cam.fovType = 1
rgb_cam.fov = 84.1
--Vertical FOV
rgb_cam.fovType = 2
rgb_cam.fov = 48.1

谢谢,这解决了第一部分-但是,如何更改相机的水平和垂直视图?fovType属性仅更改FOV在UI中的显示方式,设置。FOV将仅更改水平FOV值。要更改垂直视场,请相应地更改渲染分辨率。哦,我明白了,刚才注意到-但是分辨率和视场是两个不同的东西。水平视场是驱动其他参数的参数,更改渲染分辨率,通过更改纵横比,将获得更改的垂直视场。另请参见help.Sry中的GetCamVFOV函数,我不太明白您的意思-如何更改FOV,使其分辨率为1920x1080,FOV为84.1 x 53.8?在这种情况下,只要将FOV设置为84.1,使用此分辨率,垂直FOV将为53.8。如果有一个不同的垂直分辨率,它将是不同的。