Forum: Poser 13


Subject: Poser 14

Backfire2024 opened this issue on May 15, 2024 ยท 44 posts


primorge posted Mon, 30 September 2024 at 3:38 PM

DeeceyArt posted at 6:58 AM Sun, 29 September 2024 - #4489852

>>> This functionality should just be built into Poser's obj exporter. I don't know the reason why it isn't, why it's tied to Zbrush alone, or why it's the sole realm of 3rd party scripts/plug ins. If one python coder can figure out how to do this, and it's a vital part of a figure development workflow, why isn't this just included with Poser content creation functionality?

It has to do with Poser's breaking apart of groups at the boundaries. GoZ disregards the duplicate vertices at the boundary edges.and returns the mesh "as-is" to Poser. If you GoZ the mesh to ZBrush and then exported that OBJ from ZBrush to your desktop, you'll see that each body part is a separate OBJ instead of being welded.  As soon as you start trying to weld the duplicate vertices, it changes the vertex order.

Adding true "unimesh" support in Poser, and NOT breaking the object part into groups, would fix that.

I already know all that.

PMLs solution is to use an exporter that saves basically a reference map object to a location of your choice, you import the map obj (which is a contiguous mesh/unimesh, welded as it were) into your software of choice, morph, and export out a result. Back in Poser you start up the importer script, select the reference map object and select the object you exported out of your morphing software. The script compares the 2, returns a difference result as a FBM, and also disregards miniscule changes below a certain value as determined by your settings.

So for example I have a posed figure with a JCM active, I use the exporter, morph over the object with the JCM/Rotation deformations present, export the result, use the loader script to import the difference obj, and it returns a morph that is a result of sculpting over the active JCM and joint rotations but with none of those initial states baked into the difference result. The morph is strictly the new changes but relates to those initial states as it was created. So you have, for instance, a JCM that operates as it should over top a pre-existing active JCM.

So, to illustrate I'll use my BJW figure, which is comprised entirely of manifold parts but is unimesh skinned and weight mapped, the torso (abdomen/waist) and neck/head ( neck1/neck2/head) are multi actor welded groups typical of most human Poser figures. Yes it's possible to unimesh skin, weightmap, and apply smooth scale/translation maps to non contiguous parts. The outline "hands" and doodads are ghost bone controllers for the eyes, breasts, and buttocks actors which control rotations and translations.

So in the preview example here we have the figure with many morphs applied, the head scaled up, and basically all actors of the figure posed...

I invoke the exporter script and export the entire figure (you can also export any parented props, control handles for instance, or just export the various actors separately)... there's a warning about classic skinning but the exporter will still export a unimesh skinned figure, though the loading is much faster on set to classic. I've never encountered a bug or figure corruption once in thousands of uses.

Here's the reference object that the exporter produces... it's welded at points where the welding exists. So here you'll notice that the waist and abdomen actors, and the neck/head actors, are contiguous...

I bring this reference export in a sculpting app, Mudbox. I do some quick example morphs. A grab of the head polys and a squeeze of the abdomen, narrowing it. Naturally, being that this is an asymmetrically posed figure, the results will be asymmetrical. It's just an example, if one were to create JCMs (or any left/right morphs for that matter) of course you would want symmetrical posing and split and bake out to l/r, reverse deform any rotations, for the final dependencies.

I export out the morphed figure from mudbox as obj, in Poser I invoke the importer script, load the original reference obj, then load the newly morphed obj out of mudbox. The script runs through the actors and calculates the new morph. The result, a FBM dial that is just that newly created head and abdomen morph as created over top the pre-existing morphs and rotations...

I zero out the figure, leaving it in it's 0 state, no morphs, no rotations but for the newly created morph. No fuss with welding or manually subtracting morphs or rotations baked into the result ( you can manually subtract such deformations or morphs but it is an excruciating and time consuming PITA to do)...

So I guess the question remains why isn't this just built into Poser in some fashion? It handles the welding and allows you to create unimesh FBMs easily, it does reverse deformation type operations. From any modeler, not JUST Zbrush. Any.

This script is from 2012.

And yet still Poser is "moving toward" full unimesh...