Matcap for Poser 11. You’re welcome.
The material is de-grunged, but its overall intended colour is retained. A more suitably artistic texture (i.e. that doesn’t scream ‘3D speckly grunge’ to regular comics readers) can then be subtly added via plugging a hand-inked texture tile into the Alternate Diffuse. Ignore the hat, it’s raw and untouched as yet. And obviously there are some missing ink-lines, that would need hand-inking. And you’d want the inked lines on another layer in Photoshop, and then blend them in better. But you get the idea.
Not for use on eyes, of course, and skin may need a softer treatment. Thus we can’t just have a script blast the entire character.
Can’t think why I didn’t think of it earlier. A basic form of matcap by simply blurring out the existing textures, while keeping the intended colour. You can of course build on this base, and try to develop the more complex forms that the animation industry understands as ‘matcap’, which involve fixed shadows and suchlike.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
### v.1.0 September 2021. # A quick degrunger script for Poser 11.x. Runs on the current texture # and removes grungy detail, while retaining their averaged base colour. # Not good for skin and eyes, but good for dark grungy and speckly # clothing etc textures. Intended for use with the Poser 11 Comic Book # Preview mode, to get colour flats to go underneath a seperate lineart # render from the same scene. ### import poser scene = poser.Scene() # Test if we have materials even present. mat = scene.CurrentMaterial() if mat: tree = mat.ShaderTree() root = tree.Node(0) # Test if we have a Diffuse_Colour node with something plugged into it. imgmap = root.InputByInternalName('Diffuse_Color').InNode() # Yes we do, so continue with the MATcap process. if imgmap: shaderTree = poser.Scene().CurrentMaterial().ShaderTree() root = shaderTree.Node(0) imgNode1 = root.InputByInternalName('Diffuse_Color').InNode() parameterU = imgNode1.InputByInternalName('U_Offset') uOffset = imgNode1.InputByInternalName('U_Offset') uOffset.SetFloat(12) texStrength = imgNode1.InputByInternalName('Texture_Strength') texStrength.SetFloat(1.3) # Create Noise node and set its paramaters and position noise1 = shaderTree.CreateNode(poser.kNodeTypeCodeNOISE) noise1.SetLocation(230,460) noise1.Input(0).SetFloat(3.0) noise1.Input(1).SetFloat(2.0) noise1.Input(2).SetFloat(1.0) noise1.Input(3).SetFloat(0.0) noise1.Input(4).SetFloat(1.1) # Plug the Noise node into the right slot. shaderTree.AttachTreeNodes(imgNode1,parameterU.Name(),noise1) root = shaderTree.Node(0) imgNode2 = root.InputByInternalName('Diffuse_Color').InNode() parameterV = imgNode2.InputByInternalName('V_Offset') vOffset = imgNode2.InputByInternalName('V_Offset') vOffset.SetFloat(12) texStrength = imgNode1.InputByInternalName('Texture_Strength') texStrength.SetFloat(1.3) # Create another Noise node and set its paramaters and position noise2 = shaderTree.CreateNode(poser.kNodeTypeCodeNOISE) noise2.SetLocation(230,600) noise2.Input(0).SetFloat(3.0) noise2.Input(1).SetFloat(2.0) noise2.Input(2).SetFloat(1.0) noise2.Input(3).SetFloat(0.0) noise2.Input(4).SetFloat(1.1) # Plug the Noise node into the right slot. shaderTree.AttachTreeNodes(imgNode2,parameterV.Name(),noise2) shaderTree.UpdatePreview() scene.DrawAll() else: print 'The current selection is not driven by an Image Map.\n\nThis means it cannot be MATcap-ed.\n\nTry making a selection in the Material Room.' else: print 'Please first select or set up a material in the Material Room.' |
Pingback: What was new for Poser and DAZ in September 2021? – MyClone Poser and Daz Studio blog
Pingback: VRoid Studio 1.0 – MyClone Poser and Daz Studio blog
Pingback: Released my Poser matcap script – MyClone Poser and Daz Studio blog