Thu, Nov 14, 3:40 PM CST

Renderosity Forums / Poser - OFFICIAL



Welcome to the Poser - OFFICIAL Forum

Forum Coordinators: RedPhantom

Poser - OFFICIAL F.A.Q (Last Updated: 2024 Nov 14 12:36 pm)



Subject: Creating full body morph that I can distribute? (Poser morph brush)


Xameva ( ) posted Tue, 02 August 2011 at 5:01 AM · edited Fri, 08 November 2024 at 8:54 PM

 Hi!

 I know I ask a lot of questions here, but I promise that I searched for many tutorials, followed them, tried everything I knew how for the past 5 hours, but still no luck. I really need help. :(

 I have a morph in Poser that I am ready to export and create an inject/remove poses out of for distribution. It was created with Zbrush, and then I did some changes with the Poser morph tool. The morph affects the Hip, Lthigh and Rthigh only. 

  I want my inject pose to be like the Victoria full body morphs, where you move the dial on the body, and all three of those parts I listed above change.

 Another problem I'm having is when I import the .objs as morph targets and dial them to 1, there is a seam where the hip connects to the abdomen. This seam wasn't there when I exported the objs.

 If anyone can help I'd really appreciate it. :)


Xameva ( ) posted Tue, 02 August 2011 at 5:24 AM · edited Tue, 02 August 2011 at 5:25 AM

 Ok I figured out the abdomen seam, the hip had 0.004 on the XTranslate value when I was exporting the .OBJs. DOH!

 I still cannot figure out how to make a FBM injection pose however!


Xameva ( ) posted Tue, 02 August 2011 at 5:46 AM

 What I have done so far (not sure if it's correct) is I've spawned my .objs as morph targets, dialed them to 1, did "Create Full Body Morph" in Poser, dialed the parts back to 0, then saved the figure to the library.

 I don't know what to copy out of the .cr2 in the text editor though. I'm stuck at this point.


Xameva ( ) posted Tue, 02 August 2011 at 7:32 AM

 Two hours later and I finally figured it out, lol. Came across this tutorial: http://www.rbtwhiz.com/rbtwhiz_deltaInjection.html

 What I was missing was:

  valueOpDeltaAdd
                               // The controlling figure
                              Figure 1
                               // The controlling group
                              head:1
                               // The controlling channel
                              PBMCC_01
               // The control multiplier
               deltaAddDelta 1.000000

 

All is well now. :D 3 replies to my own topic? LOSER!


LaurieA ( ) posted Tue, 02 August 2011 at 8:05 AM

Quote - All is well now. :D 3 replies to my own topic? LOSER!

Awwww....lol

Well, glad ya got it sorted ;).

Laurie



RobynsVeil ( ) posted Tue, 02 August 2011 at 3:11 PM

Actually, your ramblings will have helped someone in the same predicament - I actually was contemplating doing this but yeah, same issues. So, thanks for posting the link, Xameva, and your explorations... actually makes this thread very useful! 😄

Monterey/Mint21.x/Win10 - Blender3.x - PP11.3(cm) - Musescore3.6.2

Wir sind gewohnt, daß die Menschen verhöhnen was sie nicht verstehen
[it is clear that humans have contempt for that which they do not understand] 

Metaphor of Chooks


lesbentley ( ) posted Wed, 03 August 2011 at 11:39 AM · edited Wed, 03 August 2011 at 11:47 AM

file_471423.png

(click image for larger view)

Xameva,

Glad to see that you figured it out by yourself. As this is a common question, for the benefit of others who may read this thread, I have collected some info from my previous posts that may be helpful. This post relates to delta injection of custom morphs, morphs that you made entirely yourself, and that are not derivative of copyrighted morphs. If you used any copyrighted morphs at any stage in the production of your morphs, then it is probably a breach of copyright if you distribute them as deltas. As a way to load third party morphs, and apply dial spins to them, you may want to investigate "Injection Pose Builder", I have never used it myself.

There are some utilities that can help you make INJ and REM files.

To make INJ-REM files when the morphs already exist in the figure I usually use svdl's free "SpawnCharacterP6 update" py script. It's very simple to use. In Poiser, dial  the morph that you want to make the INJ for into your figure, then run the script, there are a few options that you need to fill in, they are all fairly self evident. After filling in all the options hit the 'Generate' button (NOT the 'OK' button). One limitation of this script is that it only works for figures that have PBMCC channels.

To make INJ-REM files directly from a morphed obj file (either a full body obj, or a partial obj), I use the free "Pozers Little Helper". Needs a bit of initial set up the first time you use it. Has a bit of a learning curve, but quick and easy enough once you get the hang of it.

If you are using a morphed full body obj, it needs to contain the original grouping, some modelling apps may remove the grouping data. Below is a partial quote from richardson, explaining how to save and restore the grouping using "UV Mapper":


Open UVmapper/ file/load model/ double click on your OBJ/ click OK.
file/ click export uvs
check/ export group names, check/ export material names
Name uvs (mymorph.uvs) /click save. it saves to your objects file. Close UVmapper.

Open Zbrush [your modelling app]... you can subdivide and smooth. just return to sub1 before export.

Open UVmapper/ file/load model/ double click on your OBJ/ click OK.
file/ click import uvs/ doubleclick your uvs
..and File/ Save Model
Obj Export Options
check; export normals, check export UV coordinates, check export materials, check export UVmapper regions and click OK
Double click your object again and Click SAVE Then YES to overwrite. Close UVmapper


If you already have the morphs in a cr2, you can also do the whole job of creating the INJ files in a cr2 editor (eg "CR2Builder" or "Cr2Editor"). First you need to to make a template pz2 file that contains the actors that you want to inject into, each actor should contain a channels section. Say for example the morphs need to be injected into the chest and collars of the Antonia Polygon, V4, M4, or similar figures. You could use this template.

{

version
    {
    number 4.01
    }

actor BODY
    {
    channels
        {

valueParm channels get pasted under this line.

        }
    }
actor chest
    {
    channels
        {

targetGeom channels get pasted under this line.

        }
    }
actor lCollar
    {
    channels
        {

targetGeom channels get pasted under this line.

        }
    }
actor rCollar
    {
    channels
        {

targetGeom channels get pasted under this line.

        }
    }
figure
    {

    }
}

After making the template, you would load the cr2 with the morphs into the left window of your editor, and load the template into the right window. You would then Drag & Drop the targetGeom channels from the cr2 into the pz2 (see attached image). If the morphs are FBMs, you would also Drag & Drop the relevant valueParm channels from the BODY actor of the cr2 into the BODY of the pz2. Note that traditional Delta Injection can only inject a morph into a channel that already exists in the figure, this is why many DAZ (and some other) figures contain blank PBMCC channels, so you can inject custom morphs into them. If the internal names of the channel are not already PBMCC_## names, you can edit the internal names after the Drag & Drop operation. If you want, you can include material settings and map references in the 'figure' section of the pz2.

For figures that do not have blank channels for morph injection, you can use 'PMD Injection' (only works for P5 or above).

A utility that can help with making FBMs is D3D's "Spawn FBM.py". Commercial cr2 editors such as D3D's "Poser File Editor", and PhilC's "PZ3editor", have more features that the free ones listed above.


lesbentley ( ) posted Wed, 03 August 2011 at 12:36 PM · edited Wed, 03 August 2011 at 12:39 PM

Poser Full Body Morphs (FBM) make use of ERC to express multiple morphs in various actors via the action of one dial in the BODY actor. With respect to delta injection, if you use "SpawnCharacterP6 update" or "Pozers Little Helper", the FBM will be taken care of automatically, so you don't really need to know how ERC works to make an INJ pose. However ERC has other uses, and it is good to know how it works. If you do want to know how to use ERC, here are the bare bones of it.

The output value of one channel can be used as input to influence the value of a some other channel. One way to do this is called 'ERC'.

With ERC, the channel that is being influenced is called the 'slave' channel, and the channel that is doing the influencing is called the 'master' channel.

To slave one channel to another, you put slaving code in the slave channel. The slaving code tells the slave channel where to find its master. Look at this block of slaving code:

            valueOpDeltaAdd
                Figure 1
                BODY:1
                PBMCC_07
            deltaAddDelta 1.000000

What does it all mean? First look at the three indented lines (in green). The first indented line says "Look for your master in 'Figure 1'". The second indented line says "Look for it in the BODY actor". The third line says "get your input from channel named 'PBMCC_07' in the actor you now looking in".

Let's take another example:

            valueOpDeltaAdd
                Figure 1
                lCollar:1
                xrot
            deltaAddDelta 0.010000

The above says "Look in 'Figure 1' in the 'lCollar' actor, and get your input from the 'xrot' channel in that actor".

We have not looked at the very bottom line of the slaving code yet. The very bottom line is a control ratio, it says "Multiply the value you get from the master channel by the number in this line". So if the number is "1" as in the first example, an increment of 1 on the dial of the master channel would result in an increment of 1 in the slave channel. In the second example an increment of 1 on the dial of the master channel would result in an increment of 0.01 in the slave channel.

In the second example the master channel is a rotation channel. If we put the slaving code in another rotation channel, every degree of rotation in the master channel would result in 0.01 degrees of rotation in the slave channel. If we put the slaving code on a targetGeom (morph) channel, 100 degrees of rotation in the master channel would result in the morph being fully expressed at a value of 1.0 (0.01x100=1). If we used a value of 0.011111 in the deltaAddDelta, the morph would be fully expressed when the rotation reached 90 degrees. If we used a value of 0.022222, it would only take 45 degrees of rotation to fully express the morph.

So where abouts in a channel do we put the slaving code? We put it under the line that reads "interpStyleLocked 0", which in turn is under the 'keys' section of the channel. Below is an example of slaving code in a morph channel:

        targetGeom Morph-01
            {
            name Morph-01
            initValue 0
            hidden 0
            forceLimits 1
            min -100000
            max 100000
            trackingScale 0.02
            keys
                {
                static  0
                k  0  0
                }
            interpStyleLocked 0
            valueOpDeltaAdd
                Figure 1
                Cube-A:1
                yrot
            deltaAddDelta 0.022222
            indexes 4
            numbDeltas 8
            deltas
                {
                d 2 0 0.09999999 0
                d 3 0 0.09999999 0
                d 6 0 0.09999999 0
                d 7 0 0.09999999 0
                }
            blendType 0
            }

One thing I have not mentioned yet is the very top line of the slaving code. This is the type of slaving, 98% of the time the only type you will come across, or need to use, is 'valueOpDeltaAdd', so I won't complicate things by describing the other types.

In the above example the code uses 'Figure 1' and 'Cube-A:1'. If there is already a 'Figure 1' in the scene, when you load your second figure Poser will automatically update the numbers in the slaving code so that they become 'Figure 2' and 'Cube-A:2'.

There is a lot more that could be said about ERC slaving, but that's the bare bones of it. It's not that difficult, just five lines of code telling the channel where to look for its input. There are some special circumstances to be considered when using ERC slaving in a conformer, or injecting it from a pose file, but I will leave that for another post.

or can get some more information at these links:

ERC (Enhanced Remote Control)

Extended Motion Control

How to Write ERC Code
Tutorial Download Page


Xameva ( ) posted Wed, 03 August 2011 at 1:00 PM

 Thanks a ton Les. Where were you before I spent 8 hours figuring it out! Haha. Although I learnt something new from you, adjusting the deltaAddDelta value. Very informative post!


Xameva ( ) posted Thu, 04 August 2011 at 11:50 PM

 I didn't want to make a separate thread for this question, so:

 If I was creating a custom face/body morph for distribution, with for example a mix of this: http://www.renderosity.com/mod/bcs/index.php?ViewProduct=78791

 and V4's morphs++, I could not export the .obj with the morphs++ dialed up, correct? So when I have the face I want, I would save the pose with the morphs++ values, then zero those and export the .obj with just the above product's morphs. Then I'd make an injection pose combing the .obj deltas and the dial values of the morphs++.

 Does that sound about right?

 Thanks. :)


