Mon, Dec 23, 9:18 AM CST

Renderosity Forums / Poser Technical



Welcome to the Poser Technical Forum

Forum Moderators: Staff

Poser Technical F.A.Q (Last Updated: 2024 Dec 04 2:47 am)

Welcome to the Poser Technical Forum.

Where computer nerds can Pull out their slide rules and not get laughed at. Pocket protectors are not required. ;-)

This is the place you come to ask questions and share new ideas about using the internal file structure of Poser to push the program past it's normal limits.

New users are encouraged to read the FAQ sections here and on the Poser forum before asking questions.



Checkout the Renderosity MarketPlace - Your source for digital art content!



Subject: Saving Morphs


3Dpixi ( ) posted Fri, 18 June 2010 at 5:54 PM · edited Sat, 14 December 2024 at 4:40 AM

Since Poserbuilder doesn't work on my MAC I would love to know if there is any other option saving and creating character INJ & REM files  for the Pose Librarie??

Greetz,

Peggy
a.k.a. Pearl3D


AndyWelder ( ) posted Sat, 19 June 2010 at 5:52 AM

AndyWelder has moved this thread from the Printing/Publishing forum to the Poser Technical forum as of Saturday, June 19, 2010 12:52 pm.

AndyWelder

Groetjes uit Eindhoven!
Send IM::Send Email


lesbentley ( ) posted Sun, 20 June 2010 at 8:36 AM · edited Sun, 20 June 2010 at 8:50 AM

Basically there are two types of INJ file. One type is just a MOR pose that loads third party delta injections via 'readScript', and sets the dial values for them. The second type is the true delta injection that carries the deltas within the pz2. Conventional wisdom is that this last type can only be distributed if you have copyright on the morphs used to create it. It it this latter type that the rest of my post covers. svdl has a python script "SpawnCharacterP6 update" that can create INJ/Rem files. It is simple to use, and I highly recommend it, though I don't know if it will work on a Mac. Failing that, you can always do it the old fashioned way and roll your own. A delta injection is essentially just a 'targetGeom' (morph) channel(s) packaged as a pz2. So you can construct a template pz2, then just Copy the target geom channel(s) from a cr2 and Paste it into the template. As an example you could use the following template to inject a morph into the head: {

version
        {
        number 4.01
        }

actor BODY
        {
        channels
                {
<span style="color:rgb(0,255,0);"># valueParm (FBM) channels go below this line.</span>
                }
        }
actor head
        {
        channels
                {
<span style="color:rgb(0,255,0);"># targetGeom (morph) channel(s) go below this line.</span>
                }
        }
}  

You would then paste the targetgeom channel in the place indicated, like so: {

version
        {
        number 4.01
        }

actor BODY
        {
        channels
                {
# valueParm (FBM) channels go below this line.
                }
        }
actor head
        {
        channels
                {
# targetGeom (morph) channel(s) go below this line.
<span style="color:rgb(0,255,0);">           targetGeom PBMCC_02<br></br>                       {<br></br>                 name PointNose<br></br>                    initValue 0<br></br>                       hidden 0<br></br>                  forceLimits 1<br></br>                     min -100000<br></br>                       max 100000<br></br>                        trackingScale 0.02<br></br>                        keys<br></br>                              {<br></br>                         static  0<br></br>                         k  0  0<br></br>                           }<br></br>                 interpStyleLocked 0<br></br>                       indexes 1<br></br>                 numbDeltas 15078<br></br>                  deltas <br></br>                           { <br></br>                                d 9541 0 -1.966953e-006 0.01170973 <br></br>                               } <br></br>                        blendType 0<br></br>                       }</span>
                }
        }
}  

