[Closed] RTT Switching between Scanline and Mental Ray AO Bake
Hey Everybody,
I am trying to figure out how to tell the RTT system to render out an AO map using a light map when using the Scanline renderer and Ambient Occlusion(MR) map when using Mental Ray. I can get it to kind of work by using some like this…
if foo = true
(
Run some code..
)
if nfoo = true
(
Run some other code...
)
But this codes cause a lot of issues and I think it’s because the way above the script just runs it all. Now if I do something like this…
if foo = true then
(
Run some code..
)
else if nfoo = true then
(
Run some other code...
)
The first part will run but it will not run the second part of the code and I have no idea what I am doing incorrectly. Here is the main code that I am working I have cleaned it up so that it’s not too long to look at. Yes I know it could probably be coded better but I am still in the learning process.
Global SLR = false
Global MRR = false
-- Makes sure that we have only one window open at a time.
if (( mainRoll != undefined) and ( mainRoll.isdisplayed)) do
(destroyDialog mainRoll ) -- test if dialog exist
--Moved this up here because it was causing lots of errors down below.
--global n = $.name as string
rollout mainRoll "Unreal Multi Tool"
(
group "Change Render" -- define change render buttons
(
button butScanline "Scanline" align:#left across:2 width:70 height:20
button butMR "Mental Ray" align:#left width:70 height:20
)
fn checkRender nSearch = -- function check if render installed
(
theRenderer = for obj in RendererClass.classes where
(matchPattern (obj as string) pattern:nSearch) -- check if the name in nSearch variable exist
collect obj
if theRenderer.count ==1
then renderers.current = theRenderer[1]()
else
(messageBox "render not installed")
)
on butScanline pressed do
(
SLR = true
-- Set the Render Engine to be Scaneline
renderers.production = Default_Scanline_Renderer()
--These are the Advanced Ligthing settings
SceneRadiosity.radiosity = Light_Tracer()
-- Check to make sure that we have the correct render engine installed
varScan = "*Scanline*"
checkRender varScan
-- Set the sampleing size of the light tracer
SceneRadiosity.radiosity.initial_sample_spacing = 0
-- These are the Render options
renderers.production.globalSamplerEnabled = true
renderers.production.globalSamplerClassByName = "Hammersley"
--This makes a skylight and sets it to be white.
select $Sky*
max delete
Skylight pos:[0,0,0] isSelected:off
select $Sky001
$.color = color 255 255 255
--$.hide = true
hideByCategory.lights = true
)
on butMR pressed do
(
MRR = true
-- Set the Render Engine to be Scaneline
renderers.production = mental_ray_renderer()
varMR = "*mental_ray*"
checkRender varMR
renderers.production.BoxFilterWidth = 1.0
renderers.production.BoxFilterHeight = 1.0
renderers.production.FinalGatherEnable2 = true
--renderers.production.
select $Sky*
max delete
Skylight pos:[0,0,0] isSelected:off
select $Sky001
$.color = color 255 255 255
)
group "Render To Texture Setup"
(
button hp "High Poly" align:#left width:85 height:20
button lp "Low Poly" align:#left width:85 height:20
edittext SourcePath1 "Export File Location :" text: "<Select Valid source path>" fieldWidth:150 align:#left readOnly:true labelOnTop:true
button browse1 "Browse" align:#left width:85 height:20
spinner cage "Cage Offset" align:#left width:70 height:20
colorpicker csRayMissColor "Ray Miss Color" align:#left fieldwidth:15 height:15 color:black
)
group "Render Texture Maps"
(
spinner size "Map Size" range:[0,4096,128] align:#center width:70 height:20
button butAO "AO Map" align:#left across:2 width:70 height:20
button butNO "Normal" align:#left width:70 height:20
)
On hp pressed do
(
fn geometryHP = isKindOf obj Geometry
(
theGeo1 = selectByName title:"Select High Poly" buttonText:"Select Mesh" showHidden:false single:true
global theProjObj = theGeo1
)
)
On lp pressed do
(
fn geometryLP = isKindOf obj Geometry
(
theGeo2 = selectByName title:"Select Low Poly" buttonText:"Select Mesh" showHidden:false single:true
global theObj = theGeo2
)
)
on butAO pressed do
(
try(
if (ClassOf theObj.modifiers[1]) != projection do
(
-- add project modifier and projection objects
fn addProjMod lowResObj highResObjs cageOffset =
(
modMode = getCommandPanelTaskMode()
setCommandPanelTaskMode #modify
projMod = projection()
addModifier lowResObj projMod
for obj in highResObjs do
(
projMod.addObjectNode obj
)
projMod.resetCage()
projMod.pushCage cage.value
projMod.displayCage = true
projMod.name = "ProjMod"
setCommandPanelTaskMode modMode
-- This is our retun for later.
projMod
)
))
catch
(
messagebox"Not all items filled in with data"
return()
)
if (ClassOf theObj.modifiers[1]) == projection do
(
fn addProjMod lowResObj highResObjs cageOffset =
(
--projMod = projection()
projMod
)
)
-- define variables
renderSize = size.value
fileName = theObj.name + "_AO.tga"
filePath = SourceDirectoryName_STR1
-- the bake object needs to be selected
select theObj
-- set up the bake interfaces
bakeProps = theObj.INodeBakeProperties
bakeProps.removeAllBakeElements()
bakeProjProps = theObj.INodeBakeProjProperties
if SLR = true then
(
MRR = false
-- add type of map to render
mapLM = LightingMap()
mapLM.shadowsOn =true --enable shadows
mapLM.filename = fileName
try
(
mapLM.fileType = filePath + filename
)
catch
(
messagebox"Please select a place to export your image"
return()
)
-- map size
mapLM.outputSzX = renderSize
mapLM.outputSzY = renderSize
mapLM.enabled = true
--New options that I need to look up what they do.
mapLM.filterOn = true --enable filtering
bakeProps.addBakeElement mapLM --add first element
bakeProps.bakeEnabled = true --enabling baking
bakeProps.bakeChannel = 1 --channel to bake
bakeProps.nDilations = 1 --expand the texture a bit
bakeProjProps.rayMissColor = csRayMissColor.color
-- projection
bakeProjProps.enabled = true
bakeProjProps.projectionMod = (addProjMod theObj #(theProjObj) 1)
--****
-- If this is not run when you make adjsutments to the cage they will not be saved.
--**
-- open and close RTT
macros.run "Render" "BakeDialog"
destroyDialog gTextureBakeDialog
-- the bake object needs to be selected
select theObj
-- do the render
render rendertype:#bakeSelected frame:0 vfb:true progressBar:true outputSize:[renderSize, renderSize] cancelled:&wasCanceled
)
else if MRR = true then
(
SLR = false
mapAO = Ambient_Occlusion()
mapAO.samples = 128
mapAO.filename = fileName
try
(
mapAO.fileType = filePath + filename
)
catch
(
messagebox"Please select a place to export your image"
return()
)
-- map size
mapAO.outputSzX = renderSize
mapAO.outputSzY = renderSize
mapAO.enabled = true
--New options that I need to look up what they do.
mapAO.filterOn = true --enable filtering
bakeProps.removeAllBakeElements()
bakeProps.addBakeElement mapAO --add first element
bakeProps.bakeEnabled = true --enabling baking
bakeProps.bakeChannel = 1 --channel to bake
bakeProps.nDilations = 1 --expand the texture a bit
bakeProjProps.rayMissColor = csRayMissColor.color
-- projection
bakeProjProps.enabled = true
bakeProjProps.projectionMod = (addProjMod theObj #(theProjObj) 1)
--*
-- If this is not run when you make adjsutments to the cage they will not be saved.
--*****
-- open and close RTT
macros.run "Render" "BakeDialog"
destroyDialog gTextureBakeDialog
-- the bake object needs to be selected
select theObj
-- do the render
render rendertype:#bakeSelected frame:0 vfb:true progressBar:true outputSize:[renderSize, renderSize] cancelled:&wasCanceled
)
-- file name
)
)
createDialog mainRoll 177 575
I think I am pretty close on this but I just have no idea what I might be doing wrong. As always any and all advice would be greatly appreciated.
Did you tried RTTAssist? You can find it in my signature. The script is not encrypted and you can see the code. The script provides an option to bake AO with MR and other map types with Scanline in one session.
No I have not and I am looking into it now, however I can only see the .mzp which is an encrypted file correct? I think so because when I open it I can not read any of what is going on.