Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - CodeRunner

Pages: [1] 2
Not sure if this is a bug or feature request. When you use the copy/paste commands to copy and paste a mask, it does not maintain the anchor point relationships. All of the pasted anchor points will be broken.

If there is any way to maintain the links while pasting, I think it would make a lot of sense to do so.


SubstanceSubstance - Discussions - General PBR Metallic Question
 on: February 22, 2019, 03:45:47 pm 
I have a general question about the realistic level of metallic on surfaces like painted metal and rust. Does paint (over metal) remove 100% of the metal level? If not, how does one estimate the level of metal loss?

If its all about reflecting light, I'm assuming the paint would completely change the metal level. But I'm just not sure I understand by how much. Maybe it depends on the type of paint? How much the paint allows light to penetrate to the surface? But does this modification completely eliminate metallic and just change it into glossiness/roughness?

I also have some questions about rust, but this is probably something I can figure out by researching rust itself.

Thanks for any advice!

This is more of an unintuitive setup situation than a bug. When you attach a clamp function node onto an existing value (select any value node, press tab, choose clamp node), it connects the existing value node to the clamp node's MAXIMUM connector, rather than it's INPUT connector, like one would expect.

Just something that may lead to buggy graphs if someone was in a hurry, in my opinion.

I've been trying to debug my function graphs for a few hours now, but I'm using "set as return value" to trace through my function logic progress, and I'm getting really strange results.

For example, if I have nodes setup like A->B->C, and returning at C gives me a clear image, but then dividing C by 2 and returning there gives me a competely black or white (or even a gradient sometimes) image, is this a sign of some internal failure or limitation?

Even if I replace the divide by 2 with something like adding 1, I still get the strange behavior, so it's not related to the division. I'm wondering if I'm hitting some type of internal memory limit. My graph is attempting to sample pixels around the active pixel to determine how varied the area is. And it works great when scanning 32 pixels away, and 64 pixels away. But I've hit this wall when I try 128. It's a shame, because I was really liking the effect, but I can't take it to large scale until I figure out what's happening.

If this is not likely, then its possible that I just have a strange bug in one of my function graphs somewhere.

Any advice or just a point in the right direction for the documentation would be appreciated, thanks!

It would be very helpful if it were possible to change function parameters via UI controls like normal graph nodes.

For example, if I needed a function that blended two samples, and one of that function's parameters was "blend mode", (int), I could plug in all of the parameters that I want to control dynamically with connectors, then choose the blend mode manually via a drop-down control, since it will never change in my situation.

Since nodes already allow optional parameters, I don't think this will cause any harm. It essentially allows the graph writer to set the "default" value of unplugged parameters.

Is there any way to have the input node's format be relative to the node that eventually becomes plugged into it? It doesn't have "relative to input" available as an option, and when I use "relative to parent", it seems to get stuck at whatever format the parent is set to when I publish.

So if I create a graph and set the input as relative to parent, publish and use it, then plug a 16-bit node into it, it still outputs its data as 8-bit because its parent graph was set to 8 bit when I published.

Thanks for any help

When a math value node is created, it would be great if the typing focus automatically activated on its number type-in text box. So users can add the node and type in a value immediately, without having to click in the properties panel each time.

So the user can press: "tab, f, enter, 1.3, enter", and they have a floating point node ready without any clicks

Why is it that functions which are associated with a node can access other exposed parameters (global variables) in your graph, but custom (global, reusable) functions cannot? For example, if I associate a function with the intensity parameter of blur, it will have direct access to every exposed parameter in my graph. But if I create a custom function that I want to associate with a bunch of blur node's intensity values, it will not have access.

Is there any way to give a reusable function access to exposed variables in your graph without feeding it via their own inputs?

Thanks for any advice!

Substance DesignerSubstance Designer - Discussions - UV Seam Repair Filter
 on: February 14, 2019, 06:21:57 pm 
I was considering attempting to write a custom filter that repairs UV seams in any texture or layer stack. Basically the user would stack this filter on top of any layer that has seams in Painter (caused by extreme blur, noise, some pattern, etc), and the filter would repair the broken UV borders using a distance threshold.

Does anyone know if this has been attempted before, or if its even possible?

This is my thought process:

  • input layer data (or texture with seams)
  • input position map (to convert 3D <-> 2D)
  • expose "distance" threshold parameter (create a pixel falloff using this)
  • probably expose some type of averaging interpolation value
  • compute (3D) distance from every pixel on position map to every other pixel on it (time consuming - maybe ignore pixels that are already close in 2D)
  • factor in difference in colors between pixels, so we ignore those that are already similar enough to blend
  • average color pixels based on their distance from each other, limited by the distance parameter

I think this would be enough to blur the line, but there are probably dramatic improvements and tweaks that could be done to improve the result. Such as ignoring pixels during the averaging step that are already adjacent to each other, so they don't get averaged unless they are separated by a UV border. May be able to detect this by comparing 3D distance with 2D distance.