Finally if the morph is to be part of an FBM you would add the valueParm data to the BODY actor: {

version
        {
        number 4.01
        }

actor BODY
        {
        channels
                {
# valueParm (FBM) channels go below this line.
<span style="color:rgb(0,255,0);">           valueParm PBMCC_02<br></br>                        {<br></br>                 name PointNose<br></br>                    initValue 1<br></br>                       hidden 0<br></br>                  forceLimits 1<br></br>                     min 0<br></br>                     max 1<br></br>                     trackingScale 0.004<br></br>                       keys<br></br>                              {<br></br>                         static  0<br></br>                         k  0  0<br></br>                           }<br></br>                 interpStyleLocked 0<br></br>                       }</span>
                }
etc...  

An important point to remember is that a delta injection can only inject into a channel that already exists in the figure, so in the above example the target cr2 must contain a channel named "targetGeom PBMCC_02". Whilst it is possible to do the above in a text editor, because of the large amount of scrolling usually necessary, it is easier to do it in a cr2 editor such as the free "CR2Builder".


lesbentley ( ) posted Sun, 20 June 2010 at 8:52 AM · edited Sun, 20 June 2010 at 8:55 AM

A REM file for the above morph would look like this: {

version
    {
    number    4.01
    }

actor BODY
    {
    channels
        {
        valueParm PBMCC_02
            {
            name    -
            initValue 0
            hidden    1
            keys
                {
                k 0 0
                }
            }
        }
    }
actor head
    {
    channels
        {
        targetGeom PBMCC_02
            {
            name    -
            initValue 0
            hidden    1
            indexes    0
            numbDeltas    0
            keys
                {
                k 0 0
                }
            }
        }
    }
}

"indexes 0"  is the crucial line that does the job of actually deleting the deltas.The above REM file mostly generic, and could be used to REM any morph with a couple of slight modifications. For example if the morph channel was named targetGeom PBMCC_07 you would use "valueParm PBMCC_02" and "targetGeom PBMCC_07", and if it was in the chest you would use "actor chest". Whilst the examples I have given are for one morph in one actor, a pz2 can inject multiple morphs into multiple actors, and the same can be done with the REM file.


3Dpixi ( ) posted Sun, 20 June 2010 at 9:37 AM

Quote - AndyWelder has moved this thread from the Printing/Publishing forum to the Poser Technical forum as of Saturday, June 19, 2010 12:52 pm.

I am sorry ... Must have to clicked the wrong by accident ;o]


3Dpixi ( ) posted Sun, 20 June 2010 at 9:44 AM

 Thanx for the reply and explaining Lesbentley ... Appreciated big time!!
But wowww ... Very technical ... So I will have to read several times before I understand ...
But sure worth willing to try!!

Thanx again ... Sorry if my Eng. isn't that great ;o]]


lesbentley ( ) posted Sun, 20 June 2010 at 10:21 AM

In the case of third party morphs, if the file is for distribution, because you don't hold copyright on those morphs you can't distribute a delta injection containing those morph deltas. Where third party morphs are used (eg the DAZ ++pack) and you do not have permission to distribute the deltas, you can use readScript to load the morphs into the figure (providing the end user has the morphs installed), then have a normal MOR pose section in the file to set the dial values. Example:

{
version
    {
        number 4.01
    }

readScript ":Runtime:libraries:!DAZ:Victoria 4:Deltas:Base:InjDeltas.FHMPaul.pz2"

actor head
    {
    channels
        {
        targetGeom FBMMale
            {
            keys
                {
                k 0 0.7
                }
            }
        }
    }
}

In the above file the readScript line loads the delta injection file for the V4 Paul morphs, sets the dial in the head to be visible "hidden 0" (optional), then sets the strength of the Paul morph in the head to 0.7. The readScript line just contains the path to the delta injection file (relative to "Runtime"), enclosed in double quote marks, and with ":" replacing "" as the separator. In the above example only the morph in the head is set to be expressed, if in stead it referred to "valueParm FHMPaul" in the "actor BODY", it would express the morph in all body parts where it exists.


lesbentley ( ) posted Sun, 20 June 2010 at 10:29 AM · edited Sun, 20 June 2010 at 10:32 AM

There may well be some utility that will do the job for you on a Mac, but not being a Mac user I don't know of any. If this is a custom morph that you made entirely yourself, without using any third party morphs, you can try the "SpawnCharacterP6 update" Python script that I mentioned in my first post, it may work on a Mac, I don't know.


3Dpixi ( ) posted Sun, 20 June 2010 at 10:35 AM

 Thanx for thinking with me ... I will read, try and look it all up ;o]


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.