• Hi Guest!

    We are extremely excited to announce the release of our first Beta1.1 and the first release of our Public AddonKit!
    To participate in the Beta, a subscription to the Entertainer or Creator Tier is required. For access to the Public AddonKit you must be a Creator tier member. Once subscribed, download instructions can be found here.

    Click here for information and guides regarding the VaM2 beta. Join our Discord server for more announcements and community discussion about VaM2.
  • Hi Guest!

    VaM2 Resource Categories have now been added to the Hub! For information on posting VaM2 resources and details about VaM2 related changes to our Community Forums, please see our official announcement here.
Skin Paint

Plugins + Scripts Skin Paint

Download [<1 MB]
First off, I love the resource. In playing around with it, I had attempted to paint the inside of the mouth with no luck. How hard would it be to recognize non-skin textures (mouth/teeth/nails/etc) as paintable surfaces? I have a couple of ideas involving a cherry image on the tongue, coloring teeth like the rainbow, or adding custom nail paint without having to go through the traditional texture file. If you do plan on implementing this, I hope it's an an easy addition, if not it's still a wonderful plugin :D
 
Could I bother You to increase the brush resolution to 8192x8192 or even higher, if feasible?
I almost manged to create a face texture from a photo with your awesome plugin, but due to the 512px brush resolution the result was pixelated. (Think projection painting on a (person) atom using photos / image files within VAM, without having to use Substance Painter or FaceGen)
In any case: Kudos to You!
 
Last edited:
@Hasno @BossG Sorry, something seems off with my notifications. I didn't get alerts for your posts even though I'm watching the thread.

First off, I love the resource. In playing around with it, I had attempted to paint the inside of the mouth with no luck. How hard would it be to recognize non-skin textures (mouth/teeth/nails/etc) as paintable surfaces? I have a couple of ideas involving a cherry image on the tongue, coloring teeth like the rainbow, or adding custom nail paint without having to go through the traditional texture file. If you do plan on implementing this, I hope it's an an easy addition, if not it's still a wonderful plugin :D
Thank you! Yes, as you noticed it's currently not supported, but it's definitely something I want to look into. I've actually been thinking about it since I made the spray paint asset - if you know Mad Max, you know why, haha. It might require some bigger changes to the plugin though, so to be honest I wouldn't expect it anytime soon, sorry.

