安全框架计算

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]