Attached Link: http://www.dodger.org/ttt/poserParser/test6.html
First off, update: it actually parses now. It reads things into a data structure intelligently -- a data structutre that acts like it knows what it's talking about, as opposed to stage 1 which was just reading into a multidimensional set of key/value pairs. See link for example output.
Second, here's an overview of the project's goals, as if I were submitting this for a client, though more sloppy:
Project: Poser Parser Perl Extension
- Intended Goal: Perl Module for Object-Oriented interface to create, read, manipulate, and write arbitrary Poser documents
- Breakdown of goals and statuses: Read and Parse Poser Documents via Perl Read in a Poser Object Definition Document (PZ3, CR2, PP2, HR2) or Poser Object Property Overlay (PZ2, HD2, FC2, MT5) or any existing hybrid file of these two core types (LT2, CM2) plus an additional filetype outside of the specification (P4 Material Definition: MT4) to a Perl data structure built from hashrefs and arrayrefs. Additionally, parse any known Poser Definition/Overlay keywords and store the values of recognised properties in an intelligent manner, storing unrecognised properties as arbitrary (freeform) strings. Status: Private Limited Beta Manipulate Poser Documents in Perl Add object methods to conveniently provide a user the ability to access subparts of a defined Poser document data structure, including but not limited to redirecting files, changing settings, replacing entire block definitions (for instance, changing one material definition for another one stored in an MT4 material deifnition file), rearrange them, and otherwise generally munge the data through an OO interface. Status: Pre-Alpha Create Poser Documents Using an Object-Oriented Perl interface, create Poser document data structures from whole cloth with automated defaulting of values pre-formulated and ready for OO manipulation as above. Status: Pre-Alpha Write Poser Documents via Perl Return syntactically correct and properly formatted Poser documents for output or storage Status: Pre-Alpha (next up)
Uses for this extension are really only limited by the imagination of the Perl user who uses it. Examples include:
- Batched and Automated matching of material settings for a set. For instance, if you are producing a large number of accessories to come in a set, Perl could be used in conjunction with this module to automatically set all 'steel' materials to the same material settings
- Simple Automated P4/P5 Compatibility
- Batched Morph Management
- Web-based interactive Poser Document editing
- Pose/MAT Pose/INJ Pose extraction
- Embedded Geometry Extraction
- Joint Editing
- Scene Mirroring
Other potentials for this module (together with the projected Wavefront OBJ parser) include the ability to create new morphs from morph target geometries outside of Poser, creation of geometry (interacting with a Fractal generator, prefab primitives, etc), and so on. All in all, the end goal is to simplify interacting with Poser documents when using Perl by providing an OO interface to them rather than treating them as arbitrary text documents (as is currently the only way to deal with them in Perl).