Could I bother You to increase the brush resolution to 8192x8192 or even higher, if feasible?
I almost manged to create a face texture from a photo with your awesome plugin, but due to the 512px brush resolution the result was pixelated. (Think projection painting on a (person) atom using photos / image files within VAM, without having to use Substance Painter or FaceGen)
In any case: Kudos to You!
Interesting use case, didn't think about that one, haha. The thing is, performance will be pretty bad at that resolution, but I guess it doesn't really matter if you're basically just using it as a "stamp". I might increase the maximum in the future with a warning, but for now you can use my Blooprints plugin to set any texture size you want. Just add the Blooprint plugin to the same atom or as a scene plugin where you've added the painter plugin. Create a Blooprint, open it for editing, and use the Clipboard buttons to paste the Blooprint below.
JSON:
{
   "Version" : "1.0.0.1",
   "Storables" : [
      {
         "name" : "Texture Size",
         "hasUi" : "true",
         "uiRightSide" : "false",
         "defaultValue" : "8192",
         "min" : "128",
         "max" : "16384",
         "constrained" : "false",
         "wholeNumbers" : "true",
         "$type" : "perfectbloo.Core.Storables.DynamicFloatParam"
      }
   ],
   "Graph" : {
      "Guid" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
      "variables" : [
         {
            "Guid" : "6c31ade7-87e0-4552-8406-4099585dabe5",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "name" : "Painter",
            "Kind" : "User",
            "type" : "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
         },
         {
            "Guid" : "53ee00f5-5946-4ffb-b225-61b0aaac876a",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "name" : "OnTextureSizeChanged",
            "Kind" : "Callback",
            "type" : "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
         }
      ],
      "nodes" : [
         {
            "Guid" : "599d88af-3627-4bab-8c20-4f061313ae9e",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "inExecPins" : [
            ],
            "outExecPins" : [
               {
                  "Guid" : "9acb399f-c60e-4e83-8124-14ef1323a392",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "599d88af-3627-4bab-8c20-4f061313ae9e",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
            ],
            "outDataPins" : [
            ],
            "displayName" : "OnEnable",
            "compactName" : "",
            "position" : {
               "x" : "-218.0898",
               "y" : "347.6289"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintOnEnable"
         },
         {
            "Guid" : "3386abf5-9466-4bfa-a8e5-ab913c122ff8",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
               {
                  "Guid" : "4292e495-6293-490f-9eb4-f76be84f20df",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "3386abf5-9466-4bfa-a8e5-ab913c122ff8",
                  "IsOutput" : "false",
                  "name" : "Atom",
                  "type" : "Atom, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "Atom, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "[CameraRig]",
                     "$type" : "Atom, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "489d0992-3f7e-4e1f-b31a-9e6886f2f7ee",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "3386abf5-9466-4bfa-a8e5-ab913c122ff8",
                  "IsOutput" : "false",
                  "name" : "Name",
                  "type" : "System.String",
                  "constraint" : {
                     "types" : [
                        "System.String"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "perfectbloo.SkinPaint.Painter.Painter",
                     "$type" : "System.String"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "86a2ebc2-3a8e-4aa7-b44f-6d3c0ac9373b",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "3386abf5-9466-4bfa-a8e5-ab913c122ff8",
                  "IsOutput" : "true",
                  "name" : "",
                  "type" : "MVRScript, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "MVRScript, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "FindPlugin",
            "compactName" : "",
            "position" : {
               "x" : "-551.6445",
               "y" : "-53.68359"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Atoms.PBNodeAtomsFindPlugin"
         },
         {
            "Guid" : "d699de53-a828-4403-ba13-5683e879ea4e",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
            ],
            "outDataPins" : [
               {
                  "Guid" : "c4073d39-c445-46a8-be84-434368d8a59f",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "d699de53-a828-4403-ba13-5683e879ea4e",
                  "IsOutput" : "true",
                  "name" : "Value",
                  "type" : "Atom, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "Atom, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "Owner",
            "compactName" : "Owner",
            "position" : {
               "x" : "-795.7422",
               "y" : "-110.2773"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintOwner"
         },
         {
            "Guid" : "d0ad7077-c8b3-41b8-ac2f-0950512926ec",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
               {
                  "Guid" : "41e6961e-6a63-4eac-a684-da22da90b239",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "d0ad7077-c8b3-41b8-ac2f-0950512926ec",
                  "IsOutput" : "false",
                  "name" : "Storable",
                  "type" : "JSONStorable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "edc4dce7-70a7-409d-b386-0989dae558ad",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "d0ad7077-c8b3-41b8-ac2f-0950512926ec",
                  "IsOutput" : "false",
                  "name" : "Name",
                  "type" : "System.String",
                  "constraint" : {
                     "types" : [
                        "System.String"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "TextureSize",
                     "$type" : "System.String"
                  },
                  "visibility" : [
                     "Name",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "3d0158d9-3719-4f99-abc2-e9357b913b75",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "d0ad7077-c8b3-41b8-ac2f-0950512926ec",
                  "IsOutput" : "true",
                  "name" : "",
                  "type" : "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "GetParam",
            "compactName" : "",
            "position" : {
               "x" : "-343.9766",
               "y" : "182.3164"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Storables.PBNodeStorablesGetParam"
         },
         {
            "Guid" : "d22db9ca-5327-4e77-a132-3447dc5aacf2",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "inExecPins" : [
               {
                  "Guid" : "0c731b44-d726-4b8e-9a7d-023f00ac76ac",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "d22db9ca-5327-4e77-a132-3447dc5aacf2",
                  "IsOutput" : "false",
                  "name" : "Exec",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "outExecPins" : [
               {
                  "Guid" : "cc795d21-094a-4125-9660-461a75643a31",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "d22db9ca-5327-4e77-a132-3447dc5aacf2",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
               {
                  "Guid" : "47490c41-7113-4eb8-82ff-8368d70f5983",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "d22db9ca-5327-4e77-a132-3447dc5aacf2",
                  "IsOutput" : "false",
                  "name" : "Guid",
                  "type" : "System.Guid",
                  "constraint" : {
                     "types" : [
                        "System.Guid"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "6c31ade7-87e0-4552-8406-4099585dabe5",
                     "$type" : "System.Guid"
                  },
                  "visibility" : [
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "5a9e224a-eeed-4425-981d-4590b5f3e0c0",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "d22db9ca-5327-4e77-a132-3447dc5aacf2",
                  "IsOutput" : "false",
                  "name" : "Value",
                  "type" : "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
            ],
            "displayName" : "SetVariable",
            "compactName" : "",
            "position" : {
               "x" : "143.3438",
               "y" : "348.1094"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintSetVariable"
         },
         {
            "Guid" : "c7709cd5-5b1e-4358-8b2b-3ad3f74b44dc",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "inExecPins" : [
               {
                  "Guid" : "fbebd937-ae71-4045-beb7-84fa16e84af8",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "c7709cd5-5b1e-4358-8b2b-3ad3f74b44dc",
                  "IsOutput" : "false",
                  "name" : "Exec",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "outExecPins" : [
               {
                  "Guid" : "b327d9fd-b4c1-4c87-ae19-cc338e054184",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "c7709cd5-5b1e-4358-8b2b-3ad3f74b44dc",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
               {
                  "Guid" : "ee667d5a-83d9-4f5c-bbb1-b5e28762cb33",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "c7709cd5-5b1e-4358-8b2b-3ad3f74b44dc",
                  "IsOutput" : "false",
                  "name" : "Param",
                  "type" : "JSONStorableFloat, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableBool, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableFloat, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableVector3, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableString, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableUrl, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableColor, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableAction, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "c1409bd7-1e3a-4942-965c-53af035f338a",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "c7709cd5-5b1e-4358-8b2b-3ad3f74b44dc",
                  "IsOutput" : "false",
                  "name" : "Callback",
                  "type" : "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableBool+SetBoolCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableVector3+SetVector3Callback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableString+SetStringCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableStringChooser+SetStringCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableColor+SetHSVColorCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableAction+ActionCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "025efd68-7d11-4ddb-bae2-7f3db7ef22ac",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "c7709cd5-5b1e-4358-8b2b-3ad3f74b44dc",
                  "IsOutput" : "false",
                  "name" : "On",
                  "type" : "System.Boolean",
                  "constraint" : {
                     "types" : [
                        "System.Boolean"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "true",
                     "$type" : "System.Boolean"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "aecb3720-98d7-4734-afbd-d15b510e621f",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "c7709cd5-5b1e-4358-8b2b-3ad3f74b44dc",
                  "IsOutput" : "false",
                  "name" : "CallNow",
                  "type" : "System.Boolean",
                  "constraint" : {
                     "types" : [
                        "System.Boolean"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "true",
                     "$type" : "System.Boolean"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
            ],
            "displayName" : "SetCallback",
            "compactName" : "",
            "position" : {
               "x" : "955.9766",
               "y" : "344.2344"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Storables.PBNodeStorablesSetCallback"
         },
         {
            "Guid" : "37f51fc0-8197-4c8a-a1f8-46aec3cb14aa",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "inExecPins" : [
            ],
            "outExecPins" : [
               {
                  "Guid" : "fd6db89e-3671-4b2e-b9e8-be8fadc0ecf2",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "37f51fc0-8197-4c8a-a1f8-46aec3cb14aa",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
               {
                  "Guid" : "2c7233ae-ff82-4945-b36b-7a481d27eca6",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "37f51fc0-8197-4c8a-a1f8-46aec3cb14aa",
                  "IsOutput" : "false",
                  "name" : "CallbackVariable",
                  "type" : "System.Guid",
                  "constraint" : {
                     "types" : [
                        "System.Guid"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "53ee00f5-5946-4ffb-b225-61b0aaac876a",
                     "$type" : "System.Guid"
                  },
                  "visibility" : [
                     "None"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "9bc6af63-f012-4068-81a2-d327ff47e91a",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "37f51fc0-8197-4c8a-a1f8-46aec3cb14aa",
                  "IsOutput" : "false",
                  "name" : "Type",
                  "type" : "perfectbloo.Blooprints.Nodes.Blooprint.EStorableType",
                  "constraint" : {
                     "types" : [
                        "perfectbloo.Blooprints.Nodes.Blooprint.EStorableType"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "Float",
                     "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.EStorableType"
                  },
                  "visibility" : [
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "88a4de3b-b83b-44b5-9a98-bbbc485c2e09",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "37f51fc0-8197-4c8a-a1f8-46aec3cb14aa",
                  "IsOutput" : "false",
                  "name" : "Name",
                  "type" : "System.String",
                  "constraint" : {
                     "types" : [
                        "System.String"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "OnTextureSizeChanged",
                     "$type" : "System.String"
                  },
                  "visibility" : [
                     "Name",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "2842c1d7-cbed-43fd-83ee-3555648b057f",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "37f51fc0-8197-4c8a-a1f8-46aec3cb14aa",
                  "IsOutput" : "true",
                  "name" : "Value",
                  "type" : "System.Single",
                  "constraint" : {
                     "types" : [
                        "System.Single"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "0",
                     "$type" : "System.Single"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "Callback",
            "compactName" : "",
            "position" : {
               "x" : "-335.7031",
               "y" : "-311.082"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintCallback"
         },
         {
            "Guid" : "b0698fd2-771b-4674-acc3-0166ffc8758f",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "inExecPins" : [
               {
                  "Guid" : "14097f42-971b-4cd4-b5ea-c1a70fc8dc9f",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "b0698fd2-771b-4674-acc3-0166ffc8758f",
                  "IsOutput" : "false",
                  "name" : "Exec",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "outExecPins" : [
               {
                  "Guid" : "4a67a10e-ea7c-4bc7-9149-35df2427faf2",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "b0698fd2-771b-4674-acc3-0166ffc8758f",
                  "IsOutput" : "true",
                  "name" : "Then",
                  "constraint" : {
                     "types" : [
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "isAsync" : "false",
                  "$type" : "perfectbloo.Blooprints.Graphs.ExecPin"
               }
            ],
            "inDataPins" : [
               {
                  "Guid" : "2d303331-7032-4f9b-a385-4576faf0c42f",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "b0698fd2-771b-4674-acc3-0166ffc8758f",
                  "IsOutput" : "false",
                  "name" : "Param",
                  "type" : "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableBool, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableFloat, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableVector3, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableString, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableUrl, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "JSONStorableColor, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "8f3a39dc-7a7a-4490-ab52-b59677df45f3",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "b0698fd2-771b-4674-acc3-0166ffc8758f",
                  "IsOutput" : "false",
                  "name" : "Value",
                  "type" : "System.String",
                  "constraint" : {
                     "types" : [
                        "System.Boolean",
                        "System.Single",
                        "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                        "System.String",
                        "HSVColor, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "False",
                     "$type" : "System.String"
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
            ],
            "displayName" : "SetValue",
            "compactName" : "",
            "position" : {
               "x" : "743.2891",
               "y" : "-309.6133"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Storables.PBNodeStorablesSetValue"
         },
         {
            "Guid" : "e6182e34-eb85-4d63-bf76-572d23c0a5e0",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
               {
                  "Guid" : "e1982c66-f247-4944-a9eb-8852a7765ca9",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "e6182e34-eb85-4d63-bf76-572d23c0a5e0",
                  "IsOutput" : "false",
                  "name" : "Guid",
                  "type" : "System.Guid",
                  "constraint" : {
                     "types" : [
                        "System.Guid"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "6c31ade7-87e0-4552-8406-4099585dabe5",
                     "$type" : "System.Guid"
                  },
                  "visibility" : [
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "f036131c-0e31-4d3b-9f85-891e8fe0cbf9",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "e6182e34-eb85-4d63-bf76-572d23c0a5e0",
                  "IsOutput" : "true",
                  "name" : "Value",
                  "type" : "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableStringChooser, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "GetVariable",
            "compactName" : "",
            "position" : {
               "x" : "414.1953",
               "y" : "-443.582"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintGetVariable"
         },
         {
            "Guid" : "7cf6b7a1-f5ed-46bf-b131-b85f60035bc9",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
               {
                  "Guid" : "6ea9d8af-85ba-494e-aa38-c7fe925c3fcc",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "7cf6b7a1-f5ed-46bf-b131-b85f60035bc9",
                  "IsOutput" : "false",
                  "name" : "Value",
                  "type" : "System.Object",
                  "constraint" : {
                     "types" : [
                        "System.Object"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "a35cf835-7d81-4f69-9be1-325221ac9391",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "7cf6b7a1-f5ed-46bf-b131-b85f60035bc9",
                  "IsOutput" : "true",
                  "name" : "",
                  "type" : "System.String",
                  "constraint" : {
                     "types" : [
                        "System.String"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "ToString",
            "compactName" : "STR",
            "position" : {
               "x" : "437.1563",
               "y" : "-630.8867"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.String.PBNodeStringToString"
         },
         {
            "Guid" : "6d2c5524-3a37-4f84-91d3-1519adfdb479",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
               {
                  "Guid" : "ac8b6a02-5381-49a1-926e-b425a5c2fca0",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "6d2c5524-3a37-4f84-91d3-1519adfdb479",
                  "IsOutput" : "false",
                  "name" : "Guid",
                  "type" : "System.Guid",
                  "constraint" : {
                     "types" : [
                        "System.Guid"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "53ee00f5-5946-4ffb-b225-61b0aaac876a",
                     "$type" : "System.Guid"
                  },
                  "visibility" : [
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "c3f520d0-b662-47af-8537-3c1066c4c839",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "6d2c5524-3a37-4f84-91d3-1519adfdb479",
                  "IsOutput" : "true",
                  "name" : "Value",
                  "type" : "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableFloat+SetFloatCallback, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "GetCallback",
            "compactName" : "",
            "position" : {
               "x" : "267.6094",
               "y" : "-65.06641"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintGetCallback"
         },
         {
            "Guid" : "a4fedfc1-7131-4dcf-9a16-77ce5e0aebaa",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
               {
                  "Guid" : "fb6a8f8f-e9f9-4f39-95f9-0c7072efb85c",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "a4fedfc1-7131-4dcf-9a16-77ce5e0aebaa",
                  "IsOutput" : "false",
                  "name" : "Storable",
                  "type" : "JSONStorable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorable, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               },
               {
                  "Guid" : "f779e2e0-7b79-4713-87c4-ca6436fafcf5",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "a4fedfc1-7131-4dcf-9a16-77ce5e0aebaa",
                  "IsOutput" : "false",
                  "name" : "Name",
                  "type" : "System.String",
                  "constraint" : {
                     "types" : [
                        "System.String"
                     ]
                  },
                  "defaultValue" : {
                     "$value" : "Texture Size",
                     "$type" : "System.String"
                  },
                  "visibility" : [
                     "Name",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "outDataPins" : [
               {
                  "Guid" : "fe471588-2bff-49c8-b689-0c3b36d6e855",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "a4fedfc1-7131-4dcf-9a16-77ce5e0aebaa",
                  "IsOutput" : "true",
                  "name" : "",
                  "type" : "JSONStorableFloat, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "JSONStorableFloat, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Name",
                     "Default",
                     "All"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "GetParam",
            "compactName" : "",
            "position" : {
               "x" : "448.7031",
               "y" : "179.2344"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Storables.PBNodeStorablesGetParam"
         },
         {
            "Guid" : "f34d334f-3032-42d2-8347-b08061904d8c",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "inExecPins" : [
            ],
            "outExecPins" : [
            ],
            "inDataPins" : [
            ],
            "outDataPins" : [
               {
                  "Guid" : "911d5409-ca0b-42f4-a0b3-97ae23600ad1",
                  "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
                  "Node" : "f34d334f-3032-42d2-8347-b08061904d8c",
                  "IsOutput" : "true",
                  "name" : "Value",
                  "type" : "MVRScript, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
                  "constraint" : {
                     "types" : [
                        "MVRScript, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
                     ]
                  },
                  "visibility" : [
                     "Pin",
                     "Default"
                  ],
                  "$type" : "perfectbloo.Blooprints.Graphs.DataPin"
               }
            ],
            "displayName" : "Self",
            "compactName" : "Self",
            "position" : {
               "x" : "274.8125",
               "y" : "47.80859"
            },
            "$type" : "perfectbloo.Blooprints.Nodes.Blooprint.PBNodeBlooprintSelf"
         }
      ],
      "links" : [
         {
            "Guid" : "32c686a4-5764-4c0c-8760-cf18aa2c5fce",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "Output" : "c4073d39-c445-46a8-be84-434368d8a59f",
            "Input" : "4292e495-6293-490f-9eb4-f76be84f20df"
         },
         {
            "Guid" : "f3cec3d0-f84e-474e-83ab-c579a978ddef",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "Output" : "86a2ebc2-3a8e-4aa7-b44f-6d3c0ac9373b",
            "Input" : "41e6961e-6a63-4eac-a684-da22da90b239"
         },
         {
            "Guid" : "7f96fc36-931f-4fae-90af-4efbaa2660c2",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "Output" : "9acb399f-c60e-4e83-8124-14ef1323a392",
            "Input" : "0c731b44-d726-4b8e-9a7d-023f00ac76ac"
         },
         {
            "Guid" : "9960e41c-3f01-4f95-afb1-41161fc93e2c",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "Output" : "3d0158d9-3719-4f99-abc2-e9357b913b75",
            "Input" : "5a9e224a-eeed-4425-981d-4590b5f3e0c0"
         },
         {
            "Guid" : "86c7da6f-b58e-4364-a6f2-8e695b5bb65d",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "Output" : "cc795d21-094a-4125-9660-461a75643a31",
            "Input" : "fbebd937-ae71-4045-beb7-84fa16e84af8"
         },
         {
            "Guid" : "ab809121-1d37-4912-8740-5a8da8621cdf",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "Output" : "f036131c-0e31-4d3b-9f85-891e8fe0cbf9",
            "Input" : "2d303331-7032-4f9b-a385-4576faf0c42f"
         },
         {
            "Guid" : "0837572d-fedf-47c5-bf71-6201c393e81d",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "Output" : "2842c1d7-cbed-43fd-83ee-3555648b057f",
            "Input" : "6ea9d8af-85ba-494e-aa38-c7fe925c3fcc"
         },
         {
            "Guid" : "ab2242e9-061f-4a3d-b204-ae13489d96d0",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "Output" : "a35cf835-7d81-4f69-9be1-325221ac9391",
            "Input" : "8f3a39dc-7a7a-4490-ab52-b59677df45f3"
         },
         {
            "Guid" : "2fde4693-06c8-47b1-94dd-3fb3ad670f1e",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "Output" : "fd6db89e-3671-4b2e-b9e8-be8fadc0ecf2",
            "Input" : "14097f42-971b-4cd4-b5ea-c1a70fc8dc9f"
         },
         {
            "Guid" : "3830dc87-d00e-4508-b5eb-054e58c12034",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "Output" : "911d5409-ca0b-42f4-a0b3-97ae23600ad1",
            "Input" : "fb6a8f8f-e9f9-4f39-95f9-0c7072efb85c"
         },
         {
            "Guid" : "117a3fbf-611e-4e5c-83db-4b10410087e1",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "Output" : "fe471588-2bff-49c8-b689-0c3b36d6e855",
            "Input" : "ee667d5a-83d9-4f5c-bbb1-b5e28762cb33"
         },
         {
            "Guid" : "8837da40-f77a-41d8-9fa1-f33ce4849ced",
            "Graph" : "2f214903-d7bb-4a60-9a0e-38a3264fd3b6",
            "Output" : "c3f520d0-b662-47af-8537-3c1066c4c839",
            "Input" : "c1409bd7-1e3a-4942-965c-53af035f338a"
         }
      ],
      "redirectors" : [
      ]
   }
}
BrushTextureSize.png
 
Thank You very much for taking the time to make a blooprint for my special usecase!
I will give it a (photo)shot upcoming weekend. Blooprint is definitely another gem of a program that I have to try more in- depth, anyway. Thanks again!
 
Back
Top Bottom