安全框架计算
Safe frame calculation
如何在 3ds Max 中计算安全帧。我想知道安全框宽高计算中Viewport宽高、Render宽高(纵横比)的关系
我的最终目标是找到飞机左上角和安全框左上角之间的距离。
我需要的是
- 安全框的长度(红色水平箭头)
- 安全框的高度(红色垂直箭头)
- 视口和安全框之间的距离(紫色水平箭头)
以下 MAXScript 函数演示了如何在给定 point2
的视口大小和渲染大小的情况下计算 box2
的安全框架尺寸。
我们需要考虑两种不同的情况:一种是纵横比的差异导致左右间距,另一种是上下间距。
fn getViewportSafeFrameSize viewSize renderSize =
(
local viewAspect = viewSize.x as float / viewSize.y
local renderAspect = renderSize.x as float / renderSize.y
local x, y, w, h
if (viewAspect > renderAspect) then
(
h = viewSize.y
w = (h * renderAspect) as integer
y = 0
x = (viewSize.x - w) / 2
)
else
(
w = viewSize.x
h = (w / renderAspect) as integer
x = 0
y = (viewSize.y - h) / 2
)
return box2 x y w h
)
--usage
getViewportSafeFrameSize [gw.getWinSizeX(), gw.getWinSizeY()] [renderWidth, renderHeight]
如何在 3ds Max 中计算安全帧。我想知道安全框宽高计算中Viewport宽高、Render宽高(纵横比)的关系
我的最终目标是找到飞机左上角和安全框左上角之间的距离。
我需要的是
- 安全框的长度(红色水平箭头)
- 安全框的高度(红色垂直箭头)
- 视口和安全框之间的距离(紫色水平箭头)
以下 MAXScript 函数演示了如何在给定 point2
的视口大小和渲染大小的情况下计算 box2
的安全框架尺寸。
我们需要考虑两种不同的情况:一种是纵横比的差异导致左右间距,另一种是上下间距。
fn getViewportSafeFrameSize viewSize renderSize =
(
local viewAspect = viewSize.x as float / viewSize.y
local renderAspect = renderSize.x as float / renderSize.y
local x, y, w, h
if (viewAspect > renderAspect) then
(
h = viewSize.y
w = (h * renderAspect) as integer
y = 0
x = (viewSize.x - w) / 2
)
else
(
w = viewSize.x
h = (w / renderAspect) as integer
x = 0
y = (viewSize.y - h) / 2
)
return box2 x y w h
)
--usage
getViewportSafeFrameSize [gw.getWinSizeX(), gw.getWinSizeY()] [renderWidth, renderHeight]