Does anyone know if something like this is possible, or if it would even work? I was considering the Pixel Processor, but I'm not sure how one would average the pixels using it, since it only writes to one at a time. I'm new to Substance programs, so I'm sure someone out there has thought of this before. Thanks for any input!

Substance DesignerSubstance Designer - Discussions - Position Input?
 on: February 14, 2019, 01:27:22 pm 
I can't seem to find any information about a "position" input usage. Just so I'm clear, I'm referring to the usage types that you select on input/output nodes. There doesn't seem to be a position choice in the drop-down, and I'm having trouble finding any information about the Designer -> Painter usage communication logic. I'm guessing the usage ID should be "position", all in lower-case. Does anyone know why its missing? Is this one of the newer Painter channels that just didn't get added yet?


I'm not sure if this is currently possible with existing function graph nodes, but I don't believe it is. What I think would be very beneficial is something along the lines of a static c/c++ variable, where the initial value is applied when you declare it, but that code is ignored every other time it is encountered.


int MyFunctionGraph()
    static int myVar = 1;
    myVar = myVar + 1;
    return myVar;

It is currently possible to do all of this except the first line. C/C+ will execute that first line the very first time this function is called (technically, I think it happens before that, but that's irrelevant), but then never again. Maybe we could have some type of variable initialization node that gets bypassed after it is used once? Or just anything to avoid having to set initial values in separate function graphs.

EDIT UPDATE: Found out about the sequence node after writing this. It helps a little, but it would still be great to have some type of variable initialization node.


I'm not exactly sure what the node thumbnails are called, so it was difficult to search for this already being reported. Most of the math nodes have offset thumbnails on the nodes. I'm assuming this is widespread, because it's happening on both of my PCs. There is a snap of this at the bottom. As far as I can tell, it is only happening with function graphs. And only certain built-in nodes.

Notice the operator nodes (+, -, *, and max) are all offset to where you cannot see what they are. If this isn't a known problem, does anyone know what I may have done wrong to cause this?


On Windows 10 with NVidia card on both PCs. One is an Alienware laptop, the other a custom desktop. I don't have any type of windows extensions or anything that would interfere with the display, unless it is my standard windows theme settings.

Would anyone have advice on the best method to use to expand shapes in a gray mask?

For example, the input node brings in a mask that has dots (which represent holes or 'targets'), and my substance converts these dots into water stain puddles, or bullet-hole-in-paint cut-outs, etc. One of the first steps is to expand the smaller targets in that mask into something the size of the puddle/paint chipping wanted.

To do this, I've currently been using blur -> edge detect, which has a few issues when the input shapes are solid in color (you get an outline instead of a filled shape). Then I noticed the "glow" node, which also works similarly to blur, but likely has similar issues.

Are there any nodes or processes that are designed to do this? Or something someone out there has come up with that works well?

Thanks for any advice!

Substance DesignerSubstance Designer - Feature Requests - Swap/Replace Nodes
 on: February 10, 2019, 12:06:03 am 
It would be great if there was a simple way to swap nodes that are very similar. I think this would be easy to implement if the routine was kept very simple. Such as some type of filtered popup that only shows nodes that have identical connectors as the one being replaced. Or simply allow the user to drag a new node onto an existing node to replace it. The system could auto-swap connectors that have matching labels/identifiers and leave the rest alone.

For example, one would use this to swap a lower-or-equal node for a greater-or-equal node. Or change a grunge map 1 node into a grunge map 2 node.

The shift-drag mechanism is great for changing multiple connections, but it doesn't help when you need to change nodes that have a bunch of single connections.

Substance DesignerSubstance Designer - Discussions - Temporary Input Nodes?
 on: February 09, 2019, 10:23:48 pm 
This may be a really basic question, but I can't seem to find the answer anywhere.

When building a reusable material in Substance Designer, we can set up inputs and name them things like "curvature" and etc. However, it is very difficult to create an effect or material when absolutely nothing is happening in one of these inputs (black image). What is the typical workflow for this?

1. Do we add a bunch of temporary bitmaps to represent the inputs while we work on a material, then switch it back to the input node when we finish? I hope this is not the answer. This would make it a pain to make tweaks to such materials.

2. Create a second material graph that includes a node for the material we are working on, and plug everything into it there? In this case, I wouldn't know how to preview changes in real time. If I'm visualizing this correctly, we wouldn't see any changes until we switched back to the external material.

3. Have some type of automatic default switching mechanism that employs a temporary bitmap when nothing is plugged into the input nodes? This is my favorite solution. I'm hoping I've just been unlucky in not figuring out how to do this.

Is there something better? It would be great if #3 or something like it was built into the app. Sort of the same work flow as Painter, where saving your material automatically disconnects (temporary) mesh maps and associates them as input nodes.

Thanks for any advice!

Pages: [1] 2