I am going to leave this here because it isn't worth making a thread about.
BLUE: What seems like the header for each set of V (Vertex), VN (Vertex Normal), and VT (Vertex Texture)
RED: The vertex (it's split into 3 sections [X, Y, Z] in that order) 00 00 (X) | 00 00 (Y) | 00 00 (Z)
One increment (01) in the first half of a segment (01 00) is equal to 0.0003045535.
One increment (01) in the second half of a segment (00 01) is equal to 0.07796571.
One increment (01) on both halves of a segment (01 01) is equal to 0.07827026.
Notice that 01 01 equals 0.00030455 (0.0003045535 rounded to the nearest 100 millionth) plus 0.0779571.
Also note that the numbers aren't always rounded at the 100 millionth mark. They are rounded at the place that ends 00 XX. For example: 34 36 is 4.225985 (goes to 1 millionth place). 34 00 is 0.01583678 (goes to the 100 millionth place). 00 36 is 4.210148 (goes to the 1 millionth place). 0.01583678 rounded to the nearest millionth is 0.015837. 0.015837 + 4.210148 = 4.225985. Still researching the exact equation to find a number based just on the Bytes.
GREEN: The vertex normal (split into three sections [X, Y, Z] in that order)
One increment (01) is 0.007874016. Since there is only one segment per axis you would expect it to be easier to just multiply 0.007874016 by the decimal value of the byte, well that is not the case as results from Ohana3dsRebirth vary. 0.007874016 * 2 = 0.015748032. However Ohana3ds rounds it up one, but the places vary per exportation.
GREY: No idea what this is. Doesn't have a visible effect from what I can see but is probably something like a bone position because those do not show up in OBJ files. Now that I think about it, this is most likely a bone.
PURPLE: The vertex texture (split into two sections [U, V] in that order (u and v are coordinates for 2d textures to be mapped on a 3d model))
One increment (01) in the first half of the segment is equal to 3.020859E-05 (0.00003020859)
One increment (01) in the second half of the segment is equal to 0.007733399
One increment (01) on both halves of the segment is equal to 0.007763607
Not sure about the way to find the decimal value on these yet either.
If anybody is curious, the most productive way to design a model importer (from my eyes) would be to do the following:
- Create a list of all possible Vertices, Vertex Normals, and Vertex Textures
- Create a pointer file system where the user would export a model from Ohana3dsRebirth, put it into a different modeling software (such as blender) and then export it to a different file from there (creating the Ohana version of a OBJ and the original Wavefront version of a OBJ) and find the exact same vertices, vertex normals, and vertex textures from the same object in each file and create a pointer file telling the system where the vertex from blender belongs in the file from Ohana
- After making the pointer file, edit the model (not adding nor subtracting vertices) in the same software used to make the new OBJ file used for the pointer and replace the OBJ used for the pointer with the edited version (leaving the pointer file to show where the edited vertices come into play)
- A: Try and import this new model (after replacing the Ohana version with the new vertices thanks to the pointer file) and plug it into smash since it will have all of the same object names
B: If A doesn't work, you will need a tool to create a pointer file for the original exported Ohana obj to the MBN file that converts the vertices to bytes and finds their location in the MBN and creates the pointer. Then you can use the tool to move the edited vertices into the MBN manually and it then allows the model to be played in game.
If anybody can and wants to check my info, please do. I do not want to be spreading false information. Oh, and by editing the vertex textures you can create more user friendly texture patterns.
EDIT: If anything is made or developed using this information, please, cite me. I know it probably common knowledge from anybody who has fucked around in the models and stuff so please, just cite me if u use this.
EDIT: I forgot to mention that these small little edits do work in game, I have no idea how a full model override would be handled, especially since I haven't worked on animations yet