' Created 5/11/2009, by Nassos Yiannopoulos set views = Application.Desktop.ActiveLayout.Views 'set views = views.Filter("Material Manager") set views = views.Filter("Render Tree") for each view in views Application.LogMessage "View name : " & view.Name Application.LogMessage "container : '" & view.GetAttributeValue("container") & "'" Application.LogMessage "Selected : '" & view.GetAttributeValue("selection") & "'" Selection.SetAsText view.GetAttributeValue("selection") if Selection.Count=0 then MsgBox "Please select an Architectural Shader node in the Render Tree", siMsgInformation, "Request" end if for each obj in Selection LogMessage "Shader : " & obj.Name set mia_multiout = CreateShaderFromPreset("$XSI_DSPRESETS\Shaders\Material\mental images\mia_Material_MultiOutput.Preset", obj.GetShaderContainer) set mia_render_channels = ImportShaderCompound(obj.GetShaderContainer, Application.InstallationPath(siUserPath) & "\Data\RTCompounds\mia_x Render Channels.xsirtcompound") for each p in obj.Parameters shaderParamType = obj.GetShaderParameterType(p.name) select case shaderParamType(1) case siUnknownParameterType typeString = "Unknown" case siBooleanParameterType typeString = "Boolean" case siColorParameterType typeString = "Color" case siDataParameterType typeString = "Data" case siIntegerParameterType typeString = "Integer" case siLensParameterType typeString = "Lens" case siLightParameterType typeString = "Light" case siMaterialParameterType typeString = "Material" case siMatrixParameterType typeString = "Matrix" case siModelParameterType typeString = "Model" case siProfileCurveParameterType typeString = "ProfileCurve" case siRealTimeParameterType typeString = "RealTime" case siReferenceParameterType typeString = "Reference" case siScalarParameterType typeString = "Scalar" case siShaderReferenceParameterType typeString = "ShaderReference" case siStringParameterType typeString = "String" case siStructParameterType typeString = "Struct" case siTextureParameterType typeString = "Texture" case siTextureSpaceParameterType typeString = "TextureSpace" case siVectorParameterType typeString = "Vector" case siLightmapParameterType typeString = "Lightmap" case else typeString = "" end select if shaderParamType(0)=true then io_string = "Input" else io_string = "Output" end if if shaderParamType(0)=True then if not p.IsClassOf(siCompoundParameterID) then if shaderParamType(1)<>siUnknownParameterType and not (p.Source is Nothing) then 'logmessage io_string & " " & typeString & " param: '" & p.Name & "' type (" & p.Type & ") is connected" mia_multiout.Parameters(p.Name).Connect(p.Source) else ' Copy the Value 'logmessage io_string & " " & typeString & " param: '" & p.Name & "' has class (" & TypeName(p) & ") type (" & p.Type & ") and value = " & p.Value 'logmessage io_string & " " & typeString & " param: '" & p.Name & "' has value = " & p.Value if shaderParamType(1)<>siTextureSpaceParameterType then mia_multiout.Parameters(p.Name).Value = p.Value end if end if else ' Compound Parameter if (p.Source is Nothing) then 'logmessage io_string & " " & typeString & " param: '" & p.Name & "' has class (" & TypeName(p) & ") type (" & p.Type & ")" if shaderParamType(1)=siColorParameterType then SetValue mia_multiout & "." & p.Name & ".red", GetValue(obj & "." & p.Name & ".red") SetValue mia_multiout & "." & p.Name & ".green", GetValue(obj & "." & p.Name & ".green") SetValue mia_multiout & "." & p.Name & ".blue", GetValue(obj & "." & p.Name & ".blue") SetValue mia_multiout & "." & p.Name & ".alpha", GetValue(obj & "." & p.Name & ".alpha") 'if not (obj.Parameters(p.Name & ".alpha") is Nothing) then ' mia_multiout.Parameters(p.Name & ".alpha").Value = obj.Parameters(p.Name & ".alpha").Value 'end if end if else 'logmessage io_string & " " & typeString & " param: '" & p.Name & "' has class (" & TypeName(p) & ") type (" & p.Type & ") is connected" end if end if else ' Output Parameter end if next for each p in mia_multiout.Parameters shaderParamType = mia_multiout.GetShaderParameterType(p.name) if shaderParamType(0) = False and not (mia_render_channels.Parameters(p.Name) is Nothing) then 'Output Parameter 'logmessage "Connecting " & p.Name & " to " & mia_render_channels mia_render_channels.Parameters(p.Name).Connect(p) end if next for each p in mia_render_channels.Parameters shaderParamType = mia_render_channels.GetShaderParameterType(p.name) if shaderParamType(0) = True and shaderParamType(1)=siBooleanParameterType then 'Input checkmark p.Value = True end if next next next