MNE opened this issue on Feb 25, 2023 ยท 163 posts
primorge posted Sun, 26 February 2023 at 7:54 PM
On Topic Archaic Non GoZ/Non Python Script Unimesh FBM method Demo.
For this example I'll be using the LF Dev cr2.
Preamble;
Before the advent of the GoZ bridge to Zbrush or Python script translation/figure reference methods there was a way to guarantee the ability to create cross body part full body morphs in external softwares without worrying about the unwelding caused from exporting out of Poser via in scene cr2 figure.
Most contemporary Poser figure cr2s reference a Unimesh obj contained in the Geometries folder of a relevant Runtime. Occasionally you'll come across unwelded models, this usually concerns very old legacy Poser figures or the result of sloppiness on the part of a content creator. By unwelded this means not unimesh; Not a unified mesh. Broken apart at body part groups into separate parts corresponding to the figure's actors, a peculiarity of Poser software figure tech that's deep at the core of Poser code and the crux of the Unimesh dilemma. This has a host of implications but here I'm focusing on the problem it poses to external morph creation.
The major problem with creating Full Body Morphs for Poser in external softwares is twofold.
If you export a figure out of Poser as an OBJ file with the intent of FBM creation it requires the existence of polygonal groups corresponding to each body part of the figure. If the export does not contain said groups Poser cannot translate the morph modifications across body parts into a working full body morph upon re-import. The command to include such body part groups is dictated by the include existing groups in polygon groups checkbox in the OBJ export dialogue.
Exporting in such a manner causes Poser to break apart the mesh into parts corresponding to the existing groups.
Trying to morph across such breaks in the model causes visible seams in the resulting morph.
A solution to this is to create the morph(s) by utilizing the referenced grouped unimesh from the Geometries folder rather than an export from scene. The problem with this is that various softwares interpret poygonal groups in unique ways. Some softwares break apart the OBJ into separate individual parts corresponding to each polygonal group. Wings3D does this.
Some have options for how the groups are handled. Blender for instance has an obj importer that dictates split into parts by group or not, maintain vertex order, establish vertex groups per polygonal group for use as selections, hiding, and the like. Very flexible. FBM creation via Geometries import is perfectly viable in Blender, that's why I'm always mystified by Poser users moaning about a Blender bridge for morphing. JCM creation is of course a very good reason to desire such a bridge, that's a different topic, but most times the complaints are in relation to standard 0 rotations morph/FBM creation.
Zbrush used to break apart the mesh into parts per group, last I recall this was version 2 if I remember correctly, unusable. Now it maintains the integrity of the Unimesh while maintaining the groups. Useful for selective hiding, masking etc. Viable for FBM creation without a translator.
Mudbox operates very similar to Zbrush. Maintains Unimesh, Polygonal groups viable, maintains vertex order all default.
Things are much better now than they used to be in relation to options for handling groups in OBJ, at least from my observations.
The old method to guarantee a viable model for use across softwares without worrying about how the groups are handled or the unwelding that a "live" export causes used to go something like this, and is still a viable method if maybe a bit clunky to instant gratification types. These days I use PML and GoZ, which have the added benefit of flexibility in JCM and difference morph stuff, but this old method might also be useful to someone who finds themselves spending a bunch of time creating a FBM but forgot to include the grouping information on the trip back to Poser; on that front it's a working method for recovery. The demo also might help clarify stuff about the whole topic of Unimesh in Poser.
I start by loading the figure I want to morph externally from the relevant character library folder, LF Dev here...
I then go to File: Import: Wavefront OBJ and navigate to the relevant Geometries folder for LF and import the LaLFemme1 obj (or the compressed obz file, it will import as well), leave all options unchecked/default in the dialogue.
I hide the dev figure. I have the LF figure and the referenced obj file (which is Unimesh and grouped) as a static prop in the scene...
I then return to file menu and export the reference prop I just imported as OBJ but this time I dump all the group information by not checking include existing groups in polygon groups in the dialogue, just leave everything unchecked.
A little clarification here. An export of a cr2 from scene as grouped OBJ will split apart the mesh at actor/groups. Conversely if you export a prop with existing groups no such splitting will occur.
In this instance I dump the groups from the prop to circumvent how other softwares would interpret these polygonal groups. No groups, only one way to interpret... as a single object. Save the OBJ with a name that you can identify as your ungrouped morphing reference object.
I'm using Mudbox here to do the FBM creation. Just a fast and dirty stereotypical Alien Head type morph that involves the head and neck...
With the demo morph done I export as a Wavefront OBJ and save it as AlienHeadLF.
Returning to Poser I select the grouped static prop LF in scene and load the created morph to the prop via load morph target in the props properties tab. I dial the resulting morph to 1. I now have a morph applied to a grouped unimesh prop obj via an ungrouped export mesh.
I go to File: Export: Wavefront OBJ, single frame, clear the Hierarchy of selections by clicking the Universe check box or Select None button.
Check only the include existing groups in polygon groups checkbox.
I'm exporting the grouped prop obj file that has the morph applied. Give it a unique name that is identifiable or overwrite your external software morph file (not recommended unless your absolutely sure).
Apply this file via the Figure Menu: Load Full Body Morph option to the in scene cr2 figure.
Dial the morph to 1 via the Body actor parm that's been generated...
There used to be a step requiring spawning of props from relevant groups. Its been a long time but this was before the handy option of Load full body morph. My memory is a bit fuzzy on the particulars.
As an aside there's also an old workaround for the creation of subtractive difference morphs; that is, morphs that can be layered and are treated as being generated at a default state even if they are created over top a dialed in morph baked into the state of the export obj. Only those vertices moved during the latest iteration are calculated as a difference; no morph telescoping from a baked in state. It's possible to do this manually through a few steps but such things are typically handled via GoZ or a Python reference obj translator now, which also handles the welding, post transform, and vertex order stuff. A different topic, but would be nice if such a thing were just built into the Figure Menu or Export options somehow.
End of diversion.