Forum: Poser 12


Subject: Another tool for Poser 12

Y-Phil opened this issue on May 13, 2021 Β· 7 posts


Y-Phil posted Thu, 13 May 2021 at 11:11 AM

Long time ago, I was born in August, therefore under the sign of laziness... ?

That's why I wrote scripts to ease tasks, among them the cases when I want to change a particular parameter of the same node, present in the different materials of a figure or a prop. This tool won't be useful for La Femme as an example: three material to define most of the skin. But there are hairs props, or such as in my case: Vic4 or Sasha-19, that have quite a lot of parts to change, and this can be time-consuming.

In my case, I'm using it for cases such as when I want to change the specularity for all nodes containing the word " skin" in my character (note the space at the start). But you can also select a specific node in the list, and then a specific parameter.

I had noted that such functionalities are present in daz' interface, and I'm founding rather handy: the ability to change a specific parameter that's common to a few parts of the figure's material. That was my motivation.

If you may find it useful, just download it here, and put it behind one of Poser's buttons in its Python palette.

π’«π’½π“Žπ“


(っ◔◑◔)っ

πŸ‘Ώ Win11 on i9-13900K@5GHz, 64GB, RoG Strix B760F Gamng, Asus Tuf Gaming RTX 4070 OC Edition, 1 TB SSD, 6+4+8TB HD
πŸ‘Ώ Mac Mini M2, Sequoia 15.2, 16GB, 500GB SSD
πŸ‘Ώ Nas 10TB
πŸ‘Ώ Poser 13 and soon 14 β€οΈ


VedaDalsette posted Thu, 13 May 2021 at 1:04 PM

Thanks!



W11,Intel i9-14900KF @ 3.20GHz, 64.0 GB RAM, 64-bit, GeForce GTX 4070 Ti SUPER, 16GB. 

Old lady hobbyist.

All visual art or fiction is "playing with dolls."


bagginsbill posted Thu, 13 May 2021 at 1:04 PM

See also my script Parmatic (from 2009 but probably still works)


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


VedaDalsette posted Thu, 13 May 2021 at 6:19 PM

Cool Love the name, too.



W11,Intel i9-14900KF @ 3.20GHz, 64.0 GB RAM, 64-bit, GeForce GTX 4070 Ti SUPER, 16GB. 

Old lady hobbyist.

All visual art or fiction is "playing with dolls."


TheAnimaGemini posted Thu, 13 May 2021 at 11:18 PM

@Y-Phill Magnifique !!!! Vive la paresse!! Merci ?

La vie est Γ©ternelle. L'amour est immortel.

β€œDwell on the beauty of life. Watch the stars, and see yourself running with them.”
― Marcus Aurelius,


Y-Phil posted Fri, 14 May 2021 at 9:42 AM

TheAnimaGemini posted at 9:42AM Fri, 14 May 2021 - #4419137

@Y-Phill Magnifique !!!! Vive la paresse!! Merci ?

???

π’«π’½π“Žπ“


(っ◔◑◔)っ

πŸ‘Ώ Win11 on i9-13900K@5GHz, 64GB, RoG Strix B760F Gamng, Asus Tuf Gaming RTX 4070 OC Edition, 1 TB SSD, 6+4+8TB HD
πŸ‘Ώ Mac Mini M2, Sequoia 15.2, 16GB, 500GB SSD
πŸ‘Ώ Nas 10TB
πŸ‘Ώ Poser 13 and soon 14 β€οΈ


Y-Phil posted Fri, 14 May 2021 at 3:51 PM

Cycles is great, while setting the material up if you like to experiment and test, and for the final result. But when it's used while posing a character, or setiing up the lighting is really, it's really not cool, and sometimes difficult...

That's the reason why I keep for each part a PoserSurface node, to which is connected an "ezskinned" version of the current character, while the CycleSurface is connected to its own "world".

And to set the scene up, I check the PoserSurface' "Superfly Root" checkmark for each part. Then, when I want to do a render, I check the corresponding CycleSurface checkmark.

But not manually ?... With this script:

def update_renderer(mat_layer, choice):
    tree = mat_layer.ShaderTree()
    nodes = tree.Nodes()
    
    for node in nodes:
        if not node.IsRoot():
            continue
        if node.Type() == choice:
            tree.SetRendererRootNode(poser.kRenderEngineCodeSUPERFLY, node)
            break

    tree.UpdatePreview()

def switch_renderer(fig):
    if not fig:
        poser.DialogSimple.MessageBox("Please select a figure...")
        return

    list = ['Poser/Physical Surface', 'Cycles']
    choice = poser.DialogSimple.AskMenu("Change Superfly's Surface Node", "Select...", list)
    if not choice:
        return
    choice = 'CyclesSurface' if choice == list[1] else 'poser'

    try:
        for mat in fig.Materials():
            for mat_layer in mat.Layers():
                update_renderer(mat_layer, choice)
            
    except Exception as e:
        poser.DialogSimple.MessageBox(str(e))

scene = poser.Scene()

try:
    figure = scene.CurrentActor()
    if figure.IsBodyPart():
        figure = figure.ItsFigure()
    elif not figure.IsProp() and not figure.IsHairProp():
        figure = scene.CurrentFigure()
except:
    figure = None

switch_renderer(figure)

π’«π’½π“Žπ“


(っ◔◑◔)っ

πŸ‘Ώ Win11 on i9-13900K@5GHz, 64GB, RoG Strix B760F Gamng, Asus Tuf Gaming RTX 4070 OC Edition, 1 TB SSD, 6+4+8TB HD
πŸ‘Ώ Mac Mini M2, Sequoia 15.2, 16GB, 500GB SSD
πŸ‘Ώ Nas 10TB
πŸ‘Ώ Poser 13 and soon 14 β€οΈ