Forum: Poser Technical


Subject: Mat Pose Files and Props

Khai opened this issue on Dec 22, 2004 ยท 8 posts


Khai posted Wed, 22 December 2004 at 4:19 PM

hiya all I (dimly) remember something about multi loading props with a matpose file.. I've got about 50 small props to load in on a figure, (2 groups of 25 for example).. I want to be able to load them in as the 2 groups. how would one do this? (I want to avoid loading them 1 by 1 you see on the finished figure - they have to be props, there's no other way to get the effect I'm working towards) thanks!


jupiterkris posted Thu, 23 December 2004 at 4:52 AM

Save a prop to library .
Use select subset option, select the props .
Save as smart prop .


Khai posted Thu, 23 December 2004 at 6:28 AM

that'll work for 160 props? (I did the math)


Khai posted Thu, 23 December 2004 at 6:44 AM

oops sorry should have said. they are 160 seperate props, parented to various locations all linked in certain important ways... I'll try that, but I thought they had to be linked to each other to make the subset?


jupiterkris posted Thu, 23 December 2004 at 7:31 AM

If you do run out of RAM ...
Alternatively, first save out your props in smaller groups as smart props and
Use readscript directives in your base figure's cr2 to read in the pp2s during loading ...

*{
version
{
number 5.01
}
// ... insert readscript directives after version segment
readScript ":Runtime:libraries:props:myprop:propgrp_1.pp2"
readScript ":Runtime:libraries:props:myprop:propgrp_2.pp2"
readScript ":Runtime:libraries:props:myprop:propgrp_3.pp2"
// ... and so on

}*

Message edited on: 12/23/2004 07:36


jupiterkris posted Thu, 23 December 2004 at 11:44 AM

Or else a simple PP loader script ...

import poser
scene = poser.Scene()
scene.LoadLibraryFigure(":Runtime:libraries:character:myfigure:figure_1.cr2")
scene.LoadLibraryProp(":Runtime:libraries:props:myprop:propgrp_1.pp2")

change path delimiters from ':' to '' for Windows(PC)

scene.DrawAll()


a loader module for a list of figures and props ...

-- modify basepath and filelist here

basepath = ":Runtime:libraries:"
filelist = ["character:myfigure:figure_1.cr2",
"character:myfigure:figure_2.cr2",
"props:myprop:prop_1.pp2",
"props:myprop:prop_2.pp2",
]

import poser, string, sys
ptf=sys.platform
fCh = ':'
if (string.find(ptf, 'win') != -1) :
fCh = 'r'
rCh = ':'
if (string.find(ptf, 'win') != -1) :
rCh = 'r'
scene = poser.Scene()
for i in range(filelist) :
subpath = filelist [i]
iteraddress = basepath + subpath
ext = iteraddress [len(iteraddress)-4:len(iteraddress)-1]
iteraddress = string.replace(iteraddress, fCh, rCh)
if (string.lower(ext) == 'cr2') :
scene.LoadLibraryFigure(iteraddress)
if (string.lower(ext) == 'pp2') :
scene.LoadLibraryProp(iteraddress)
scene.DrawAll()


a loader module for serialised figures or props ...

-- modify baseaddress and iterations here

baseaddress = ":Runtime:libraries:props:myprop:prop_1.pp2"
iterations = 160

import poser, string, os, sys
scene = poser.Scene()
ptf=sys.platform
fCh = ':'
if (string.find(ptf, 'win') != -1) :
fCh = 'r'
rCh = ':'
if (string.find(ptf, 'win') != -1) :
rCh = 'r'
baseaddress = string.replace(baseaddress, fCh, rCh)
(figpath, figfile) = os.path.split(baseaddress)
ext = figfile[:len(figfile)-4:len(figfile)-1]
for i in range(iterations):
iteraddress = figpath + figfile[:len(figfile)-2] + str(i+1) + figfile[len(figfile)-5:len(figfile)-1]
if (string.lower(ext) == 'cr2') :
scene.LoadLibraryFigure(iteraddress)
if (string.lower(ext) == 'pp2') :
scene.LoadLibraryProp(iteraddress)
scene.DrawAll()

... sorry, scripts are untested


lesbentley posted Thu, 23 December 2004 at 7:04 PM

Perhaps you are using P4, or for some reason the Python scripts don't work. I that case, this is how I would do it. Load the target figure into Poser. Zero all translations and rotations of the hip and Body. Zero the figure in the Joint Editor. Position the props in the desired location relitive to the figure. Save the props using Select Subset'. Note that you can't save as a smartprop when using select subset, you will have to add that manually in a text editor. Open the pp2 you created in a text editor. Do a case sensitive 'Search & Replace' of all instances of 'parent' with 'smartparent'. At the moment the smartparent for all props will be 'UNIVERSE', so you will have to do another search for 'smartparent' and type in the names of the actors that the props should be smartparented to.


an0malaus posted Tue, 11 January 2005 at 7:18 AM

[bookmark]



My ShareCG Stuff

Verbosity: Profusely promulgating Graham's number epics of complete and utter verbiage by the metric monkey barrel.