Forum: Poser - OFFICIAL


Subject: A Compendium of PZ2 Techniques.

lesbentley opened this issue on Mar 31, 2008 ยท 137 posts


lesbentley posted Fri, 11 April 2008 at 10:30 PM

**Delta Injection (Part 4).****Delta Injection in conjunction with FBMs.**

First a short disclaimer. I have never distributed delta injection poses commercially. What follows is to the best of my knowledge and understanding, correct, but there may be errors, and there probably are better ways of doing things. I include the following because I have not seen much information out there on delta injection, and I hope this may be useful, but I am only a hobbyist, I am no authority on this stuff.

A Poser Full Body Morph (FBM for short) is just one or more targetGeom (morph) channels slaved to a valueParm channel (usually) in the BODY actor.

If you have a figure that uses the DAZ "PBMCC_##" channels, then svdl has a Python script "SpawnCharacterP6.py" that makes much of what is described below redundant for these figures. I will try to say more about this script later, or perhaps svdl will drop by and explain it himself. Never the less, I urge you to investigate these hand editing methods as you will gain a better understanding. Also because these methods can be used on figures that the py script may not work on.

We have seen how to package a morph target in order to inject it into a figure from a pose file. And in a previous section we saw how to slave one channel to another. We already know what must be done. Now we will look as some of the many ways of doing it.


**Method A.**The first scenario. You have a number of custom made morph targets in obj format, one for each of several actors. Or you are making morphs in Poser with magnets. You want to inject these as an FBM into one of the DAZ figures that use the PBMCC_## channels.

Many of the DAZ Figures come with a "BLANK" version that has been stripped of all targetGeom channels, or all targetGeom channels EXCEPT the JCM (joint controlled morph) channels. These figures are good to use when making a DIP for custom morphs that you have made yourself, and that you want to distribute, as they reduce the risk of including any data that may be subject to copyright such as DAZ morph deltas. You don't have to use a BLANK figure this method will work on the normal figure as well.

As you import a morph from an obj file, or spawn it from a magnet, or what ever method you use to get the morph into the figure, give it a descriptive name. In this example we'll use "MyMorph" as an example. As you are only putting one morph into each actor you should use the same name throughout for all the morphs. As you load each morph, set its dial value to "1.000".

Once you have all your morphs in the figure and the dials set to one, from the Figure menu, select "Create Full Body Morph", give it the same name as you did for the individual morphs (MyMorph). Creating the FBM puts the slaving code into the targetGeom channels, as well as creating a valueParm channel in the BODY.

Save the figure back to a Figures pallet as "Z" (for example).

The next step is to create a template pz2 containing each actor that you need to inject into. You have already seen an example for one actor in a previous post. Here is a template for the BODY, collars, chest, abdomen and hip. The order that the actors come in, is not really important, but it will be easier if you keep them in the same order as in the cr2. Remember each actor should contain a 'channels' section. Because this is for an FBM you need to include the BODY actor.

{

version
    {
    number 4.01
    }

actor BODY
    {
    channels
        {

        }
    }
actor hip
    {
    channels
        {

        }
    }
actor abdomen
    {
    channels
        {

        }
    }
actor chest
    {
    channels
        {

        }
    }
actor rCollar
    {
    channels
        {

        }
    }
actor lCollar
    {
    channels
        {

        }
    }

figure
    {

    }
}

The next step is to copy the valueParm channel, and the targetGeom channels, out of the "Z.cr2" into the template. It is possible to do this in a text editor, but that can involve a lot of scrolling, I don't recommend it. There are a couple of free utilities that can be used. Either of these can do the job. CR2Builder
http://www.geocities.co.jp/Bookend-Ohgai/9483/tool/CR2Builder/index.html
Morph Manager 4
http://www.morphography.uk.vu/dlutility.html

I'm going to use CR2Builder in this example.

Open CR2Builder. Load the cr2 in the Left TV (window). Scroll down past the first set of actors (the "definition" blocks), these are single spaced, until you get to the second set, which should be double spaced.

Load the template pz2 in the Right TV. In the Right TV expand the BODY actor (click the "+"), expand the 'channels' block. Go to the Left TV and expand the BODY actor and channels block. Drag the "valueParm MyMorph" channel and drop it on the "stump" in the 'channels' block.

In the Right TV expand the next actor and channels block. Go to the Left TV and expand the corresponding actor and channels block. Drag your "targetGeom MyMorph" channel and drop it on the "stump" in the 'channels' block (see graphic above). Keep repeating this process until you have copied all the "targetGeom MyMorph" channels over to the template.

If you included any material settings in the "Z.cr2" you may want to copy these over to 'figure' section of the pz2 file, so that it loads the materials as well as the morphs. If this pz2 is for distribution, you will need to include any maps (eg texture maps) referred to in the materials, or warn the end user that certain maps are required. I do not have time to go into the full implications of including materials at this moment, if in doubt, don't.

Save the template with the final name that you desire, make it something descriptive, eg "V3_OldCrone.pz2", or "V3_Fat.pz2", or "V3_K Z Jones.pz2".

Next you need to open the pz2 you just produced in a text editor.

There will be colons and numbers ":#" in the slaving code, you need to remove these, otherwise the channels may get slaved to the wrong figure (as sometimes happens with DAZ injections). Use your editors Search & replace function to replace all instances of ":1" (or whatever number was used) with nothing, that is to say leave the Replace string blank. Now Search & Replace "Figure 1" with "Figure".

Go to the "valueParm MyMorph" channel in the BODY and change its first line to one of the DAZ PBMCC_## names, eg "valueParm PBMCC_01". Now use your editors Search & Replace function to replace all instances of "targetGeom MyMorph" with the same PBMCC_## you used in the valueParm, eg replace "targetGeom MyMorph" with "targetGeom PBMCC_01".

To make the FBM you needed to set all the morph channels to a value of one, now you need to set them back to zero. Search & Replace "k 0 1" with "k 0 0".

At the moment the valueParm channel is set to zero, so the morphs will load but not be expressed, if you want them to be expressed when you apply the pz2, go to the BODY and set the channel to "k 0 1". You may or may not want to set the 'initValue' of this channel to "1". The 'initValue' is the value that will be used when one of the Poser 'Restore' commands is used on the figure.

Save the file back to disk and test it in Poser. Once you have verified that the DIP is working properly, you can delete the "Z.cr2".

To be continued...