♻️ refactor: file offsets
parent
1e9c671c68
commit
4bd6d7d25d
53
src/main.rs
53
src/main.rs
|
@ -50,7 +50,7 @@ fn main () {
|
|||
|
||||
let m = gltf_node_get_mat4 (&node);
|
||||
|
||||
for prim in mesh.primitives () {
|
||||
for (i, prim) in mesh.primitives ().enumerate () {
|
||||
assert_eq! (prim.mode (), gltf::mesh::Mode::Triangles);
|
||||
|
||||
let indices = prim.indices ().unwrap ();
|
||||
|
@ -80,7 +80,7 @@ fn main () {
|
|||
num_triangles: u32::try_from (indices_slice.len () / 6).unwrap (),
|
||||
//num_triangles: u32::try_from (1).unwrap (),
|
||||
};
|
||||
texts.push_str ("\0");
|
||||
texts.push_str (&format! ("{}/{}\0", node.name ().unwrap (), i));
|
||||
|
||||
meshes.push (mesh);
|
||||
|
||||
|
@ -178,6 +178,17 @@ fn main () {
|
|||
},
|
||||
];
|
||||
|
||||
let joints = [
|
||||
iqm::Joint {
|
||||
name: u32::try_from (texts.len ()).unwrap (),
|
||||
parent: -1,
|
||||
translate: [0.0, 0.0, 0.0],
|
||||
rotate: [1.0, 0.0, 0.0, 0.0],
|
||||
scale: [1.0, 1.0, 1.0],
|
||||
}
|
||||
];
|
||||
texts.push_str ("bogus_joint\0");
|
||||
|
||||
let vertexes = vertexes;
|
||||
let triangles = triangles;
|
||||
let meshes = meshes;
|
||||
|
@ -186,20 +197,25 @@ fn main () {
|
|||
let num_vertexes = u32::try_from (vertexes.len ()).unwrap ();
|
||||
let num_triangles = u32::try_from (triangles.len ()).unwrap ();
|
||||
|
||||
let num_joints = u32::try_from (joints.len ()).unwrap ();
|
||||
|
||||
let num_text = texts.len ();
|
||||
let num_text = u32::try_from (num_text).unwrap ();
|
||||
|
||||
let num_meshes = u32::try_from (meshes.len ()).unwrap ();
|
||||
let num_vertexarrays = u32::try_from (vertexarrays_unplaced.len ()).unwrap ();
|
||||
|
||||
let mut offset = 0;
|
||||
|
||||
let header_len = 124u32;
|
||||
let ofs_meshes = header_len;
|
||||
let ofs_vertexarrays = ofs_meshes + num_meshes * 6 * 4;
|
||||
// Not part of IQM spec, but I need it for self-care
|
||||
let ofs_vertexes = ofs_vertexarrays + num_vertexarrays * 5 * 4;
|
||||
|
||||
offset += header_len;
|
||||
let ofs_meshes = offset;
|
||||
offset += num_meshes * 6 * 4;
|
||||
let ofs_vertexarrays = offset;
|
||||
offset += num_vertexarrays * 5 * 4;
|
||||
|
||||
let mut vertexarrays = Vec::default ();
|
||||
let mut ofs_va = ofs_vertexes;
|
||||
|
||||
for va_in in vertexarrays_unplaced {
|
||||
let stride = va_in.stride ();
|
||||
|
@ -209,18 +225,23 @@ fn main () {
|
|||
flags: va_in.flags,
|
||||
format: va_in.format,
|
||||
size: va_in.size,
|
||||
offset: ofs_va,
|
||||
offset,
|
||||
});
|
||||
|
||||
ofs_va += num_vertexes * stride;
|
||||
offset += num_vertexes * stride;
|
||||
}
|
||||
|
||||
let vertexarrays = vertexarrays;
|
||||
|
||||
let ofs_triangles = ofs_va;
|
||||
let ofs_text = ofs_triangles + num_triangles * 3 * 4;
|
||||
let ofs_triangles = offset;
|
||||
offset += num_triangles * 3 * 4;
|
||||
let ofs_text = offset;
|
||||
offset += num_text;
|
||||
let ofs_joints = offset;
|
||||
// offset += num_joints * 48;
|
||||
|
||||
let filesize = ofs_text + num_text;
|
||||
let filesize = offset;
|
||||
let _ = offset;
|
||||
|
||||
let mut f = File::create (output_path).unwrap ();
|
||||
|
||||
|
@ -386,6 +407,14 @@ mod iqm {
|
|||
vertex: [u32; 3],
|
||||
}
|
||||
|
||||
pub struct Joint {
|
||||
pub name: u32,
|
||||
pub parent: i32,
|
||||
pub translate: [f32; 3],
|
||||
pub rotate: [f32; 4],
|
||||
pub scale: [f32; 3],
|
||||
}
|
||||
|
||||
pub struct Vertex {
|
||||
pub position: [f32; 3],
|
||||
pub normal: [f32; 3],
|
||||
|
|
Loading…
Reference in New Issue