Let me see if I get this right. You want to; if group normal input is connected then group should use that, otherwise it should use something from within the group itself?
I’ve tried something like this, but unsuccessful, and I’m not sure it can be done. I could check if color was black (shouldn’t happen in the maps I had, and was kinda complex in it’s own), but if nothing was connected, it could end up reading “random garbage data” (as if memory pointers were missing).
Only way I had around it, which has some limitations, is to have in the group gui a “blend slider” that inside the group color mixes between the input and whatever you do inside. When you want to have two separate materials following the same setting just without the feed/unfed one, you have to create a nodegroup that specifies the remaining inputs. Like:
group.ColorAndRoughness -> group.MaterialWithObjectBasedNormals.
group.ColorAndRoughness -> group.MaterialWithInputBasedNormals.
I once thought I had it, in a case where I wanted to check if UV map was present to drive tangents for anisotropic metals, and Z axis driven (internally in the group) if it was disconnected. But alas, turned out it was still reading garbage data a second time I read in the project.
Imagine the teapot being brushed metal. Lid and body can be Z axis based, but nozzle and handle would require UV based. I couldn’t use UVs for everything since tangent data isn’t smoothed over a defined seam, but I could hide the seam for those two parts but not the lid and body. I reported it as a bug, but was rejected (add geometry or paint the data in - geometry is not an option due memory and I don’t know how the data should really look like which would be too cumbersome anyhow).
So yeah, if someone has a solution to this, I would appreciate it as well.
That is, if I understood the problem correctly of course.