millighost ( ) posted Sat, 06 August 2011 at 9:08 AM

Quote -

I didn't want to make a separate thread for this question, so:

If I was creating a custom face/body morph for distribution, with for example a mix of this: http://www.renderosity.com/mod/bcs/index.php?ViewProduct=78791

and V4's morphs++, I could not export the .obj with the morphs++ dialed up, correct?

Technically you could export the obj with all the required morphs dialed in, and then create a morph from it, that way you will get a single morph that combines the V++ morphs with the other morphs.

Quote -
So when I have the face I want, I would save the pose with the morphs++ values, then zero those and export the .obj with just the above product's morphs. Then I'd make an injection pose combing the .obj deltas and the dial values of the morphs++.

Does that sound about right?

Thanks. :)

This is possible, too. It is quite common to use the V++ morphs for the body of the figure, while using some other (custom-) morphs for the head of the figure. Personally i think that a combination of both for a single body part (i.e. head) gives you the disadvantages of both methods combined and therefore creates a lot of work to make the two morphs work together. Apart from that, the performance of poser seems to mainly depend on the number of morphs in the scene, so you should try to keep the number down. But i guess that incorporating V++ morphs into custom morphs in some way might create some legal issues, i.e.: how much V++ might your custom morph contain, without counting as a redistribution of the V++ morphs? (this could be the main intention of your question). Probably you have to decide for yourself, how much of the resulting is V++ and how much is redistributable.


Privacy Notice

This site uses cookies to deliver the best experience. Our own cookies make user accounts and other features possible. Third-party cookies are used to display relevant ads and to analyze how Renderosity is used. By using our site, you acknowledge that you have read and understood our Terms of Service, including our Cookie Policy and our Privacy Policy.