3Dpixi opened this issue on Jun 18, 2010 · 9 posts
3Dpixi posted Fri, 18 June 2010 at 5:54 PM
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
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
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
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]