Material Switcher - Request

Smart people ~ Great Scripts
User avatar
Draise
Captain
Posts: 3200
Joined: 21 Sep 2009, 19:33
Type the number ten into the box: 0
Location: Bogota, Colombia

Material Switcher - Request

Post by Draise »

I need a node that is able to switch Material outputs into one Material Chunk for Material Instances in a scene.

Why? So when it comes to rendering passes, all I need to do is switch a particular node and all the textures update to say a Depth Pass after a beauty pass/AO pass/reflective pass/highlight pass.


Here is an example of what is needed.
Image

In essence I need a node that with a switch where I can choose what pass/shader I want to render and override the shaders for the current or all material chunks accordingly.
User avatar
trueBlue
Captain
Posts: 5548
Joined: 06 Jul 2009, 22:50
Type the number ten into the box: 10

Re: Material Switcher - Request

Post by trueBlue »

You mean Disconnect/Connect an Output to an Input?
Try the jScript Macro Recorder with Nothing selected at first.
Note: Always Disconnect first as you can end up with mutiple connections on the same attribute.
You can have several Outputs but only One Input

Here is an example scene. Look at the commands in the buttons. Note that I recorded two Disconnects on both buttons.
HTH
Attachments
New Compressed (zipped) Folder2518.zip
(121.19 KiB) Downloaded 12 times
User avatar
Draise
Captain
Posts: 3200
Joined: 21 Sep 2009, 19:33
Type the number ten into the box: 0
Location: Bogota, Colombia

Re: Material Switcher - Request

Post by Draise »

Thanks! I had a fiddle and figured it out! Now I can make a switch to trigger one script that disconnects/reconnects then toggles the reverse disconnect/reconnect.

This is the first connect code.

Code: Select all

function Execute(params)

	Node.Disconnect(Space.CurrentScene() + "/Materials/D3D material, Nails", "Material", Space.CurrentScene() + "/Materials/nails", "Mat Item 0")
	Node.ConnectTo(Space.CurrentScene() + "/Materials/D3D material", "Material", Space.CurrentScene() + "/Materials/nails", "Mat Item 0")
Then I have another script with the following script.

Code: Select all

	Node.Disconnect(Space.CurrentScene() + "/Materials/D3D material", "Material", Space.CurrentScene() + "/Materials/nails", "Mat Item 0")
	Node.ConnectTo(Space.CurrentScene() + "/Materials/D3D material, Nails", "Material", Space.CurrentScene() + "/Materials/nails", "Mat Item 0")
Perfect. And you also helped me out learn how to make a button that runs a script. Awesome. =)
User avatar
Draise
Captain
Posts: 3200
Joined: 21 Sep 2009, 19:33
Type the number ten into the box: 0
Location: Bogota, Colombia

Re: Material Switcher - Request

Post by Draise »

Another example.

Code: Select all

Node.Disconnect(Space.CurrentScene() + "/Materials/D3D material, arms", "Material", Space.CurrentScene() + "/Materials/Arms", "Mat Item 0")
Node.Disconnect(Space.CurrentScene() + "/Materials/D3D material, Head", "Material", Space.CurrentScene() + "/Materials/Head", "Mat Item 0")
Node.Disconnect(Space.CurrentScene() + "/Materials/D3D material, Body", "Material", Space.CurrentScene() + "/Materials/Body", "Mat Item 0")
Node.ConnectTo(Space.CurrentScene() + "/Materials/MappedHalfLambert", "Material", Space.CurrentScene() + "/Materials/Arms", "Mat Item 0")
Node.ConnectTo(Space.CurrentScene() + "/Materials/MappedHalfLambert", "Material", Space.CurrentScene() + "/Materials/Head", "Mat Item 0")
Node.ConnectTo(Space.CurrentScene() + "/Materials/MappedHalfLambert", "Material", Space.CurrentScene() + "/Materials/Body", "Mat Item 0")

Node.Disconnect(Space.CurrentScene() + "/Materials/MappedHalfLambert", "Material", Space.CurrentScene() + "/Materials/Arms", "Mat Item 0")
Node.Disconnect(Space.CurrentScene() + "/Materials/MappedHalfLambert", "Material", Space.CurrentScene() + "/Materials/Head", "Mat Item 0")
Node.Disconnect(Space.CurrentScene() + "/Materials/MappedHalfLambert", "Material", Space.CurrentScene() + "/Materials/Body", "Mat Item 0")
Node.ConnectTo(Space.CurrentScene() + "/Materials/D3D material, arms", "Material", Space.CurrentScene() + "/Materials/Arms", "Mat Item 0")
Node.ConnectTo(Space.CurrentScene() + "/Materials/D3D material, Head", "Material", Space.CurrentScene() + "/Materials/Head", "Mat Item 0")
Node.ConnectTo(Space.CurrentScene() + "/Materials/D3D material, Body", "Material", Space.CurrentScene() + "/Materials/Body", "Mat Item 0")

Return to “Scripts and SDK”