More partcut research and testing.
TLDR:
- First 4 bytes in each cut group is a magnitude and the last 12 bytes make up a vector with x, y, and z components.
- Normally, magnitude would be multiplied by the vector. Here, it just does a translation.
- Bounding box seems kind of useless. In my testing using Orchid Falls LB, the bounding box only comes up to the chest and doesn't include arms.
- Y axis is fucking weird.
- Translating to Blender is still very much a work in progress
Longer version:
I created quite a number of tests using standard unit vectors for each of the axes in both directions (6 vectors in total), along with a variety of magnitudes, giving me an initial 12 test suites. There are a couple more test suites in the zip file, along with trying to recreate a partcut in Blender from the 3rd partcut of Ruby Floretta (the arm cut). All the pacs used in testing and the result images are in the zip.
- lowest point of nude body is about (0, 1, 0) (x, y, z)
- center of cutting plane starts at (0, 0, 0)
- camera is in front of body, facing body
Y starting position: ground level; complete body visibility affected by which way plane is facing
[CODE]
yneg mag neg body always invisible
yneg mag pos plane moves up body, "below" plane is visible
ypos mag neg plane moves up body, "above" plane is visible
ypos mag pos body always visible
[/CODE]
Y is being weird. Doesn't seem to be consistent with other axes. Note: I re-checked the files and retested this multiple times with the same results.
What I'm seeing:
[CODE]
n/n -> p/n direction -1 * y -> p position n * n * -1 -> n
n/p -> p/p direction -1 * y -> p position n * p * -1 -> p
p/n -> n/p direction -1 * y -> n position p * n * -1 -> p
p/p -> n/n direction -1 * y -> n position p * p * -1 -> n
[/CODE]
X with magnitude of 0: body is vertically bisected into left and right sections
- when using the words "right" and "left" in these results, these are camera right and camera left
[CODE]
xneg mag neg plane moves camera left; vertices camera left of plane are visible
xneg mag pos plane moves camera right; vertices camera left of plane are visible
xpos mag neg plane moves camera right; vertices camera right of plane are visible
xpos mag pos plane moves camera left; vertices camera right of plane are visible
[/CODE]
x-positive is camera right
x-negative is camera left
Z with magnitude of 0: body is vertically bisected into front and back sections
- when using the words "front" and behind", "front" means towards the front of the body and "behind" towards the back of the body
[CODE]
zneg mag neg plane moves towards front of body; vertices in front of plane are visible
zneg mag pos plane moves towards back of body; vertices in front of plane are visible
zpos mag neg plane moves towards back of body; vertices behind plane are visible
zpos mag pos plane moves towards front of body; vertices behind plane are visible
[/CODE]
z-positive is towards camera
z-negative is away from camera
conclusion: magnitude does not change the direction of the vector, only its position, with initial position being the vector components.
conclusion: vertices on the facing side of the plane are cut
For Blender: (Global Coordinates) Flip X, Swap Y and Z