PDA

View Full Version : check view for better composition script...


peaceman
04-06-2011, 04:56 PM
i needed a little helper to preview image layouts straight in the max viewport.
its far from perfect - no realtime preview, etc - but does the job.

-- Check-A-View
-- Version: 0.1
-- Created: april 2011
-- Support Version: tested on 3ds max9
-- Author: clemens
-- Web: www.oln.at (http://www.oln.at) / blog.oln.at
-- USE: - select rendertype crop (free aspect ratio) or blowup (fixed aspect ratio)
-- - select viewport
-- - press 'render' to set crop or blowup selection
-- - press 'check view' to draw black border and rule-of-third
-- - press 'redraw' to redraw vieport
-- - 'show safe frame' will be set true

--*****************************************************************************************
-- MODIFY THIS AT YOUR OWN RISK.
-- Please feel free to modify this code, but let me know so that I can benefit from the changes as well
-- and send modifications to: ck[at]oln[dot]at
--*****************************************************************************************

rollout CheckVP "Check-A-View" width:75 height:60
(

button checkVP_btn "Check View" pos:[0,0] width:72 height:27
button redrawVP_btn "Redraw" pos:[0,30] width:72 height:27

on checkVP_btn pressed do
(
VP_Res_X = float (gw.getWinSizeX())
VP_Res_y = float (gw.getWinSizeY())
Render_Res_X = float (renderWidth)
Render_Res_Y = float (renderHeight)
Aspect_Render = Render_Res_X / Render_Res_Y
Aspect_VP = VP_Res_X / VP_Res_Y
RType = getrendertype()
if RType == #blowUP then
(
region_XY = viewport.getBlowupRect viewport.activeViewport
)
else
(
region_XY = viewport.getRegionRect viewport.activeViewport
)
if region_XY.left < 0 do region_XY.left = 0
if region_XY.right > Render_Res_X do region_XY.right = Render_Res_X
if region_XY.top < 0 do region_XY.top = 0
if region_XY.bottom > Render_Res_Y do region_XY.bottom = Render_Res_Y

if Aspect_Render > Aspect_VP then
(
VP_Ratio = VP_Res_X / Render_Res_X
offset = (VP_Res_Y - (Render_Res_Y * VP_Ratio)) / 2
real_left = integer (region_XY.left * VP_Ratio)
real_right = integer (region_XY.right * VP_Ratio)
real_top = integer (region_XY.top * VP_Ratio + offset)
real_bottom = integer (region_XY.bottom * VP_Ratio + offset)
)
else
(
VP_Ratio = VP_Res_Y / Render_Res_Y
offset_X = (VP_Res_X - (Render_Res_X * VP_Ratio)) / 2
real_top = integer (region_XY.top * VP_Ratio)
real_bottom = integer (region_XY.bottom * VP_Ratio)
real_left = integer (region_XY.left * VP_Ratio + offset_X)
real_right = integer (region_XY.right * VP_Ratio + offset_X)
)

rect_1= [real_left, real_top,0]
rect_2= [real_right, real_bottom,0]

thirty_X = rect_1.x + (rect_2.x - rect_1.x)/3
sixty_X = rect_2.x - (rect_2.x - rect_1.x)/3
thirty_Y = rect_1.y + (rect_2.y - rect_1.y)/3
sixty_Y = rect_2.y - (rect_2.y - rect_1.y)/3

rect = (box2 0 0 VP_Res_X rect_1.y)
gw.wrect rect black
eRect = rect
gw.enlargeUpdateRect eRect

rect = (box2 0 rect_2.y VP_Res_X VP_Res_Y)
gw.wrect rect black
eRect = rect
gw.enlargeUpdateRect eRect

rect = (box2 0 0 rect_1.x VP_Res_Y)
gw.wrect rect black
eRect = rect
gw.enlargeUpdateRect eRect

rect = (box2 rect_2.x 0 VP_Res_X VP_Res_Y)
gw.wrect rect black
eRect = rect
gw.wmarker [rect.right,rect.bottom,0] #point color:red
gw.enlargeUpdateRect eRect

gw.hPolyline #([thirty_X,VP_Res_Y-rect_1.y,0], [thirty_X,VP_Res_Y-rect_2.y,0]) false
gw.hPolyline #([sixty_X,VP_Res_Y-rect_1.y,10], [sixty_X,VP_Res_Y-rect_2.y,10]) false
gw.hPolyline #([rect_1.x,VP_Res_Y-thirty_Y,10], [rect_2.x,VP_Res_Y-thirty_Y,10]) false
gw.hPolyline #([rect_1.x,VP_Res_Y-sixty_Y,10], [rect_2.x,VP_Res_Y-sixty_Y,10]) false

gw.updateScreen()
)


on redrawVP_btn pressed do
(
displaySafeFrames = true
completeRedraw()
)

)

createDialog CheckVP
displaySafeFrames = true
completeRedraw()

CGTalk Moderation
04-06-2011, 04:56 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.