I was hoping to cut corners by focusing directly on stages, but it looks like pso version 2 stages use nested nj objects and not just listed ones like in PSOBB, which means I need to go back and finish exporting nj before I can get back into stages.
This is mostly to help me write out information, but if anyone else is interested, the NJCM structure used in PSO version 2 is as depicted:
As a reference, the file structure will start with the interchange file format header of "NJCM" followed by the length as a dword. The evalflags for the first NJS_OBJECT will follow immediately after that.
Basically a NJCM model is made up of "nodes". Each node has eval flags, rotation, translation and scale, and a model. The model describes the center pointer and radius of the node (for bones). It has a vertex list describing a list of xyz coordinates the model uses, and an indices list which describes the material, texture and triangle strip describing the faces of model.
Each "node" has a child and a sibling pointer which describes how the model should be written out. Rotation, translation and scale attribute pass down from parent to child, but not sibling to sibling.
※1. The eval flags is a 32 bit unsigned integer which contains bit wise flags for how the Rotation, translation and scale attributes are to be evaluated when writing the model to create the shape of the overall object.
※2. The structure of the NJS_VERTEX depends on the vertex_type declared in the header of the VERTEX_LIST. The vertices may be in <x,y,z,nx,ny,nz> or <x,y,z,color> or <x,y,x,nx,ny,nz,color> depending on the type.
※3.The NJS_INDICE_LIST doesn't have an exact defined structure. It contains three smaller sub-chunks:
1) Materials which declares the diffuse, specular, and ambient settings.
2) Texture which indicates the texture id to use from the PVM archive
3) Strip List which contains clockwise or counter clockwise indices for faces, and generally includes UV information as well