Forum: Poser - OFFICIAL


Subject: A suggestion for Poser 5 or 6: make CR2 files shorter?

Anthony Appleyard opened this issue on Sep 30, 1999 ยท 7 posts


Anthony Appleyard posted Thu, 30 September 1999 at 6:13 AM

Much of the bulk of a Poser model seems to consist of redundant or duplicated matter in his CR2 file. Can the need for this be removed in any future version? and thus CR2 files be made much shorter:- - (1) Remove the need for the very frequent 5-line feature "keys { static 0 k 0 0 }", which seems to serve only to repeat a value which is also specified in the initValue line. - (2) Remove the need for all lines which explicitly set quantities to values which are their defaults anyway, e.g. "min -10000" and "max 10000". - (3) If part X articulates on part Y, why do we need to duplicate so many joint parameters between both actors? E.g. in the Nude Man "actor Hip" has a 30-line channel section "twistY genital_twisty" whose parameter info is duplicated exactly in "actor genital"'s channel section "twistY twisty", and likewise for just about every rotation and translation in the figure, adding massively to cr2 file bulk. - (4) Do we need such lines as "name GetStringRes(1028,1)"? Why not put the part's name directly literally in these "name" lines? All the above complications serve to get me deeper into "a maze of twistY little passages, all alike", when I must text-edit a cr2 file to put a new feature in!


wiz posted Thu, 30 September 1999 at 7:42 AM

Here's two things to keep in mind. First, .cr2, .pz3, .hr2, etc. are just subsets of ONE common format. Which sometimes means that they contain a little redundant information, but also means that Poser only needs to have one set of robust routines to handle everything, instead of a set of .r2 routines, .pz3 routines, etc. through lighting, hair, pose, etc. Second, hard drives are growing, and growing fast. My current machine has 70 gigs of storage. What will be common when Poser 6 comes out? (1) this enables you to store animated figures, or lets a third party program add animation to a figure. (2) better to properly set ranges, than eliminate them. (3) because every goint really does articulate on the LAST joint in the hierarchy. You're just misinterpreting the relationships. (4) GetStrinRes() exists so that each part can have a different name in each country. Not everyone speaks American English. A much better solution might be to give Poser robust file compression (such as gzip), so it could compress and decompress files as needed.


Anthony Appleyard posted Thu, 30 September 1999 at 8:03 AM

But floppy disks still are handy and useful, and it is still useful if a figure's information etc can be kept short enough for it to zip short enough to fit onto a floppy. My laptop is modern, but its hard disk is only 4 Gbytes. (I remember when 128 Mbytes was a big hard disk!), and I know all too well that if I waste a megabyte here and half a megabyte there, a gigabyte is used up amazingly quickly. Also, big files take a long time (and cost on the telephone bill) to download at dialup phone line speed when the user has other uses for his time and someone else in the house wants to use the phone line for telephoning. Which file contains the strings that the arguments of GetStringRes(x,y) point to? How could I make up alternate language sets of names for a figure's parts? How do I tell Poser to display e.g. the French or Latin names instead of English, once I have made those foreign language name lists?


Anthony Appleyard posted Thu, 30 September 1999 at 8:08 AM

P>S. Also, my total allowed WWW space is only 20 MBytes, and that much is soon gone, even if to save space in each model I e.g. omit the file qwertyuiop.rsr if its geometry file is qwertyuiop.obj .


Kevin posted Thu, 30 September 1999 at 11:04 PM

The GetStringRes tag referes to entries in the the resource fork of the file (the RSR on a PC.) The RSR is created by some internal black magic involving the figure obj and poser when you open a CR2 that doesn't have an existing RSR or import the PHI for a new figure. Meta does the editing using CodeWarrior to look at the resource fork.


Anthony Appleyard posted Fri, 01 October 1999 at 2:32 AM

I wrote and Wiz replied, about removing need for particular types of line:- > > (1) ... keys { static 0 k 0 0 } > ... store animated figures ... add animation ... - When it is needed to describe animation, put it in. When it does nothing except repeat the InitValue value, leave it out? > > (2) ... lines which explicitly set quantities to values which are their defaults anyway, e.g. "min -10000" and "max 10000". > better to properly set ranges, than eliminate them. - I was not talking specifically about limits. CR2 files contain hundreds of lines that serve only to set many parameters to values which are their defaults anyway, e.g. "hidden 0" and very many others. All that adds to file bulk, multiplied across all the actors in a figure, multiplied by all the Poser figures in the computer, becomes a LOT of space used. >> [actor Hip's "twistY genital_twisty" info repeats actor genital's "twistY twisty", and likewise with several twists and translates etc at each of over 50 joints in the body] > because every joint really does articulate on the LAST joint in the hierarchy. You're just misinterpreting the relationships. - Erh? I still see no need for all that repeating of twist and translate etc info in both of a pair of parts that articulate with each other. And, (c. 30 lines per repetition) * (6 or more) (for twistX/Y/Z translateX/Y/Z and perhaps others) * c.50 (articulations), = up to c.10000 extra lines of CR2 language text that could be removed per Cr2 file!


Anthony Appleyard posted Fri, 01 October 1999 at 2:54 AM

Do we need such lines as "name GetStringRes(1028,1)"? ... > [Kevin replied to this, above] - Uhh, resource forks, those Mac arcana. Most people use PC's, not Macs. Sounds fiddly, poking about in a binary file with a special editor. And, if I edit the .CR2 file to change something, I must delete the .RSR file and let Poser recreate it, and all the carefully REPLACEed foreign language info in it goes down the /dev/null and must be reREPLACEed by hand. Surely something like this would be easier for humans to understand and edit? languages French Latin Spanish .... actor head:2 { langname French "tete" Latin "caput" Spanish "cabeza" storageOffset 0 0 0 geomHandlerGeom 13 head } .... rotateY yrot { langname French "tourner-en-Y" Latin "rotare-Y" ...