Text 3D Bevel

Moderator: SecondMan

User avatar
Shem Namo
Posts: 33
Joined: Sun Oct 06, 2019 9:15 pm
Been thanked: 1 time

Text 3D Bevel

#1

Post by Shem Namo » Sun Nov 10, 2019 4:19 am

GoldBevel-854x525.jpg
Hi Everyone,
Sorry for raising this subject again,
But how do you achieve a chiselled text using the text3D node?
I really appreciate the script Maxim Seredkin gave me,
Thanks @mseredkin.
But for a current project, I kind of need The text3D bevelled
I tried using the custom profile but can't get a sharp edge.
If someone has experience and could point me in the right direction
I would really appreciate it,
Thanks in advanced
and here is a macro I made for 2d bevel it is not as good as Maxim's
but it is fast.
Let me know what you think.
Maybe I could even submit it to Reactor(don't know how :oops: )
  1. {
  2.     Tools = ordered() {
  3.         HardBevel1 = MacroOperator {
  4.             Inputs = ordered() {
  5.                 Input1 = InstanceInput {
  6.                     SourceOp = "ErodeDilate1_1",
  7.                     Source = "Filter",
  8.                     Default = 2,
  9.                 },
  10.                 Input2 = InstanceInput {
  11.                     SourceOp = "ErodeDilate1_1",
  12.                     Source = "XAmount",
  13.                     Default = -0.04,
  14.                 },
  15.                 Input3 = InstanceInput {
  16.                     SourceOp = "ErodeDilate1_1",
  17.                     Source = "YAmount",
  18.                     Default = 0,
  19.                 },
  20.                 Input4 = InstanceInput {
  21.                     SourceOp = "Blur3_1",
  22.                     Source = "Filter",
  23.                 },
  24.                 MainInput1 = InstanceInput {
  25.                     SourceOp = "PipeRouter1",
  26.                     Source = "Input",
  27.                 },
  28.                 Input5 = InstanceInput {
  29.                     SourceOp = "CreateBumpMap1_1",
  30.                     Source = "HeightScale",
  31.                     Default = 32.05,
  32.                 },
  33.                 Input6 = InstanceInput {
  34.                     SourceOp = "CreateBumpMap1_1",
  35.                     Source = "BumpmapTextureDepth",
  36.                     Default = 4,
  37.                 },
  38.                 MainInput2 = InstanceInput {
  39.                     SourceOp = "Shader1_1_1",
  40.                     Source = "EnvironmentReflectionMap",
  41.                 },
  42.                 Input7 = InstanceInput {
  43.                     SourceOp = "Shader1_1_1",
  44.                     Source = "Ambient",
  45.                     Default = 0.25,
  46.                 },
  47.                 Input8 = InstanceInput {
  48.                     SourceOp = "Shader1_1_1",
  49.                     Source = "Diffuse",
  50.                     Default = 1,
  51.                 },
  52.                 Input9 = InstanceInput {
  53.                     SourceOp = "Shader1_1_1",
  54.                     Source = "Specular",
  55.                     Default = 1,
  56.                 },
  57.                 Input10 = InstanceInput {
  58.                     SourceOp = "Shader1_1_1",
  59.                     Source = "Reflection",
  60.                     Default = 1,
  61.                 },
  62.                 Input11 = InstanceInput {
  63.                     SourceOp = "Shader1_1_1",
  64.                     Source = "ReflectionType",
  65.                 },
  66.                 Input12 = InstanceInput {
  67.                     SourceOp = "Shader1_1_1",
  68.                     Source = "EquatorAngle",
  69.                     Default = 205.9,
  70.                 },
  71.                 Input13 = InstanceInput {
  72.                     SourceOp = "Shader1_1_1",
  73.                     Source = "PolarHeight",
  74.                     Default = -73.08,
  75.                 },
  76.             },
  77.             Outputs = {
  78.                 MainOutput1 = InstanceOutput {
  79.                     SourceOp = "Shader1_1_1",
  80.                     Source = "Output",
  81.                 }
  82.             },
  83.             ViewInfo = GroupInfo {
  84.                 Name = "HardBevel",
  85.                 Pos = { 0, 0 }
  86.             },
  87.             Tools = ordered() {
  88.                 ErodeDilate1_1 = ErodeDilate {
  89.                     CtrlWShown = false,
  90.                     Inputs = {
  91.                         Filter = Input { Value = 2, },
  92.                         XAmount = Input { Value = -0.04, },
  93.                         Input = Input {
  94.                             SourceOp = "PipeRouter1",
  95.                             Source = "Output",
  96.                         },
  97.                     },
  98.                     ViewInfo = OperatorInfo { Pos = { -990, -181.5 } },
  99.                 },
  100.                 Blur3_1 = Blur {
  101.                     CtrlWShown = false,
  102.                     Inputs = {
  103.                         XBlurSize = Input { Value = 0.66, },
  104.                         Input = Input {
  105.                             SourceOp = "ErodeDilate1_1",
  106.                             Source = "Output",
  107.                         },
  108.                     },
  109.                     ViewInfo = OperatorInfo { Pos = { -990, -148.5 } },
  110.                 },
  111.                 PipeRouter1 = PipeRouter {
  112.                     CtrlWShown = false,
  113.                     ViewInfo = PipeRouterInfo { Pos = { -1100, -148.5 } },
  114.                 },
  115.                 CreateBumpMap1_1 = CreateBumpMap {
  116.                     CtrlWShown = false,
  117.                     Inputs = {
  118.                         Input = Input {
  119.                             SourceOp = "Blur3_1",
  120.                             Source = "Output",
  121.                         },
  122.                         HeightScale = Input { Value = 32.05, },
  123.                         BumpmapTextureDepth = Input { Value = 4, },
  124.                         EffectMask = Input {
  125.                             SourceOp = "PipeRouter1",
  126.                             Source = "Output",
  127.                         }
  128.                     },
  129.                     ViewInfo = OperatorInfo { Pos = { -880, -148.5 } },
  130.                 },
  131.                 Shader1_1_1 = Shader {
  132.                     CtrlWZoom = false,
  133.                     CtrlWShown = false,
  134.                     Inputs = {
  135.                         EquatorAngle = Input { Value = 205.9, },
  136.                         PolarHeight = Input { Value = -73.08, },
  137.                         DiffuseCurve = Input {
  138.                             SourceOp = "Shader1DiffuseCurve_1_1",
  139.                             Source = "Value",
  140.                         },
  141.                         SpecularCurve = Input {
  142.                             SourceOp = "Shader1SpecularCurve_1_1",
  143.                             Source = "Value",
  144.                         },
  145.                         SpecularRed = Input { Value = 0.763, },
  146.                         Input = Input {
  147.                             SourceOp = "ChannelBooleans1_1",
  148.                             Source = "Output",
  149.                         },
  150.                     },
  151.                     ViewInfo = OperatorInfo { Pos = { -770, -115.5 } },
  152.                 },
  153.                 Shader1DiffuseCurve_1_1 = LUTBezier {
  154.                     KeyColorSplines = {
  155.                         [0] = {
  156.                             [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  157.                             [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
  158.                         }
  159.                     },
  160.                     SplineColor = { Red = 255, Green = 128, Blue = 0 },
  161.                     CtrlWShown = false,
  162.                 },
  163.                 Shader1SpecularCurve_1_1 = LUTBezier {
  164.                     KeyColorSplines = {
  165.                         [0] = {
  166.                             [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  167.                             [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
  168.                         }
  169.                     },
  170.                     SplineColor = { Red = 255, Green = 255, Blue = 255 },
  171.                     CtrlWShown = false,
  172.                 },
  173.                 ChannelBooleans1_1 = ChannelBoolean {
  174.                     CtrlWShown = false,
  175.                     CurrentSettings = 2,
  176.                     CustomData = {
  177.                         Settings = {
  178.                             [1] = {
  179.                                 Tools = ordered() {
  180.                                     ChannelBooleans1 = ChannelBoolean { Inputs = { ToZNormal = Input { Value = 7 }, ToYNormal = Input { Value = 6 }, EnableExtraChannels = Input { Value = 1 }, ToXNormal = Input { Value = 5 }, Background = Input { SourceOp = "CreateBumpMap1", Source = "Output" } }, CtrlWZoom = false, ViewInfo = OperatorInfo { Pos = { 165, -16.5 } }, CustomData = {
  181.                                         } }
  182.                                 }
  183.                             }
  184.                         }
  185.                     },
  186.                     Inputs = {
  187.                         ToRed = Input { Value = 15, },
  188.                         ToGreen = Input { Value = 15, },
  189.                         ToBlue = Input { Value = 15, },
  190.                         EnableExtraChannels = Input { Value = 1, },
  191.                         ToXNormal = Input { Value = 5, },
  192.                         ToYNormal = Input { Value = 6, },
  193.                         ToZNormal = Input { Value = 7, },
  194.                         Background = Input {
  195.                             SourceOp = "CreateBumpMap1_1",
  196.                             Source = "Output",
  197.                         },
  198.                     },
  199.                     ViewInfo = OperatorInfo { Pos = { -770, -148.5 } },
  200.                 }
  201.             },
  202.         }
  203.     },
  204.     ActiveTool = "HardBevel1"
  205. }
Thank you,
Shem Namo
You do not have the required permissions to view the files attached to this post.

User avatar
Millolab
Fusioneer
Posts: 123
Joined: Wed Oct 24, 2018 6:26 am
Been thanked: 27 times

Re: Text 3D Bevel

#2

Post by Millolab » Sun Nov 10, 2019 5:11 am

Vito is covering the subject with an extensive masterclass. He is not using the text3D but I guess you could figure out that part yourself.

User avatar
Shem Namo
Posts: 33
Joined: Sun Oct 06, 2019 9:15 pm
Been thanked: 1 time

Re: Text 3D Bevel

#3

Post by Shem Namo » Sun Nov 10, 2019 8:51 am

Millolab wrote:
Sun Nov 10, 2019 5:11 am
Vito is covering the subject with an extensive masterclass. He is not using the text3D but I guess you could figure out that part yourself.
Hi Emilio, that is a great tutorial Vito even mentioned you in it,
but I don't think I can apply the same techniques to text 3D.
hopefully someone in this forum has already dealt with this and can help
Thanks anyway.

BTW, how do you submit to Reactor?

User avatar
SecondMan
Site Admin
Posts: 3694
Joined: Thu Jul 31, 2014 5:31 pm
Answers: 7
Location: Vancouver, Canada
Been thanked: 130 times
Contact:

Re: Text 3D Bevel

#4

Post by SecondMan » Sun Nov 10, 2019 9:01 am

Shem Namo wrote:
Sun Nov 10, 2019 8:51 am
BTW, how do you submit to Reactor?
https://www.steakunderwater.com/wesuckl ... 228#p13228

Start there, and look in the other sticky topics for an example submission and Atomizer documentation. Don't worry about getting things a little wrong at first, we'll guide you through it.

User avatar
Millolab
Fusioneer
Posts: 123
Joined: Wed Oct 24, 2018 6:26 am
Been thanked: 27 times

Re: Text 3D Bevel

#5

Post by Millolab » Sun Nov 10, 2019 9:10 am

Shem Namo wrote:
Sun Nov 10, 2019 8:51 am
Hi Emilio, that is a great tutorial Vito even mentioned you in it,
but I don't think I can apply the same techniques to text 3D.
hopefully someone in this forum has already dealt with this and can help
Thanks anyway.
OT: I downloaded your tool. I'd just add one blur node before the erode dilate!

Added in 1 minute 53 seconds:
something like this!
  1. {
  2.     Tools = ordered() {
  3.         HardBevel1_1 = GroupOperator {
  4.             CtrlWZoom = false,
  5.             Inputs = ordered() {
  6.                 Input1 = InstanceInput {
  7.                     SourceOp = "ErodeDilate1_2",
  8.                     Source = "Filter",
  9.                     Default = 2,
  10.                 },
  11.                 Input2 = InstanceInput {
  12.                     SourceOp = "ErodeDilate1_2",
  13.                     Source = "XAmount",
  14.                     Default = -0.04,
  15.                 },
  16.                 Input3 = InstanceInput {
  17.                     SourceOp = "ErodeDilate1_2",
  18.                     Source = "YAmount",
  19.                     Default = 0,
  20.                 },
  21.                 Input4 = InstanceInput {
  22.                     SourceOp = "Blur3_2",
  23.                     Source = "Filter",
  24.                 },
  25.                 MainInput1 = InstanceInput {
  26.                     SourceOp = "PipeRouter1_1",
  27.                     Source = "Input",
  28.                 },
  29.                 Input5 = InstanceInput {
  30.                     SourceOp = "CreateBumpMap1_2",
  31.                     Source = "HeightScale",
  32.                     Default = 32.05,
  33.                 },
  34.                 Input6 = InstanceInput {
  35.                     SourceOp = "CreateBumpMap1_2",
  36.                     Source = "BumpmapTextureDepth",
  37.                     Default = 4,
  38.                 },
  39.                 MainInput2 = InstanceInput {
  40.                     SourceOp = "Shader1_1_2",
  41.                     Source = "EnvironmentReflectionMap",
  42.                 },
  43.                 Input7 = InstanceInput {
  44.                     SourceOp = "Shader1_1_2",
  45.                     Source = "Ambient",
  46.                     Default = 0.25,
  47.                 },
  48.                 Input8 = InstanceInput {
  49.                     SourceOp = "Shader1_1_2",
  50.                     Source = "Diffuse",
  51.                     Default = 1,
  52.                 },
  53.                 Input9 = InstanceInput {
  54.                     SourceOp = "Shader1_1_2",
  55.                     Source = "Specular",
  56.                     Default = 1,
  57.                 },
  58.                 Input10 = InstanceInput {
  59.                     SourceOp = "Shader1_1_2",
  60.                     Source = "Reflection",
  61.                     Default = 1,
  62.                 },
  63.                 Input11 = InstanceInput {
  64.                     SourceOp = "Shader1_1_2",
  65.                     Source = "ReflectionType",
  66.                 },
  67.                 Input12 = InstanceInput {
  68.                     SourceOp = "Shader1_1_2",
  69.                     Source = "EquatorAngle",
  70.                     Default = 205.9,
  71.                 },
  72.                 Input13 = InstanceInput {
  73.                     SourceOp = "Shader1_1_2",
  74.                     Source = "PolarHeight",
  75.                     Default = -73.08,
  76.                 }
  77.             },
  78.             Outputs = {
  79.                 MainOutput1 = InstanceOutput {
  80.                     SourceOp = "Shader1_1_2",
  81.                     Source = "Output",
  82.                 }
  83.             },
  84.             ViewInfo = GroupInfo {
  85.                 Pos = { 410.556, 27.3637 },
  86.                 Flags = {
  87.                     Expanded = true,
  88.                     AllowPan = false,
  89.                     ConnectedSnap = true,
  90.                     AutoSnap = true,
  91.                     RemoveRouters = true
  92.                 },
  93.                 Size = { 420, 132.364, 210, 24.2424 },
  94.                 Direction = "Horizontal",
  95.                 PipeStyle = "Direct",
  96.                 Scale = 1,
  97.                 Offset = { 0, 0 }
  98.             },
  99.             Tools = ordered() {
  100.                 ErodeDilate1_2 = ErodeDilate {
  101.                     Inputs = {
  102.                         Filter = Input { Value = 2, },
  103.                         XAmount = Input { Value = -0.04, },
  104.                         Input = Input {
  105.                             SourceOp = "Blur3_3",
  106.                             Source = "Output",
  107.                         },
  108.                     },
  109.                     ViewInfo = OperatorInfo { Pos = { 1.14441e-05, 8.75757 } },
  110.                 },
  111.                 Blur3_2 = Blur {
  112.                     Inputs = {
  113.                         Filter = Input { Value = FuID { "Gaussian" }, },
  114.                         XBlurSize = Input { Value = 0.66, },
  115.                         Input = Input {
  116.                             SourceOp = "ErodeDilate1_2",
  117.                             Source = "Output",
  118.                         },
  119.                     },
  120.                     ViewInfo = OperatorInfo { Pos = { -55, 76.606 } },
  121.                 },
  122.                 PipeRouter1_1 = PipeRouter {
  123.                     ViewInfo = PipeRouterInfo { Pos = { -155, 41.7576 } },
  124.                 },
  125.                 CreateBumpMap1_2 = CreateBumpMap {
  126.                     Inputs = {
  127.                         EffectMask = Input {
  128.                             SourceOp = "PipeRouter1_1",
  129.                             Source = "Output",
  130.                         },
  131.                         Input = Input {
  132.                             SourceOp = "Blur3_2",
  133.                             Source = "Output",
  134.                         },
  135.                         HeightScale = Input { Value = 32.05, },
  136.                         BumpmapTextureDepth = Input { Value = 4, },
  137.                     },
  138.                     ViewInfo = OperatorInfo { Pos = { 55, 41.7576 } },
  139.                 },
  140.                 Shader1_1_2 = Shader {
  141.                     CtrlWZoom = false,
  142.                     CtrlWShown = false,
  143.                     Inputs = {
  144.                         EquatorAngle = Input { Value = 205.9, },
  145.                         PolarHeight = Input { Value = -73.08, },
  146.                         DiffuseCurve = Input {
  147.                             SourceOp = "Shader1DiffuseCurve_1_2",
  148.                             Source = "Value",
  149.                         },
  150.                         SpecularCurve = Input {
  151.                             SourceOp = "Shader1SpecularCurve_1_2",
  152.                             Source = "Value",
  153.                         },
  154.                         SpecularRed = Input { Value = 0.763, },
  155.                         Input = Input {
  156.                             SourceOp = "ChannelBooleans1_2",
  157.                             Source = "Output",
  158.                         },
  159.                     },
  160.                     ViewInfo = OperatorInfo { Pos = { 165, 74.7576 } },
  161.                 },
  162.                 Shader1DiffuseCurve_1_2 = LUTBezier {
  163.                     KeyColorSplines = {
  164.                         [0] = {
  165.                             [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  166.                             [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
  167.                         }
  168.                     },
  169.                     SplineColor = { Red = 255, Green = 128, Blue = 0 },
  170.                     CtrlWShown = false,
  171.                 },
  172.                 Shader1SpecularCurve_1_2 = LUTBezier {
  173.                     KeyColorSplines = {
  174.                         [0] = {
  175.                             [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  176.                             [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
  177.                         }
  178.                     },
  179.                     SplineColor = { Red = 255, Green = 255, Blue = 255 },
  180.                     CtrlWShown = false,
  181.                 },
  182.                 ChannelBooleans1_2 = ChannelBoolean {
  183.                     CtrlWShown = false,
  184.                     CurrentSettings = 2,
  185.                     CustomData = {
  186.                         Settings = {
  187.                             [1] = {
  188.                                 Tools = ordered() {
  189.                                     ChannelBooleans1 = ChannelBoolean { Inputs = { ToZNormal = Input { Value = 7 }, ToYNormal = Input { Value = 6 }, EnableExtraChannels = Input { Value = 1 }, ToXNormal = Input { Value = 5 }, Background = Input { SourceOp = "CreateBumpMap1", Source = "Output" } }, CtrlWZoom = false, ViewInfo = OperatorInfo { Pos = { 165, -16.5 } }, CustomData = {
  190.                                         } }
  191.                                 }
  192.                             }
  193.                         }
  194.                     },
  195.                     Inputs = {
  196.                         ToRed = Input { Value = 15, },
  197.                         ToGreen = Input { Value = 15, },
  198.                         ToBlue = Input { Value = 15, },
  199.                         EnableExtraChannels = Input { Value = 1, },
  200.                         ToXNormal = Input { Value = 5, },
  201.                         ToYNormal = Input { Value = 6, },
  202.                         ToZNormal = Input { Value = 7, },
  203.                         Background = Input {
  204.                             SourceOp = "CreateBumpMap1_2",
  205.                             Source = "Output",
  206.                         },
  207.                     },
  208.                     ViewInfo = OperatorInfo { Pos = { 165, 41.7576 } },
  209.                 },
  210.                 Blur3_3 = Blur {
  211.                     Inputs = {
  212.                         Filter = Input { Value = FuID { "Gaussian" }, },
  213.                         XBlurSize = Input { Value = 5.3, },
  214.                         Input = Input {
  215.                             SourceOp = "PipeRouter1_1",
  216.                             Source = "Output",
  217.                         },
  218.                     },
  219.                     ViewInfo = OperatorInfo { Pos = { -121.111, 8.75757 } },
  220.                 }
  221.             },
  222.         }
  223.     },
  224.     ActiveTool = "HardBevel1_1"
  225. }

User avatar
Shem Namo
Posts: 33
Joined: Sun Oct 06, 2019 9:15 pm
Been thanked: 1 time

Re: Text 3D Bevel

#6

Post by Shem Namo » Sun Nov 10, 2019 9:36 am

Millolab wrote:
Sun Nov 10, 2019 9:12 am
Shem Namo wrote:
Sun Nov 10, 2019 8:51 am
Hi Emilio, that is a great tutorial Vito even mentioned you in it,
but I don't think I can apply the same techniques to text 3D.
hopefully someone in this forum has already dealt with this and can help
Thanks anyway.
OT: I downloaded your tool. I'd just add one blur node before the erode dilate!

Added in 1 minute 53 seconds:
something like this!
  1. {
  2.     Tools = ordered() {
  3.         HardBevel1_1 = GroupOperator {
  4.             CtrlWZoom = false,
  5.             Inputs = ordered() {
  6.                 Input1 = InstanceInput {
  7.                     SourceOp = "ErodeDilate1_2",
  8.                     Source = "Filter",
  9.                     Default = 2,
  10.                 },
  11.                 Input2 = InstanceInput {
  12.                     SourceOp = "ErodeDilate1_2",
  13.                     Source = "XAmount",
  14.                     Default = -0.04,
  15.                 },
  16.                 Input3 = InstanceInput {
  17.                     SourceOp = "ErodeDilate1_2",
  18.                     Source = "YAmount",
  19.                     Default = 0,
  20.                 },
  21.                 Input4 = InstanceInput {
  22.                     SourceOp = "Blur3_2",
  23.                     Source = "Filter",
  24.                 },
  25.                 MainInput1 = InstanceInput {
  26.                     SourceOp = "PipeRouter1_1",
  27.                     Source = "Input",
  28.                 },
  29.                 Input5 = InstanceInput {
  30.                     SourceOp = "CreateBumpMap1_2",
  31.                     Source = "HeightScale",
  32.                     Default = 32.05,
  33.                 },
  34.                 Input6 = InstanceInput {
  35.                     SourceOp = "CreateBumpMap1_2",
  36.                     Source = "BumpmapTextureDepth",
  37.                     Default = 4,
  38.                 },
  39.                 MainInput2 = InstanceInput {
  40.                     SourceOp = "Shader1_1_2",
  41.                     Source = "EnvironmentReflectionMap",
  42.                 },
  43.                 Input7 = InstanceInput {
  44.                     SourceOp = "Shader1_1_2",
  45.                     Source = "Ambient",
  46.                     Default = 0.25,
  47.                 },
  48.                 Input8 = InstanceInput {
  49.                     SourceOp = "Shader1_1_2",
  50.                     Source = "Diffuse",
  51.                     Default = 1,
  52.                 },
  53.                 Input9 = InstanceInput {
  54.                     SourceOp = "Shader1_1_2",
  55.                     Source = "Specular",
  56.                     Default = 1,
  57.                 },
  58.                 Input10 = InstanceInput {
  59.                     SourceOp = "Shader1_1_2",
  60.                     Source = "Reflection",
  61.                     Default = 1,
  62.                 },
  63.                 Input11 = InstanceInput {
  64.                     SourceOp = "Shader1_1_2",
  65.                     Source = "ReflectionType",
  66.                 },
  67.                 Input12 = InstanceInput {
  68.                     SourceOp = "Shader1_1_2",
  69.                     Source = "EquatorAngle",
  70.                     Default = 205.9,
  71.                 },
  72.                 Input13 = InstanceInput {
  73.                     SourceOp = "Shader1_1_2",
  74.                     Source = "PolarHeight",
  75.                     Default = -73.08,
  76.                 }
  77.             },
  78.             Outputs = {
  79.                 MainOutput1 = InstanceOutput {
  80.                     SourceOp = "Shader1_1_2",
  81.                     Source = "Output",
  82.                 }
  83.             },
  84.             ViewInfo = GroupInfo {
  85.                 Pos = { 410.556, 27.3637 },
  86.                 Flags = {
  87.                     Expanded = true,
  88.                     AllowPan = false,
  89.                     ConnectedSnap = true,
  90.                     AutoSnap = true,
  91.                     RemoveRouters = true
  92.                 },
  93.                 Size = { 420, 132.364, 210, 24.2424 },
  94.                 Direction = "Horizontal",
  95.                 PipeStyle = "Direct",
  96.                 Scale = 1,
  97.                 Offset = { 0, 0 }
  98.             },
  99.             Tools = ordered() {
  100.                 ErodeDilate1_2 = ErodeDilate {
  101.                     Inputs = {
  102.                         Filter = Input { Value = 2, },
  103.                         XAmount = Input { Value = -0.04, },
  104.                         Input = Input {
  105.                             SourceOp = "Blur3_3",
  106.                             Source = "Output",
  107.                         },
  108.                     },
  109.                     ViewInfo = OperatorInfo { Pos = { 1.14441e-05, 8.75757 } },
  110.                 },
  111.                 Blur3_2 = Blur {
  112.                     Inputs = {
  113.                         Filter = Input { Value = FuID { "Gaussian" }, },
  114.                         XBlurSize = Input { Value = 0.66, },
  115.                         Input = Input {
  116.                             SourceOp = "ErodeDilate1_2",
  117.                             Source = "Output",
  118.                         },
  119.                     },
  120.                     ViewInfo = OperatorInfo { Pos = { -55, 76.606 } },
  121.                 },
  122.                 PipeRouter1_1 = PipeRouter {
  123.                     ViewInfo = PipeRouterInfo { Pos = { -155, 41.7576 } },
  124.                 },
  125.                 CreateBumpMap1_2 = CreateBumpMap {
  126.                     Inputs = {
  127.                         EffectMask = Input {
  128.                             SourceOp = "PipeRouter1_1",
  129.                             Source = "Output",
  130.                         },
  131.                         Input = Input {
  132.                             SourceOp = "Blur3_2",
  133.                             Source = "Output",
  134.                         },
  135.                         HeightScale = Input { Value = 32.05, },
  136.                         BumpmapTextureDepth = Input { Value = 4, },
  137.                     },
  138.                     ViewInfo = OperatorInfo { Pos = { 55, 41.7576 } },
  139.                 },
  140.                 Shader1_1_2 = Shader {
  141.                     CtrlWZoom = false,
  142.                     CtrlWShown = false,
  143.                     Inputs = {
  144.                         EquatorAngle = Input { Value = 205.9, },
  145.                         PolarHeight = Input { Value = -73.08, },
  146.                         DiffuseCurve = Input {
  147.                             SourceOp = "Shader1DiffuseCurve_1_2",
  148.                             Source = "Value",
  149.                         },
  150.                         SpecularCurve = Input {
  151.                             SourceOp = "Shader1SpecularCurve_1_2",
  152.                             Source = "Value",
  153.                         },
  154.                         SpecularRed = Input { Value = 0.763, },
  155.                         Input = Input {
  156.                             SourceOp = "ChannelBooleans1_2",
  157.                             Source = "Output",
  158.                         },
  159.                     },
  160.                     ViewInfo = OperatorInfo { Pos = { 165, 74.7576 } },
  161.                 },
  162.                 Shader1DiffuseCurve_1_2 = LUTBezier {
  163.                     KeyColorSplines = {
  164.                         [0] = {
  165.                             [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  166.                             [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
  167.                         }
  168.                     },
  169.                     SplineColor = { Red = 255, Green = 128, Blue = 0 },
  170.                     CtrlWShown = false,
  171.                 },
  172.                 Shader1SpecularCurve_1_2 = LUTBezier {
  173.                     KeyColorSplines = {
  174.                         [0] = {
  175.                             [0] = { 0, RH = { 0.333333333333333, 0.333333333333333 }, Flags = { Linear = true } },
  176.                             [1] = { 1, LH = { 0.666666666666667, 0.666666666666667 }, Flags = { Linear = true } }
  177.                         }
  178.                     },
  179.                     SplineColor = { Red = 255, Green = 255, Blue = 255 },
  180.                     CtrlWShown = false,
  181.                 },
  182.                 ChannelBooleans1_2 = ChannelBoolean {
  183.                     CtrlWShown = false,
  184.                     CurrentSettings = 2,
  185.                     CustomData = {
  186.                         Settings = {
  187.                             [1] = {
  188.                                 Tools = ordered() {
  189.                                     ChannelBooleans1 = ChannelBoolean { Inputs = { ToZNormal = Input { Value = 7 }, ToYNormal = Input { Value = 6 }, EnableExtraChannels = Input { Value = 1 }, ToXNormal = Input { Value = 5 }, Background = Input { SourceOp = "CreateBumpMap1", Source = "Output" } }, CtrlWZoom = false, ViewInfo = OperatorInfo { Pos = { 165, -16.5 } }, CustomData = {
  190.                                         } }
  191.                                 }
  192.                             }
  193.                         }
  194.                     },
  195.                     Inputs = {
  196.                         ToRed = Input { Value = 15, },
  197.                         ToGreen = Input { Value = 15, },
  198.                         ToBlue = Input { Value = 15, },
  199.                         EnableExtraChannels = Input { Value = 1, },
  200.                         ToXNormal = Input { Value = 5, },
  201.                         ToYNormal = Input { Value = 6, },
  202.                         ToZNormal = Input { Value = 7, },
  203.                         Background = Input {
  204.                             SourceOp = "CreateBumpMap1_2",
  205.                             Source = "Output",
  206.                         },
  207.                     },
  208.                     ViewInfo = OperatorInfo { Pos = { 165, 41.7576 } },
  209.                 },
  210.                 Blur3_3 = Blur {
  211.                     Inputs = {
  212.                         Filter = Input { Value = FuID { "Gaussian" }, },
  213.                         XBlurSize = Input { Value = 5.3, },
  214.                         Input = Input {
  215.                             SourceOp = "PipeRouter1_1",
  216.                             Source = "Output",
  217.                         },
  218.                     },
  219.                     ViewInfo = OperatorInfo { Pos = { -121.111, 8.75757 } },
  220.                 }
  221.             },
  222.         }
  223.     },
  224.     ActiveTool = "HardBevel1_1"
  225. }
Good Call