From 2b379aa27cf36a9670cb4c7402ab9e09bb64b8d3 Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Tue, 17 Mar 2026 17:46:29 -0500 Subject: [PATCH] collada: animated book --- Makefile | 3 +- build_collada.sh | 12 + data/scenes/book/book.cpp | 4616 ++++++++++++++++++++++++++++++++++++ data/scenes/book/book.idx | Bin 0 -> 11280 bytes data/scenes/book/book.vjw | Bin 0 -> 19392 bytes data/scenes/book/book.vtx | Bin 0 -> 21816 bytes include/collada/types.h | 1 + include/data/scenes/book.h | 3 + src/collada/animate.cpp | 45 +- src/collada/scene.cpp | 6 +- src/test.cpp | 18 +- src/view.cpp | 2 +- 12 files changed, 4677 insertions(+), 29 deletions(-) create mode 100644 data/scenes/book/book.cpp create mode 100644 data/scenes/book/book.idx create mode 100644 data/scenes/book/book.vjw create mode 100644 data/scenes/book/book.vtx create mode 100644 include/data/scenes/book.h diff --git a/Makefile b/Makefile index b2e11cd..d2b14d3 100644 --- a/Makefile +++ b/Makefile @@ -43,7 +43,8 @@ OBJS = \ src/collada/animate.o \ data/scenes/ship20/ship20.o \ data/scenes/noodle/noodle.o \ - data/scenes/shadow_test/shadow_test.o + data/scenes/shadow_test/shadow_test.o \ + data/scenes/book/book.o all: test.so diff --git a/build_collada.sh b/build_collada.sh index a57e8e5..b667612 100644 --- a/build_collada.sh +++ b/build_collada.sh @@ -21,3 +21,15 @@ PYTHONPATH=~/d3d10 python -m collada.main \ PYTHONPATH=~/d3d10 python -m collada.main \ include/data/scenes/shadow_test.h + +# book + +PYTHONPATH=~/d3d10 python -m collada.main \ + ~/Downloads/book.DAE \ + data/scenes/book/book.cpp \ + data/scenes/book/book.vtx \ + data/scenes/book/book.vjw \ + data/scenes/book/book.idx + +PYTHONPATH=~/d3d10 python -m collada.main \ + include/data/scenes/book.h diff --git a/data/scenes/book/book.cpp b/data/scenes/book/book.cpp new file mode 100644 index 0000000..617bca6 --- /dev/null +++ b/data/scenes/book/book.cpp @@ -0,0 +1,4616 @@ +#include "collada/types.h" + +#include "data/scenes/book.h" + +namespace book { + +using namespace collada::types; + +camera const camera_camera_camera = { + .xfov = 39.59775f, + .yfov = 0.0f, + .znear = 3.937008f, + .zfar = 3937.008f, + .aspect_ratio = 0.0f, +}; + +light const light_environmentambientlight = { + .type = light_type::AMBIENT, + .color = {0.0f, 0.0f, 0.0f}, +}; + +float const array_camera_camera_xfov_input_array[] = { + 0.0, + 0.03333333, + 0.06666667, + 0.1, + 0.1333333, + 0.1666667, + 0.2, + 0.2333333, + 0.2666667, + 0.3, + 0.3333333, + 0.3666667, + 0.4, + 0.4333333, + 0.4666667, + 0.5, + 0.5333333, + 0.5666667, + 0.6, + 0.6333333, + 0.6666667, + 0.7, + 0.7333334, + 0.7666667, + 0.8, + 0.8333334, + 0.8666667, + 0.9, + 0.9333334, + 0.9666667, + 1.0, + 1.033333, + 1.066667, + 1.1, + 1.133333, + 1.166667, + 1.2, + 1.233333, + 1.266667, + 1.3, + 1.333333, + 1.366667, + 1.4, + 1.433333, + 1.466667, + 1.5, + 1.533333, + 1.566667, + 1.6, + 1.633333, + 1.666667, + 1.7, + 1.733333, + 1.766667, +}; + +float const array_camera_camera_xfov_output_array[] = { + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, + 39.59775, +}; + +float const array_camera_camera_xfov_intangent_array[] = { + -0.3332639, 39.59775, + 0.02222222, 39.59775, + 0.05555556, 39.59775, + 0.08888889, 39.59775, + 0.1222222, 39.59775, + 0.1555556, 39.59775, + 0.1888889, 39.59775, + 0.2222222, 39.59775, + 0.2555556, 39.59775, + 0.2888889, 39.59775, + 0.3222222, 39.59775, + 0.3555556, 39.59775, + 0.3888889, 39.59775, + 0.4222222, 39.59775, + 0.4555556, 39.59775, + 0.4888889, 39.59775, + 0.5222222, 39.59775, + 0.5555556, 39.59775, + 0.5888889, 39.59775, + 0.6222222, 39.59775, + 0.6555555, 39.59775, + 0.6888889, 39.59775, + 0.7222223, 39.59775, + 0.7555556, 39.59775, + 0.7888889, 39.59775, + 0.8222222, 39.59775, + 0.8555556, 39.59775, + 0.8888889, 39.59775, + 0.9222223, 39.59775, + 0.9555556, 39.59775, + 0.9888889, 39.59775, + 1.022222, 39.59775, + 1.055556, 39.59775, + 1.088889, 39.59775, + 1.122222, 39.59775, + 1.155556, 39.59775, + 1.188889, 39.59775, + 1.222222, 39.59775, + 1.255556, 39.59775, + 1.288889, 39.59775, + 1.322222, 39.59775, + 1.355556, 39.59775, + 1.388889, 39.59775, + 1.422222, 39.59775, + 1.455556, 39.59775, + 1.488889, 39.59775, + 1.522222, 39.59775, + 1.555556, 39.59775, + 1.588889, 39.59775, + 1.622222, 39.59775, + 1.655556, 39.59775, + 1.688889, 39.59775, + 1.722222, 39.59775, + 1.755556, 39.59775, +}; + +float const array_camera_camera_xfov_outtangent_array[] = { + 0.01111111, 39.59775, + 0.04444445, 39.59775, + 0.07777778, 39.59775, + 0.1111111, 39.59775, + 0.1444445, 39.59775, + 0.1777778, 39.59775, + 0.2111111, 39.59775, + 0.2444444, 39.59775, + 0.2777778, 39.59775, + 0.3111111, 39.59775, + 0.3444445, 39.59775, + 0.3777778, 39.59775, + 0.4111111, 39.59775, + 0.4444444, 39.59775, + 0.4777778, 39.59775, + 0.5111111, 39.59775, + 0.5444444, 39.59775, + 0.5777778, 39.59775, + 0.6111111, 39.59775, + 0.6444445, 39.59775, + 0.6777778, 39.59775, + 0.7111111, 39.59775, + 0.7444445, 39.59775, + 0.7777778, 39.59775, + 0.8111112, 39.59775, + 0.8444445, 39.59775, + 0.8777778, 39.59775, + 0.9111111, 39.59775, + 0.9444445, 39.59775, + 0.9777778, 39.59775, + 1.011111, 39.59775, + 1.044444, 39.59775, + 1.077778, 39.59775, + 1.111111, 39.59775, + 1.144444, 39.59775, + 1.177778, 39.59775, + 1.211111, 39.59775, + 1.244444, 39.59775, + 1.277778, 39.59775, + 1.311111, 39.59775, + 1.344445, 39.59775, + 1.377778, 39.59775, + 1.411111, 39.59775, + 1.444445, 39.59775, + 1.477778, 39.59775, + 1.511111, 39.59775, + 1.544444, 39.59775, + 1.577778, 39.59775, + 1.611111, 39.59775, + 1.644444, 39.59775, + 1.677778, 39.59775, + 1.711111, 39.59775, + 1.744444, 39.59775, + 2.099931, 39.59775, +}; + +enum interpolation const array_camera_camera_xfov_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_camera_camera_xfov_sampler = { + // camera_camera_xfov_input + .input = { + .float_array = array_camera_camera_xfov_input_array, + .count = 54, + .stride = 1, + }, + // camera_camera_xfov_output + .output = { + .float_array = array_camera_camera_xfov_output_array, + .count = 54, + .stride = 1, + }, + // camera_camera_xfov_intangent + .in_tangent = { + .float_array = array_camera_camera_xfov_intangent_array, + .count = 54, + .stride = 2, + }, + // camera_camera_xfov_outtangent + .out_tangent = { + .float_array = array_camera_camera_xfov_outtangent_array, + .count = 54, + .stride = 2, + }, + // camera_camera_xfov_interpolation + .interpolation = { + .interpolation_array = array_camera_camera_xfov_interpolation_array, + .count = 54, + .stride = 1, + }, +}; + +float const array_node_root_bone_translation_x_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_root_bone_translation_x_output_array[] = { + -0.04051036, + -0.04051036, +}; + +float const array_node_root_bone_translation_x_intangent_array[] = { + -0.3332639, -0.04051036, + 1.194444, -0.04051036, +}; + +float const array_node_root_bone_translation_x_outtangent_array[] = { + 0.5972222, -0.04051036, + 2.124931, -0.04051036, +}; + +enum interpolation const array_node_root_bone_translation_x_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_root_bone_translation_x_sampler = { + // node_root_bone_translation_x_input + .input = { + .float_array = array_node_root_bone_translation_x_input_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_translation_x_output + .output = { + .float_array = array_node_root_bone_translation_x_output_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_translation_x_intangent + .in_tangent = { + .float_array = array_node_root_bone_translation_x_intangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_translation_x_outtangent + .out_tangent = { + .float_array = array_node_root_bone_translation_x_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_translation_x_interpolation + .interpolation = { + .interpolation_array = array_node_root_bone_translation_x_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_root_bone_translation_y_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_root_bone_translation_y_output_array[] = { + -0.2942449, + -0.2942449, +}; + +float const array_node_root_bone_translation_y_intangent_array[] = { + -0.3332639, -0.2942449, + 1.194444, -0.2942449, +}; + +float const array_node_root_bone_translation_y_outtangent_array[] = { + 0.5972222, -0.2942449, + 2.124931, -0.2942449, +}; + +enum interpolation const array_node_root_bone_translation_y_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_root_bone_translation_y_sampler = { + // node_root_bone_translation_y_input + .input = { + .float_array = array_node_root_bone_translation_y_input_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_translation_y_output + .output = { + .float_array = array_node_root_bone_translation_y_output_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_translation_y_intangent + .in_tangent = { + .float_array = array_node_root_bone_translation_y_intangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_translation_y_outtangent + .out_tangent = { + .float_array = array_node_root_bone_translation_y_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_translation_y_interpolation + .interpolation = { + .interpolation_array = array_node_root_bone_translation_y_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_root_bone_translation_z_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_root_bone_translation_z_output_array[] = { + -0.1360549, + -0.1360549, +}; + +float const array_node_root_bone_translation_z_intangent_array[] = { + -0.3332639, -0.1360549, + 1.194444, -0.1360549, +}; + +float const array_node_root_bone_translation_z_outtangent_array[] = { + 0.5972222, -0.1360549, + 2.124931, -0.1360549, +}; + +enum interpolation const array_node_root_bone_translation_z_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_root_bone_translation_z_sampler = { + // node_root_bone_translation_z_input + .input = { + .float_array = array_node_root_bone_translation_z_input_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_translation_z_output + .output = { + .float_array = array_node_root_bone_translation_z_output_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_translation_z_intangent + .in_tangent = { + .float_array = array_node_root_bone_translation_z_intangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_translation_z_outtangent + .out_tangent = { + .float_array = array_node_root_bone_translation_z_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_translation_z_interpolation + .interpolation = { + .interpolation_array = array_node_root_bone_translation_z_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_root_bone_rotationz_angle_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_root_bone_rotationz_angle_output_array[] = { + -1.21888e-12, + -1.21888e-12, +}; + +float const array_node_root_bone_rotationz_angle_intangent_array[] = { + -0.3332639, -1.21888e-12, + 1.194444, -1.21888e-12, +}; + +float const array_node_root_bone_rotationz_angle_outtangent_array[] = { + 0.5972222, -1.21888e-12, + 2.124931, -1.21888e-12, +}; + +enum interpolation const array_node_root_bone_rotationz_angle_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_root_bone_rotationz_angle_sampler = { + // node_root_bone_rotationz_angle_input + .input = { + .float_array = array_node_root_bone_rotationz_angle_input_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_rotationz_angle_output + .output = { + .float_array = array_node_root_bone_rotationz_angle_output_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_rotationz_angle_intangent + .in_tangent = { + .float_array = array_node_root_bone_rotationz_angle_intangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_rotationz_angle_outtangent + .out_tangent = { + .float_array = array_node_root_bone_rotationz_angle_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_rotationz_angle_interpolation + .interpolation = { + .interpolation_array = array_node_root_bone_rotationz_angle_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_root_bone_rotationy_angle_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_root_bone_rotationy_angle_output_array[] = { + -1.36604e-05, + -1.36604e-05, +}; + +float const array_node_root_bone_rotationy_angle_intangent_array[] = { + -0.3332639, -1.36604e-05, + 1.194444, -1.36604e-05, +}; + +float const array_node_root_bone_rotationy_angle_outtangent_array[] = { + 0.5972222, -1.36604e-05, + 2.124931, -1.36604e-05, +}; + +enum interpolation const array_node_root_bone_rotationy_angle_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_root_bone_rotationy_angle_sampler = { + // node_root_bone_rotationy_angle_input + .input = { + .float_array = array_node_root_bone_rotationy_angle_input_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_rotationy_angle_output + .output = { + .float_array = array_node_root_bone_rotationy_angle_output_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_rotationy_angle_intangent + .in_tangent = { + .float_array = array_node_root_bone_rotationy_angle_intangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_rotationy_angle_outtangent + .out_tangent = { + .float_array = array_node_root_bone_rotationy_angle_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_rotationy_angle_interpolation + .interpolation = { + .interpolation_array = array_node_root_bone_rotationy_angle_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_root_bone_rotationx_angle_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_root_bone_rotationx_angle_output_array[] = { + 5.11235e-06, + 5.11235e-06, +}; + +float const array_node_root_bone_rotationx_angle_intangent_array[] = { + -0.3332639, 5.11235e-06, + 1.194444, 5.11235e-06, +}; + +float const array_node_root_bone_rotationx_angle_outtangent_array[] = { + 0.5972222, 5.11235e-06, + 2.124931, 5.11235e-06, +}; + +enum interpolation const array_node_root_bone_rotationx_angle_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_root_bone_rotationx_angle_sampler = { + // node_root_bone_rotationx_angle_input + .input = { + .float_array = array_node_root_bone_rotationx_angle_input_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_rotationx_angle_output + .output = { + .float_array = array_node_root_bone_rotationx_angle_output_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_rotationx_angle_intangent + .in_tangent = { + .float_array = array_node_root_bone_rotationx_angle_intangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_rotationx_angle_outtangent + .out_tangent = { + .float_array = array_node_root_bone_rotationx_angle_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_rotationx_angle_interpolation + .interpolation = { + .interpolation_array = array_node_root_bone_rotationx_angle_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_root_bone_scale_x_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_root_bone_scale_x_output_array[] = { + 1.0, + 1.0, +}; + +float const array_node_root_bone_scale_x_intangent_array[] = { + -0.3332639, 1.0, + 1.194444, 1.0, +}; + +float const array_node_root_bone_scale_x_outtangent_array[] = { + 0.5972222, 1.0, + 2.124931, 1.0, +}; + +enum interpolation const array_node_root_bone_scale_x_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_root_bone_scale_x_sampler = { + // node_root_bone_scale_x_input + .input = { + .float_array = array_node_root_bone_scale_x_input_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_scale_x_output + .output = { + .float_array = array_node_root_bone_scale_x_output_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_scale_x_intangent + .in_tangent = { + .float_array = array_node_root_bone_scale_x_intangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_scale_x_outtangent + .out_tangent = { + .float_array = array_node_root_bone_scale_x_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_scale_x_interpolation + .interpolation = { + .interpolation_array = array_node_root_bone_scale_x_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_root_bone_scale_y_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_root_bone_scale_y_output_array[] = { + 1.0, + 1.0, +}; + +float const array_node_root_bone_scale_y_intangent_array[] = { + -0.3332639, 1.0, + 1.194444, 1.0, +}; + +float const array_node_root_bone_scale_y_outtangent_array[] = { + 0.5972222, 1.0, + 2.124931, 1.0, +}; + +enum interpolation const array_node_root_bone_scale_y_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_root_bone_scale_y_sampler = { + // node_root_bone_scale_y_input + .input = { + .float_array = array_node_root_bone_scale_y_input_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_scale_y_output + .output = { + .float_array = array_node_root_bone_scale_y_output_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_scale_y_intangent + .in_tangent = { + .float_array = array_node_root_bone_scale_y_intangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_scale_y_outtangent + .out_tangent = { + .float_array = array_node_root_bone_scale_y_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_scale_y_interpolation + .interpolation = { + .interpolation_array = array_node_root_bone_scale_y_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_root_bone_scale_z_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_root_bone_scale_z_output_array[] = { + 1.0, + 1.0, +}; + +float const array_node_root_bone_scale_z_intangent_array[] = { + -0.3332639, 1.0, + 1.194444, 1.0, +}; + +float const array_node_root_bone_scale_z_outtangent_array[] = { + 0.5972222, 1.0, + 2.124931, 1.0, +}; + +enum interpolation const array_node_root_bone_scale_z_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_root_bone_scale_z_sampler = { + // node_root_bone_scale_z_input + .input = { + .float_array = array_node_root_bone_scale_z_input_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_scale_z_output + .output = { + .float_array = array_node_root_bone_scale_z_output_array, + .count = 2, + .stride = 1, + }, + // node_root_bone_scale_z_intangent + .in_tangent = { + .float_array = array_node_root_bone_scale_z_intangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_scale_z_outtangent + .out_tangent = { + .float_array = array_node_root_bone_scale_z_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_root_bone_scale_z_interpolation + .interpolation = { + .interpolation_array = array_node_root_bone_scale_z_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_bottom_cover_translation_x_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_bottom_cover_translation_x_output_array[] = { + -0.04051036, + -0.04051036, +}; + +float const array_node_bottom_cover_translation_x_intangent_array[] = { + -0.3332639, -0.04051036, + 1.194444, -0.04051036, +}; + +float const array_node_bottom_cover_translation_x_outtangent_array[] = { + 0.5972222, -0.04051036, + 2.124931, -0.04051036, +}; + +enum interpolation const array_node_bottom_cover_translation_x_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_bottom_cover_translation_x_sampler = { + // node_bottom_cover_translation_x_input + .input = { + .float_array = array_node_bottom_cover_translation_x_input_array, + .count = 2, + .stride = 1, + }, + // node_bottom_cover_translation_x_output + .output = { + .float_array = array_node_bottom_cover_translation_x_output_array, + .count = 2, + .stride = 1, + }, + // node_bottom_cover_translation_x_intangent + .in_tangent = { + .float_array = array_node_bottom_cover_translation_x_intangent_array, + .count = 2, + .stride = 2, + }, + // node_bottom_cover_translation_x_outtangent + .out_tangent = { + .float_array = array_node_bottom_cover_translation_x_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_bottom_cover_translation_x_interpolation + .interpolation = { + .interpolation_array = array_node_bottom_cover_translation_x_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_bottom_cover_translation_y_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_bottom_cover_translation_y_output_array[] = { + -0.2942449, + -0.2942449, +}; + +float const array_node_bottom_cover_translation_y_intangent_array[] = { + -0.3332639, -0.2942449, + 1.194444, -0.2942449, +}; + +float const array_node_bottom_cover_translation_y_outtangent_array[] = { + 0.5972222, -0.2942449, + 2.124931, -0.2942449, +}; + +enum interpolation const array_node_bottom_cover_translation_y_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_bottom_cover_translation_y_sampler = { + // node_bottom_cover_translation_y_input + .input = { + .float_array = array_node_bottom_cover_translation_y_input_array, + .count = 2, + .stride = 1, + }, + // node_bottom_cover_translation_y_output + .output = { + .float_array = array_node_bottom_cover_translation_y_output_array, + .count = 2, + .stride = 1, + }, + // node_bottom_cover_translation_y_intangent + .in_tangent = { + .float_array = array_node_bottom_cover_translation_y_intangent_array, + .count = 2, + .stride = 2, + }, + // node_bottom_cover_translation_y_outtangent + .out_tangent = { + .float_array = array_node_bottom_cover_translation_y_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_bottom_cover_translation_y_interpolation + .interpolation = { + .interpolation_array = array_node_bottom_cover_translation_y_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_bottom_cover_translation_z_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_bottom_cover_translation_z_output_array[] = { + -0.1360549, + -0.1360549, +}; + +float const array_node_bottom_cover_translation_z_intangent_array[] = { + -0.3332639, -0.1360549, + 1.194444, -0.1360549, +}; + +float const array_node_bottom_cover_translation_z_outtangent_array[] = { + 0.5972222, -0.1360549, + 2.124931, -0.1360549, +}; + +enum interpolation const array_node_bottom_cover_translation_z_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_bottom_cover_translation_z_sampler = { + // node_bottom_cover_translation_z_input + .input = { + .float_array = array_node_bottom_cover_translation_z_input_array, + .count = 2, + .stride = 1, + }, + // node_bottom_cover_translation_z_output + .output = { + .float_array = array_node_bottom_cover_translation_z_output_array, + .count = 2, + .stride = 1, + }, + // node_bottom_cover_translation_z_intangent + .in_tangent = { + .float_array = array_node_bottom_cover_translation_z_intangent_array, + .count = 2, + .stride = 2, + }, + // node_bottom_cover_translation_z_outtangent + .out_tangent = { + .float_array = array_node_bottom_cover_translation_z_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_bottom_cover_translation_z_interpolation + .interpolation = { + .interpolation_array = array_node_bottom_cover_translation_z_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_bottom_cover_rotationz_angle_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_bottom_cover_rotationz_angle_output_array[] = { + -1.08297e-12, + -1.08297e-12, +}; + +float const array_node_bottom_cover_rotationz_angle_intangent_array[] = { + -0.3332639, -1.08297e-12, + 1.194444, -1.08297e-12, +}; + +float const array_node_bottom_cover_rotationz_angle_outtangent_array[] = { + 0.5972222, -1.08297e-12, + 2.124931, -1.08297e-12, +}; + +enum interpolation const array_node_bottom_cover_rotationz_angle_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_bottom_cover_rotationz_angle_sampler = { + // node_bottom_cover_rotationz_angle_input + .input = { + .float_array = array_node_bottom_cover_rotationz_angle_input_array, + .count = 2, + .stride = 1, + }, + // node_bottom_cover_rotationz_angle_output + .output = { + .float_array = array_node_bottom_cover_rotationz_angle_output_array, + .count = 2, + .stride = 1, + }, + // node_bottom_cover_rotationz_angle_intangent + .in_tangent = { + .float_array = array_node_bottom_cover_rotationz_angle_intangent_array, + .count = 2, + .stride = 2, + }, + // node_bottom_cover_rotationz_angle_outtangent + .out_tangent = { + .float_array = array_node_bottom_cover_rotationz_angle_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_bottom_cover_rotationz_angle_interpolation + .interpolation = { + .interpolation_array = array_node_bottom_cover_rotationz_angle_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_bottom_cover_rotationy_angle_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_bottom_cover_rotationy_angle_output_array[] = { + -1.36604e-05, + -1.36604e-05, +}; + +float const array_node_bottom_cover_rotationy_angle_intangent_array[] = { + -0.3332639, -1.36604e-05, + 1.194444, -1.36604e-05, +}; + +float const array_node_bottom_cover_rotationy_angle_outtangent_array[] = { + 0.5972222, -1.36604e-05, + 2.124931, -1.36604e-05, +}; + +enum interpolation const array_node_bottom_cover_rotationy_angle_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_bottom_cover_rotationy_angle_sampler = { + // node_bottom_cover_rotationy_angle_input + .input = { + .float_array = array_node_bottom_cover_rotationy_angle_input_array, + .count = 2, + .stride = 1, + }, + // node_bottom_cover_rotationy_angle_output + .output = { + .float_array = array_node_bottom_cover_rotationy_angle_output_array, + .count = 2, + .stride = 1, + }, + // node_bottom_cover_rotationy_angle_intangent + .in_tangent = { + .float_array = array_node_bottom_cover_rotationy_angle_intangent_array, + .count = 2, + .stride = 2, + }, + // node_bottom_cover_rotationy_angle_outtangent + .out_tangent = { + .float_array = array_node_bottom_cover_rotationy_angle_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_bottom_cover_rotationy_angle_interpolation + .interpolation = { + .interpolation_array = array_node_bottom_cover_rotationy_angle_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_bottom_cover_rotationx_angle_input_array[] = { + 0.0, + 0.04166667, + 0.08333334, + 0.125, + 0.1666667, + 0.2083333, + 0.25, + 0.2916667, + 0.3333333, + 0.375, + 0.4166667, + 0.4583333, + 0.5, + 0.5416667, + 0.5833333, + 0.625, + 0.6666667, + 0.7083334, + 0.75, + 0.7916667, + 0.8333334, + 0.875, + 0.9166667, + 0.9583334, + 1.0, + 1.041667, + 1.083333, + 1.125, + 1.166667, + 1.208333, + 1.25, + 1.291667, + 1.333333, + 1.375, + 1.416667, + 1.458333, + 1.5, + 1.541667, + 1.583333, + 1.625, + 1.666667, + 1.708333, + 1.75, + 1.791667, +}; + +float const array_node_bottom_cover_rotationx_angle_output_array[] = { + -4.999998, + -8.600579, + -17.8863, + -30.58308, + -44.4169, + -57.11371, + -66.39939, + -70.00001, + -67.20704, + -59.84375, + -49.4336, + -37.49999, + -25.5664, + -15.15625, + -7.792974, + -4.999998, + -8.600579, + -17.8863, + -30.58309, + -44.41691, + -57.11371, + -66.39941, + -70.00001, + -67.20704, + -59.84375, + -49.4336, + -37.49999, + -25.5664, + -15.15625, + -7.792974, + -4.999998, + -8.600582, + -17.8863, + -30.58309, + -44.4169, + -57.11371, + -66.39939, + -70.00001, + -65.18519, + -53.14815, + -37.49999, + -21.85185, + -9.814806, + -4.999998, +}; + +float const array_node_bottom_cover_rotationx_angle_intangent_array[] = { + -0.3332639, -4.999998, + 0.02777778, -7.400385, + 0.06944445, -14.79106, + 0.1111111, -26.35082, + 0.1527778, -39.80563, + 0.1944444, -52.88144, + 0.2361111, -63.30416, + 0.2777778, -68.7998, + 0.3194444, -68.13802, + 0.3611111, -62.29818, + 0.4027778, -52.90365, + 0.4444444, -41.47786, + 0.4861111, -29.54427, + 0.5277778, -18.6263, + 0.5694445, -10.2474, + 0.6111111, -5.93099, + 0.6527778, -7.400385, + 0.6944445, -14.79106, + 0.7361111, -26.35082, + 0.7777778, -39.80564, + 0.8194445, -52.88144, + 0.8611111, -63.30417, + 0.9027778, -68.79981, + 0.9444445, -68.13802, + 0.9861112, -62.29818, + 1.027778, -52.90365, + 1.069444, -41.47786, + 1.111111, -29.54427, + 1.152778, -18.6263, + 1.194444, -10.2474, + 1.236111, -5.93099, + 1.277778, -7.400387, + 1.319444, -14.79106, + 1.361111, -26.35082, + 1.402778, -39.80563, + 1.444445, -52.88144, + 1.486111, -63.30416, + 1.527778, -68.7998, + 1.569445, -66.79013, + 1.611111, -57.1605, + 1.652778, -42.71605, + 1.694445, -27.0679, + 1.736111, -13.82715, + 1.777778, -6.604934, +}; + +float const array_node_bottom_cover_rotationx_angle_outtangent_array[] = { + 0.01388889, -6.200191, + 0.05555556, -11.69582, + 0.09722222, -22.11856, + 0.1388889, -35.19436, + 0.1805556, -48.64917, + 0.2222222, -60.20893, + 0.2638889, -67.5996, + 0.3055556, -69.06902, + 0.3472222, -64.75261, + 0.3888889, -56.3737, + 0.4305556, -45.45573, + 0.4722222, -33.52213, + 0.5138889, -22.09635, + 0.5555556, -12.70182, + 0.5972222, -6.861981, + 0.6388889, -6.200191, + 0.6805556, -11.69582, + 0.7222223, -22.11856, + 0.7638889, -35.19436, + 0.8055556, -48.64918, + 0.8472223, -60.20894, + 0.8888889, -67.59961, + 0.9305556, -69.06902, + 0.9722223, -64.75261, + 1.013889, -56.3737, + 1.055556, -45.45573, + 1.097222, -33.52213, + 1.138889, -22.09635, + 1.180556, -12.70182, + 1.222222, -6.861981, + 1.263889, -6.200192, + 1.305556, -11.69582, + 1.347222, -22.11856, + 1.388889, -35.19436, + 1.430556, -48.64917, + 1.472222, -60.20893, + 1.513889, -67.5996, + 1.555556, -68.39507, + 1.597222, -61.17284, + 1.638889, -47.93209, + 1.680556, -32.28395, + 1.722222, -17.8395, + 1.763889, -8.209869, + 2.124931, -4.999998, +}; + +enum interpolation const array_node_bottom_cover_rotationx_angle_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_bottom_cover_rotationx_angle_sampler = { + // node_bottom_cover_rotationx_angle_input + .input = { + .float_array = array_node_bottom_cover_rotationx_angle_input_array, + .count = 44, + .stride = 1, + }, + // node_bottom_cover_rotationx_angle_output + .output = { + .float_array = array_node_bottom_cover_rotationx_angle_output_array, + .count = 44, + .stride = 1, + }, + // node_bottom_cover_rotationx_angle_intangent + .in_tangent = { + .float_array = array_node_bottom_cover_rotationx_angle_intangent_array, + .count = 44, + .stride = 2, + }, + // node_bottom_cover_rotationx_angle_outtangent + .out_tangent = { + .float_array = array_node_bottom_cover_rotationx_angle_outtangent_array, + .count = 44, + .stride = 2, + }, + // node_bottom_cover_rotationx_angle_interpolation + .interpolation = { + .interpolation_array = array_node_bottom_cover_rotationx_angle_interpolation_array, + .count = 44, + .stride = 1, + }, +}; + +float const array_node_bottom_cover_scale_x_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_bottom_cover_scale_x_output_array[] = { + 1.0, + 1.0, +}; + +float const array_node_bottom_cover_scale_x_intangent_array[] = { + -0.3332639, 1.0, + 1.194444, 1.0, +}; + +float const array_node_bottom_cover_scale_x_outtangent_array[] = { + 0.5972222, 1.0, + 2.124931, 1.0, +}; + +enum interpolation const array_node_bottom_cover_scale_x_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_bottom_cover_scale_x_sampler = { + // node_bottom_cover_scale_x_input + .input = { + .float_array = array_node_bottom_cover_scale_x_input_array, + .count = 2, + .stride = 1, + }, + // node_bottom_cover_scale_x_output + .output = { + .float_array = array_node_bottom_cover_scale_x_output_array, + .count = 2, + .stride = 1, + }, + // node_bottom_cover_scale_x_intangent + .in_tangent = { + .float_array = array_node_bottom_cover_scale_x_intangent_array, + .count = 2, + .stride = 2, + }, + // node_bottom_cover_scale_x_outtangent + .out_tangent = { + .float_array = array_node_bottom_cover_scale_x_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_bottom_cover_scale_x_interpolation + .interpolation = { + .interpolation_array = array_node_bottom_cover_scale_x_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_bottom_cover_scale_y_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_bottom_cover_scale_y_output_array[] = { + 1.0, + 1.0, +}; + +float const array_node_bottom_cover_scale_y_intangent_array[] = { + -0.3332639, 1.0, + 1.194444, 1.0, +}; + +float const array_node_bottom_cover_scale_y_outtangent_array[] = { + 0.5972222, 1.0, + 2.124931, 1.0, +}; + +enum interpolation const array_node_bottom_cover_scale_y_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_bottom_cover_scale_y_sampler = { + // node_bottom_cover_scale_y_input + .input = { + .float_array = array_node_bottom_cover_scale_y_input_array, + .count = 2, + .stride = 1, + }, + // node_bottom_cover_scale_y_output + .output = { + .float_array = array_node_bottom_cover_scale_y_output_array, + .count = 2, + .stride = 1, + }, + // node_bottom_cover_scale_y_intangent + .in_tangent = { + .float_array = array_node_bottom_cover_scale_y_intangent_array, + .count = 2, + .stride = 2, + }, + // node_bottom_cover_scale_y_outtangent + .out_tangent = { + .float_array = array_node_bottom_cover_scale_y_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_bottom_cover_scale_y_interpolation + .interpolation = { + .interpolation_array = array_node_bottom_cover_scale_y_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_bottom_cover_scale_z_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_bottom_cover_scale_z_output_array[] = { + 1.0, + 1.0, +}; + +float const array_node_bottom_cover_scale_z_intangent_array[] = { + -0.3332639, 1.0, + 1.194444, 1.0, +}; + +float const array_node_bottom_cover_scale_z_outtangent_array[] = { + 0.5972222, 1.0, + 2.124931, 1.0, +}; + +enum interpolation const array_node_bottom_cover_scale_z_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_bottom_cover_scale_z_sampler = { + // node_bottom_cover_scale_z_input + .input = { + .float_array = array_node_bottom_cover_scale_z_input_array, + .count = 2, + .stride = 1, + }, + // node_bottom_cover_scale_z_output + .output = { + .float_array = array_node_bottom_cover_scale_z_output_array, + .count = 2, + .stride = 1, + }, + // node_bottom_cover_scale_z_intangent + .in_tangent = { + .float_array = array_node_bottom_cover_scale_z_intangent_array, + .count = 2, + .stride = 2, + }, + // node_bottom_cover_scale_z_outtangent + .out_tangent = { + .float_array = array_node_bottom_cover_scale_z_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_bottom_cover_scale_z_interpolation + .interpolation = { + .interpolation_array = array_node_bottom_cover_scale_z_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_control_bone_translation_x_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_control_bone_translation_x_output_array[] = { + 0.1620414, + 0.1620414, +}; + +float const array_node_control_bone_translation_x_intangent_array[] = { + -0.3332639, 0.1620414, + 1.194444, 0.1620414, +}; + +float const array_node_control_bone_translation_x_outtangent_array[] = { + 0.5972222, 0.1620414, + 2.124931, 0.1620414, +}; + +enum interpolation const array_node_control_bone_translation_x_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_control_bone_translation_x_sampler = { + // node_control_bone_translation_x_input + .input = { + .float_array = array_node_control_bone_translation_x_input_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_translation_x_output + .output = { + .float_array = array_node_control_bone_translation_x_output_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_translation_x_intangent + .in_tangent = { + .float_array = array_node_control_bone_translation_x_intangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_translation_x_outtangent + .out_tangent = { + .float_array = array_node_control_bone_translation_x_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_translation_x_interpolation + .interpolation = { + .interpolation_array = array_node_control_bone_translation_x_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_control_bone_translation_y_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_control_bone_translation_y_output_array[] = { + -0.2942449, + -0.2942449, +}; + +float const array_node_control_bone_translation_y_intangent_array[] = { + -0.3332639, -0.2942449, + 1.194444, -0.2942449, +}; + +float const array_node_control_bone_translation_y_outtangent_array[] = { + 0.5972222, -0.2942449, + 2.124931, -0.2942449, +}; + +enum interpolation const array_node_control_bone_translation_y_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_control_bone_translation_y_sampler = { + // node_control_bone_translation_y_input + .input = { + .float_array = array_node_control_bone_translation_y_input_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_translation_y_output + .output = { + .float_array = array_node_control_bone_translation_y_output_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_translation_y_intangent + .in_tangent = { + .float_array = array_node_control_bone_translation_y_intangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_translation_y_outtangent + .out_tangent = { + .float_array = array_node_control_bone_translation_y_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_translation_y_interpolation + .interpolation = { + .interpolation_array = array_node_control_bone_translation_y_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_control_bone_translation_z_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_control_bone_translation_z_output_array[] = { + -0.1360549, + -0.1360549, +}; + +float const array_node_control_bone_translation_z_intangent_array[] = { + -0.3332639, -0.1360549, + 1.194444, -0.1360549, +}; + +float const array_node_control_bone_translation_z_outtangent_array[] = { + 0.5972222, -0.1360549, + 2.124931, -0.1360549, +}; + +enum interpolation const array_node_control_bone_translation_z_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_control_bone_translation_z_sampler = { + // node_control_bone_translation_z_input + .input = { + .float_array = array_node_control_bone_translation_z_input_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_translation_z_output + .output = { + .float_array = array_node_control_bone_translation_z_output_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_translation_z_intangent + .in_tangent = { + .float_array = array_node_control_bone_translation_z_intangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_translation_z_outtangent + .out_tangent = { + .float_array = array_node_control_bone_translation_z_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_translation_z_interpolation + .interpolation = { + .interpolation_array = array_node_control_bone_translation_z_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_control_bone_rotationz_angle_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_control_bone_rotationz_angle_output_array[] = { + -1.21915e-12, + -1.21915e-12, +}; + +float const array_node_control_bone_rotationz_angle_intangent_array[] = { + -0.3332639, -1.21915e-12, + 1.194444, -1.21915e-12, +}; + +float const array_node_control_bone_rotationz_angle_outtangent_array[] = { + 0.5972222, -1.21915e-12, + 2.124931, -1.21915e-12, +}; + +enum interpolation const array_node_control_bone_rotationz_angle_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_control_bone_rotationz_angle_sampler = { + // node_control_bone_rotationz_angle_input + .input = { + .float_array = array_node_control_bone_rotationz_angle_input_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_rotationz_angle_output + .output = { + .float_array = array_node_control_bone_rotationz_angle_output_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_rotationz_angle_intangent + .in_tangent = { + .float_array = array_node_control_bone_rotationz_angle_intangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_rotationz_angle_outtangent + .out_tangent = { + .float_array = array_node_control_bone_rotationz_angle_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_rotationz_angle_interpolation + .interpolation = { + .interpolation_array = array_node_control_bone_rotationz_angle_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_control_bone_rotationy_angle_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_control_bone_rotationy_angle_output_array[] = { + -1.36604e-05, + -1.36604e-05, +}; + +float const array_node_control_bone_rotationy_angle_intangent_array[] = { + -0.3332639, -1.36604e-05, + 1.194444, -1.36604e-05, +}; + +float const array_node_control_bone_rotationy_angle_outtangent_array[] = { + 0.5972222, -1.36604e-05, + 2.124931, -1.36604e-05, +}; + +enum interpolation const array_node_control_bone_rotationy_angle_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_control_bone_rotationy_angle_sampler = { + // node_control_bone_rotationy_angle_input + .input = { + .float_array = array_node_control_bone_rotationy_angle_input_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_rotationy_angle_output + .output = { + .float_array = array_node_control_bone_rotationy_angle_output_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_rotationy_angle_intangent + .in_tangent = { + .float_array = array_node_control_bone_rotationy_angle_intangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_rotationy_angle_outtangent + .out_tangent = { + .float_array = array_node_control_bone_rotationy_angle_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_rotationy_angle_interpolation + .interpolation = { + .interpolation_array = array_node_control_bone_rotationy_angle_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_control_bone_rotationx_angle_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_control_bone_rotationx_angle_output_array[] = { + 5.1135e-06, + 5.1135e-06, +}; + +float const array_node_control_bone_rotationx_angle_intangent_array[] = { + -0.3332639, 5.1135e-06, + 1.194444, 5.1135e-06, +}; + +float const array_node_control_bone_rotationx_angle_outtangent_array[] = { + 0.5972222, 5.1135e-06, + 2.124931, 5.1135e-06, +}; + +enum interpolation const array_node_control_bone_rotationx_angle_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_control_bone_rotationx_angle_sampler = { + // node_control_bone_rotationx_angle_input + .input = { + .float_array = array_node_control_bone_rotationx_angle_input_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_rotationx_angle_output + .output = { + .float_array = array_node_control_bone_rotationx_angle_output_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_rotationx_angle_intangent + .in_tangent = { + .float_array = array_node_control_bone_rotationx_angle_intangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_rotationx_angle_outtangent + .out_tangent = { + .float_array = array_node_control_bone_rotationx_angle_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_rotationx_angle_interpolation + .interpolation = { + .interpolation_array = array_node_control_bone_rotationx_angle_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_control_bone_scale_x_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_control_bone_scale_x_output_array[] = { + 1.0, + 1.0, +}; + +float const array_node_control_bone_scale_x_intangent_array[] = { + -0.3332639, 1.0, + 1.194444, 1.0, +}; + +float const array_node_control_bone_scale_x_outtangent_array[] = { + 0.5972222, 1.0, + 2.124931, 1.0, +}; + +enum interpolation const array_node_control_bone_scale_x_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_control_bone_scale_x_sampler = { + // node_control_bone_scale_x_input + .input = { + .float_array = array_node_control_bone_scale_x_input_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_scale_x_output + .output = { + .float_array = array_node_control_bone_scale_x_output_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_scale_x_intangent + .in_tangent = { + .float_array = array_node_control_bone_scale_x_intangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_scale_x_outtangent + .out_tangent = { + .float_array = array_node_control_bone_scale_x_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_scale_x_interpolation + .interpolation = { + .interpolation_array = array_node_control_bone_scale_x_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_control_bone_scale_y_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_control_bone_scale_y_output_array[] = { + 1.0, + 1.0, +}; + +float const array_node_control_bone_scale_y_intangent_array[] = { + -0.3332639, 1.0, + 1.194444, 1.0, +}; + +float const array_node_control_bone_scale_y_outtangent_array[] = { + 0.5972222, 1.0, + 2.124931, 1.0, +}; + +enum interpolation const array_node_control_bone_scale_y_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_control_bone_scale_y_sampler = { + // node_control_bone_scale_y_input + .input = { + .float_array = array_node_control_bone_scale_y_input_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_scale_y_output + .output = { + .float_array = array_node_control_bone_scale_y_output_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_scale_y_intangent + .in_tangent = { + .float_array = array_node_control_bone_scale_y_intangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_scale_y_outtangent + .out_tangent = { + .float_array = array_node_control_bone_scale_y_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_scale_y_interpolation + .interpolation = { + .interpolation_array = array_node_control_bone_scale_y_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_control_bone_scale_z_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_control_bone_scale_z_output_array[] = { + 1.0, + 1.0, +}; + +float const array_node_control_bone_scale_z_intangent_array[] = { + -0.3332639, 1.0, + 1.194444, 1.0, +}; + +float const array_node_control_bone_scale_z_outtangent_array[] = { + 0.5972222, 1.0, + 2.124931, 1.0, +}; + +enum interpolation const array_node_control_bone_scale_z_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_control_bone_scale_z_sampler = { + // node_control_bone_scale_z_input + .input = { + .float_array = array_node_control_bone_scale_z_input_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_scale_z_output + .output = { + .float_array = array_node_control_bone_scale_z_output_array, + .count = 2, + .stride = 1, + }, + // node_control_bone_scale_z_intangent + .in_tangent = { + .float_array = array_node_control_bone_scale_z_intangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_scale_z_outtangent + .out_tangent = { + .float_array = array_node_control_bone_scale_z_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_control_bone_scale_z_interpolation + .interpolation = { + .interpolation_array = array_node_control_bone_scale_z_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_side_cover_translation_x_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_side_cover_translation_x_output_array[] = { + -0.04051036, + -0.04051036, +}; + +float const array_node_side_cover_translation_x_intangent_array[] = { + -0.3332639, -0.04051036, + 1.194444, -0.04051036, +}; + +float const array_node_side_cover_translation_x_outtangent_array[] = { + 0.5972222, -0.04051036, + 2.124931, -0.04051036, +}; + +enum interpolation const array_node_side_cover_translation_x_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_side_cover_translation_x_sampler = { + // node_side_cover_translation_x_input + .input = { + .float_array = array_node_side_cover_translation_x_input_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_translation_x_output + .output = { + .float_array = array_node_side_cover_translation_x_output_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_translation_x_intangent + .in_tangent = { + .float_array = array_node_side_cover_translation_x_intangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_translation_x_outtangent + .out_tangent = { + .float_array = array_node_side_cover_translation_x_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_translation_x_interpolation + .interpolation = { + .interpolation_array = array_node_side_cover_translation_x_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_side_cover_translation_y_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_side_cover_translation_y_output_array[] = { + -0.2942449, + -0.2942449, +}; + +float const array_node_side_cover_translation_y_intangent_array[] = { + -0.3332639, -0.2942449, + 1.194444, -0.2942449, +}; + +float const array_node_side_cover_translation_y_outtangent_array[] = { + 0.5972222, -0.2942449, + 2.124931, -0.2942449, +}; + +enum interpolation const array_node_side_cover_translation_y_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_side_cover_translation_y_sampler = { + // node_side_cover_translation_y_input + .input = { + .float_array = array_node_side_cover_translation_y_input_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_translation_y_output + .output = { + .float_array = array_node_side_cover_translation_y_output_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_translation_y_intangent + .in_tangent = { + .float_array = array_node_side_cover_translation_y_intangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_translation_y_outtangent + .out_tangent = { + .float_array = array_node_side_cover_translation_y_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_translation_y_interpolation + .interpolation = { + .interpolation_array = array_node_side_cover_translation_y_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_side_cover_translation_z_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_side_cover_translation_z_output_array[] = { + -0.1360549, + -0.1360549, +}; + +float const array_node_side_cover_translation_z_intangent_array[] = { + -0.3332639, -0.1360549, + 1.194444, -0.1360549, +}; + +float const array_node_side_cover_translation_z_outtangent_array[] = { + 0.5972222, -0.1360549, + 2.124931, -0.1360549, +}; + +enum interpolation const array_node_side_cover_translation_z_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_side_cover_translation_z_sampler = { + // node_side_cover_translation_z_input + .input = { + .float_array = array_node_side_cover_translation_z_input_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_translation_z_output + .output = { + .float_array = array_node_side_cover_translation_z_output_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_translation_z_intangent + .in_tangent = { + .float_array = array_node_side_cover_translation_z_intangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_translation_z_outtangent + .out_tangent = { + .float_array = array_node_side_cover_translation_z_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_translation_z_interpolation + .interpolation = { + .interpolation_array = array_node_side_cover_translation_z_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_side_cover_rotationz_angle_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_side_cover_rotationz_angle_output_array[] = { + 180.0, + 180.0, +}; + +float const array_node_side_cover_rotationz_angle_intangent_array[] = { + -0.3332639, 180.0, + 1.194444, 180.0, +}; + +float const array_node_side_cover_rotationz_angle_outtangent_array[] = { + 0.5972222, 180.0, + 2.124931, 180.0, +}; + +enum interpolation const array_node_side_cover_rotationz_angle_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_side_cover_rotationz_angle_sampler = { + // node_side_cover_rotationz_angle_input + .input = { + .float_array = array_node_side_cover_rotationz_angle_input_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_rotationz_angle_output + .output = { + .float_array = array_node_side_cover_rotationz_angle_output_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_rotationz_angle_intangent + .in_tangent = { + .float_array = array_node_side_cover_rotationz_angle_intangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_rotationz_angle_outtangent + .out_tangent = { + .float_array = array_node_side_cover_rotationz_angle_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_rotationz_angle_interpolation + .interpolation = { + .interpolation_array = array_node_side_cover_rotationz_angle_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_side_cover_rotationy_angle_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_side_cover_rotationy_angle_output_array[] = { + 0.0, + 0.0, +}; + +float const array_node_side_cover_rotationy_angle_intangent_array[] = { + -0.3332639, 0.0, + 1.194444, 0.0, +}; + +float const array_node_side_cover_rotationy_angle_outtangent_array[] = { + 0.5972222, 0.0, + 2.124931, 0.0, +}; + +enum interpolation const array_node_side_cover_rotationy_angle_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_side_cover_rotationy_angle_sampler = { + // node_side_cover_rotationy_angle_input + .input = { + .float_array = array_node_side_cover_rotationy_angle_input_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_rotationy_angle_output + .output = { + .float_array = array_node_side_cover_rotationy_angle_output_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_rotationy_angle_intangent + .in_tangent = { + .float_array = array_node_side_cover_rotationy_angle_intangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_rotationy_angle_outtangent + .out_tangent = { + .float_array = array_node_side_cover_rotationy_angle_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_rotationy_angle_interpolation + .interpolation = { + .interpolation_array = array_node_side_cover_rotationy_angle_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_side_cover_rotationx_angle_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_side_cover_rotationx_angle_output_array[] = { + 90.00001, + 90.00001, +}; + +float const array_node_side_cover_rotationx_angle_intangent_array[] = { + -0.3332639, 90.00001, + 1.194444, 90.00001, +}; + +float const array_node_side_cover_rotationx_angle_outtangent_array[] = { + 0.5972222, 90.00001, + 2.124931, 90.00001, +}; + +enum interpolation const array_node_side_cover_rotationx_angle_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_side_cover_rotationx_angle_sampler = { + // node_side_cover_rotationx_angle_input + .input = { + .float_array = array_node_side_cover_rotationx_angle_input_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_rotationx_angle_output + .output = { + .float_array = array_node_side_cover_rotationx_angle_output_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_rotationx_angle_intangent + .in_tangent = { + .float_array = array_node_side_cover_rotationx_angle_intangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_rotationx_angle_outtangent + .out_tangent = { + .float_array = array_node_side_cover_rotationx_angle_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_rotationx_angle_interpolation + .interpolation = { + .interpolation_array = array_node_side_cover_rotationx_angle_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_side_cover_scale_x_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_side_cover_scale_x_output_array[] = { + 1.0, + 1.0, +}; + +float const array_node_side_cover_scale_x_intangent_array[] = { + -0.3332639, 1.0, + 1.194444, 1.0, +}; + +float const array_node_side_cover_scale_x_outtangent_array[] = { + 0.5972222, 1.0, + 2.124931, 1.0, +}; + +enum interpolation const array_node_side_cover_scale_x_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_side_cover_scale_x_sampler = { + // node_side_cover_scale_x_input + .input = { + .float_array = array_node_side_cover_scale_x_input_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_scale_x_output + .output = { + .float_array = array_node_side_cover_scale_x_output_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_scale_x_intangent + .in_tangent = { + .float_array = array_node_side_cover_scale_x_intangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_scale_x_outtangent + .out_tangent = { + .float_array = array_node_side_cover_scale_x_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_scale_x_interpolation + .interpolation = { + .interpolation_array = array_node_side_cover_scale_x_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_side_cover_scale_y_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_side_cover_scale_y_output_array[] = { + 1.0, + 1.0, +}; + +float const array_node_side_cover_scale_y_intangent_array[] = { + -0.3332639, 1.0, + 1.194444, 1.0, +}; + +float const array_node_side_cover_scale_y_outtangent_array[] = { + 0.5972222, 1.0, + 2.124931, 1.0, +}; + +enum interpolation const array_node_side_cover_scale_y_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_side_cover_scale_y_sampler = { + // node_side_cover_scale_y_input + .input = { + .float_array = array_node_side_cover_scale_y_input_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_scale_y_output + .output = { + .float_array = array_node_side_cover_scale_y_output_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_scale_y_intangent + .in_tangent = { + .float_array = array_node_side_cover_scale_y_intangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_scale_y_outtangent + .out_tangent = { + .float_array = array_node_side_cover_scale_y_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_scale_y_interpolation + .interpolation = { + .interpolation_array = array_node_side_cover_scale_y_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_side_cover_scale_z_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_side_cover_scale_z_output_array[] = { + 1.0, + 1.0, +}; + +float const array_node_side_cover_scale_z_intangent_array[] = { + -0.3332639, 1.0, + 1.194444, 1.0, +}; + +float const array_node_side_cover_scale_z_outtangent_array[] = { + 0.5972222, 1.0, + 2.124931, 1.0, +}; + +enum interpolation const array_node_side_cover_scale_z_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_side_cover_scale_z_sampler = { + // node_side_cover_scale_z_input + .input = { + .float_array = array_node_side_cover_scale_z_input_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_scale_z_output + .output = { + .float_array = array_node_side_cover_scale_z_output_array, + .count = 2, + .stride = 1, + }, + // node_side_cover_scale_z_intangent + .in_tangent = { + .float_array = array_node_side_cover_scale_z_intangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_scale_z_outtangent + .out_tangent = { + .float_array = array_node_side_cover_scale_z_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_side_cover_scale_z_interpolation + .interpolation = { + .interpolation_array = array_node_side_cover_scale_z_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_top_cover_translation_x_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_top_cover_translation_x_output_array[] = { + -0.04051036, + -0.04051036, +}; + +float const array_node_top_cover_translation_x_intangent_array[] = { + -0.3332639, -0.04051036, + 1.194444, -0.04051036, +}; + +float const array_node_top_cover_translation_x_outtangent_array[] = { + 0.5972222, -0.04051036, + 2.124931, -0.04051036, +}; + +enum interpolation const array_node_top_cover_translation_x_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_top_cover_translation_x_sampler = { + // node_top_cover_translation_x_input + .input = { + .float_array = array_node_top_cover_translation_x_input_array, + .count = 2, + .stride = 1, + }, + // node_top_cover_translation_x_output + .output = { + .float_array = array_node_top_cover_translation_x_output_array, + .count = 2, + .stride = 1, + }, + // node_top_cover_translation_x_intangent + .in_tangent = { + .float_array = array_node_top_cover_translation_x_intangent_array, + .count = 2, + .stride = 2, + }, + // node_top_cover_translation_x_outtangent + .out_tangent = { + .float_array = array_node_top_cover_translation_x_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_top_cover_translation_x_interpolation + .interpolation = { + .interpolation_array = array_node_top_cover_translation_x_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_top_cover_translation_y_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_top_cover_translation_y_output_array[] = { + -0.2942449, + -0.2942449, +}; + +float const array_node_top_cover_translation_y_intangent_array[] = { + -0.3332639, -0.2942449, + 1.194444, -0.2942449, +}; + +float const array_node_top_cover_translation_y_outtangent_array[] = { + 0.5972222, -0.2942449, + 2.124931, -0.2942449, +}; + +enum interpolation const array_node_top_cover_translation_y_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_top_cover_translation_y_sampler = { + // node_top_cover_translation_y_input + .input = { + .float_array = array_node_top_cover_translation_y_input_array, + .count = 2, + .stride = 1, + }, + // node_top_cover_translation_y_output + .output = { + .float_array = array_node_top_cover_translation_y_output_array, + .count = 2, + .stride = 1, + }, + // node_top_cover_translation_y_intangent + .in_tangent = { + .float_array = array_node_top_cover_translation_y_intangent_array, + .count = 2, + .stride = 2, + }, + // node_top_cover_translation_y_outtangent + .out_tangent = { + .float_array = array_node_top_cover_translation_y_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_top_cover_translation_y_interpolation + .interpolation = { + .interpolation_array = array_node_top_cover_translation_y_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_top_cover_translation_z_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_top_cover_translation_z_output_array[] = { + 0.3174614, + 0.3174614, +}; + +float const array_node_top_cover_translation_z_intangent_array[] = { + -0.3332639, 0.3174614, + 1.194444, 0.3174614, +}; + +float const array_node_top_cover_translation_z_outtangent_array[] = { + 0.5972222, 0.3174614, + 2.124931, 0.3174614, +}; + +enum interpolation const array_node_top_cover_translation_z_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_top_cover_translation_z_sampler = { + // node_top_cover_translation_z_input + .input = { + .float_array = array_node_top_cover_translation_z_input_array, + .count = 2, + .stride = 1, + }, + // node_top_cover_translation_z_output + .output = { + .float_array = array_node_top_cover_translation_z_output_array, + .count = 2, + .stride = 1, + }, + // node_top_cover_translation_z_intangent + .in_tangent = { + .float_array = array_node_top_cover_translation_z_intangent_array, + .count = 2, + .stride = 2, + }, + // node_top_cover_translation_z_outtangent + .out_tangent = { + .float_array = array_node_top_cover_translation_z_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_top_cover_translation_z_interpolation + .interpolation = { + .interpolation_array = array_node_top_cover_translation_z_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_top_cover_rotationz_angle_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_top_cover_rotationz_angle_output_array[] = { + -5.9515e-15, + -5.9515e-15, +}; + +float const array_node_top_cover_rotationz_angle_intangent_array[] = { + -0.3332639, -5.9515e-15, + 1.194444, -5.9515e-15, +}; + +float const array_node_top_cover_rotationz_angle_outtangent_array[] = { + 0.5972222, -5.9515e-15, + 2.124931, -5.9515e-15, +}; + +enum interpolation const array_node_top_cover_rotationz_angle_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_top_cover_rotationz_angle_sampler = { + // node_top_cover_rotationz_angle_input + .input = { + .float_array = array_node_top_cover_rotationz_angle_input_array, + .count = 2, + .stride = 1, + }, + // node_top_cover_rotationz_angle_output + .output = { + .float_array = array_node_top_cover_rotationz_angle_output_array, + .count = 2, + .stride = 1, + }, + // node_top_cover_rotationz_angle_intangent + .in_tangent = { + .float_array = array_node_top_cover_rotationz_angle_intangent_array, + .count = 2, + .stride = 2, + }, + // node_top_cover_rotationz_angle_outtangent + .out_tangent = { + .float_array = array_node_top_cover_rotationz_angle_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_top_cover_rotationz_angle_interpolation + .interpolation = { + .interpolation_array = array_node_top_cover_rotationz_angle_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_top_cover_rotationy_angle_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_top_cover_rotationy_angle_output_array[] = { + 180.0, + 180.0, +}; + +float const array_node_top_cover_rotationy_angle_intangent_array[] = { + -0.3332639, 180.0, + 1.194444, 180.0, +}; + +float const array_node_top_cover_rotationy_angle_outtangent_array[] = { + 0.5972222, 180.0, + 2.124931, 180.0, +}; + +enum interpolation const array_node_top_cover_rotationy_angle_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_top_cover_rotationy_angle_sampler = { + // node_top_cover_rotationy_angle_input + .input = { + .float_array = array_node_top_cover_rotationy_angle_input_array, + .count = 2, + .stride = 1, + }, + // node_top_cover_rotationy_angle_output + .output = { + .float_array = array_node_top_cover_rotationy_angle_output_array, + .count = 2, + .stride = 1, + }, + // node_top_cover_rotationy_angle_intangent + .in_tangent = { + .float_array = array_node_top_cover_rotationy_angle_intangent_array, + .count = 2, + .stride = 2, + }, + // node_top_cover_rotationy_angle_outtangent + .out_tangent = { + .float_array = array_node_top_cover_rotationy_angle_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_top_cover_rotationy_angle_interpolation + .interpolation = { + .interpolation_array = array_node_top_cover_rotationy_angle_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_top_cover_rotationx_angle_input_array[] = { + 0.0, + 0.04166667, + 0.08333334, + 0.125, + 0.1666667, + 0.2083333, + 0.25, + 0.2916667, + 0.3333333, + 0.375, + 0.4166667, + 0.4583333, + 0.5, + 0.5416667, + 0.5833333, + 0.625, + 0.6666667, + 0.7083334, + 0.75, + 0.7916667, + 0.8333334, + 0.875, + 0.9166667, + 0.9583334, + 1.0, + 1.041667, + 1.083333, + 1.125, + 1.166667, + 1.208333, + 1.25, + 1.291667, + 1.333333, + 1.375, + 1.416667, + 1.458333, + 1.5, + 1.541667, + 1.583333, + 1.625, + 1.666667, + 1.708333, + 1.75, + 1.791667, +}; + +float const array_node_top_cover_rotationx_angle_output_array[] = { + -4.999999, + -8.600581, + -17.88629, + -30.58308, + -44.41691, + -57.1137, + -66.39941, + -70.0, + -67.20704, + -59.84376, + -49.43359, + -37.5, + -25.5664, + -15.15625, + -7.792964, + -4.999999, + -8.60058, + -17.88629, + -30.58309, + -44.41691, + -57.1137, + -66.39942, + -70.0, + -67.20703, + -59.84375, + -49.43359, + -37.5, + -25.5664, + -15.15625, + -7.792964, + -4.999999, + -8.600583, + -17.8863, + -30.58309, + -44.41691, + -57.1137, + -66.39941, + -70.0, + -65.18517, + -53.14815, + -37.5, + -21.85185, + -9.814812, + -4.999999, +}; + +float const array_node_top_cover_rotationx_angle_intangent_array[] = { + -0.3332639, -4.999999, + 0.02777778, -7.400387, + 0.06944445, -14.79106, + 0.1111111, -26.35082, + 0.1527778, -39.80564, + 0.1944444, -52.88144, + 0.2361111, -63.30417, + 0.2777778, -68.7998, + 0.3194444, -68.13802, + 0.3611111, -62.29819, + 0.4027778, -52.90365, + 0.4444444, -41.47787, + 0.4861111, -29.54427, + 0.5277778, -18.6263, + 0.5694445, -10.24739, + 0.6111111, -5.930987, + 0.6527778, -7.400387, + 0.6944445, -14.79106, + 0.7361111, -26.35082, + 0.7777778, -39.80564, + 0.8194445, -52.88144, + 0.8611111, -63.30418, + 0.9027778, -68.79981, + 0.9444445, -68.13802, + 0.9861112, -62.29818, + 1.027778, -52.90365, + 1.069444, -41.47787, + 1.111111, -29.54427, + 1.152778, -18.6263, + 1.194444, -10.24739, + 1.236111, -5.930987, + 1.277778, -7.400388, + 1.319444, -14.79106, + 1.361111, -26.35082, + 1.402778, -39.80564, + 1.444445, -52.88144, + 1.486111, -63.30417, + 1.527778, -68.7998, + 1.569445, -66.79012, + 1.611111, -57.16049, + 1.652778, -42.71605, + 1.694445, -27.0679, + 1.736111, -13.82716, + 1.777778, -6.604937, +}; + +float const array_node_top_cover_rotationx_angle_outtangent_array[] = { + 0.01388889, -6.200193, + 0.05555556, -11.69582, + 0.09722222, -22.11856, + 0.1388889, -35.19436, + 0.1805556, -48.64917, + 0.2222222, -60.20893, + 0.2638889, -67.59961, + 0.3055556, -69.06902, + 0.3472222, -64.75261, + 0.3888889, -56.3737, + 0.4305556, -45.45573, + 0.4722222, -33.52214, + 0.5138889, -22.09635, + 0.5555556, -12.70182, + 0.5972222, -6.861975, + 0.6388889, -6.200192, + 0.6805556, -11.69582, + 0.7222223, -22.11856, + 0.7638889, -35.19436, + 0.8055556, -48.64917, + 0.8472223, -60.20894, + 0.8888889, -67.59962, + 0.9305556, -69.06902, + 0.9722223, -64.7526, + 1.013889, -56.3737, + 1.055556, -45.45573, + 1.097222, -33.52214, + 1.138889, -22.09635, + 1.180556, -12.70182, + 1.222222, -6.861975, + 1.263889, -6.200193, + 1.305556, -11.69582, + 1.347222, -22.11856, + 1.388889, -35.19436, + 1.430556, -48.64917, + 1.472222, -60.20893, + 1.513889, -67.59961, + 1.555556, -68.39506, + 1.597222, -61.17283, + 1.638889, -47.9321, + 1.680556, -32.28395, + 1.722222, -17.8395, + 1.763889, -8.209874, + 2.124931, -4.999999, +}; + +enum interpolation const array_node_top_cover_rotationx_angle_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_top_cover_rotationx_angle_sampler = { + // node_top_cover_rotationx_angle_input + .input = { + .float_array = array_node_top_cover_rotationx_angle_input_array, + .count = 44, + .stride = 1, + }, + // node_top_cover_rotationx_angle_output + .output = { + .float_array = array_node_top_cover_rotationx_angle_output_array, + .count = 44, + .stride = 1, + }, + // node_top_cover_rotationx_angle_intangent + .in_tangent = { + .float_array = array_node_top_cover_rotationx_angle_intangent_array, + .count = 44, + .stride = 2, + }, + // node_top_cover_rotationx_angle_outtangent + .out_tangent = { + .float_array = array_node_top_cover_rotationx_angle_outtangent_array, + .count = 44, + .stride = 2, + }, + // node_top_cover_rotationx_angle_interpolation + .interpolation = { + .interpolation_array = array_node_top_cover_rotationx_angle_interpolation_array, + .count = 44, + .stride = 1, + }, +}; + +float const array_node_top_cover_scale_x_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_top_cover_scale_x_output_array[] = { + 1.0, + 1.0, +}; + +float const array_node_top_cover_scale_x_intangent_array[] = { + -0.3332639, 1.0, + 1.194444, 1.0, +}; + +float const array_node_top_cover_scale_x_outtangent_array[] = { + 0.5972222, 1.0, + 2.124931, 1.0, +}; + +enum interpolation const array_node_top_cover_scale_x_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_top_cover_scale_x_sampler = { + // node_top_cover_scale_x_input + .input = { + .float_array = array_node_top_cover_scale_x_input_array, + .count = 2, + .stride = 1, + }, + // node_top_cover_scale_x_output + .output = { + .float_array = array_node_top_cover_scale_x_output_array, + .count = 2, + .stride = 1, + }, + // node_top_cover_scale_x_intangent + .in_tangent = { + .float_array = array_node_top_cover_scale_x_intangent_array, + .count = 2, + .stride = 2, + }, + // node_top_cover_scale_x_outtangent + .out_tangent = { + .float_array = array_node_top_cover_scale_x_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_top_cover_scale_x_interpolation + .interpolation = { + .interpolation_array = array_node_top_cover_scale_x_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_top_cover_scale_y_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_top_cover_scale_y_output_array[] = { + 1.0, + 1.0, +}; + +float const array_node_top_cover_scale_y_intangent_array[] = { + -0.3332639, 1.0, + 1.194444, 1.0, +}; + +float const array_node_top_cover_scale_y_outtangent_array[] = { + 0.5972222, 1.0, + 2.124931, 1.0, +}; + +enum interpolation const array_node_top_cover_scale_y_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_top_cover_scale_y_sampler = { + // node_top_cover_scale_y_input + .input = { + .float_array = array_node_top_cover_scale_y_input_array, + .count = 2, + .stride = 1, + }, + // node_top_cover_scale_y_output + .output = { + .float_array = array_node_top_cover_scale_y_output_array, + .count = 2, + .stride = 1, + }, + // node_top_cover_scale_y_intangent + .in_tangent = { + .float_array = array_node_top_cover_scale_y_intangent_array, + .count = 2, + .stride = 2, + }, + // node_top_cover_scale_y_outtangent + .out_tangent = { + .float_array = array_node_top_cover_scale_y_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_top_cover_scale_y_interpolation + .interpolation = { + .interpolation_array = array_node_top_cover_scale_y_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +float const array_node_top_cover_scale_z_input_array[] = { + 0.0, + 1.791667, +}; + +float const array_node_top_cover_scale_z_output_array[] = { + 1.0, + 1.0, +}; + +float const array_node_top_cover_scale_z_intangent_array[] = { + -0.3332639, 1.0, + 1.194444, 1.0, +}; + +float const array_node_top_cover_scale_z_outtangent_array[] = { + 0.5972222, 1.0, + 2.124931, 1.0, +}; + +enum interpolation const array_node_top_cover_scale_z_interpolation_array[] = { + interpolation::LINEAR, + interpolation::LINEAR, +}; + +sampler const sampler_node_top_cover_scale_z_sampler = { + // node_top_cover_scale_z_input + .input = { + .float_array = array_node_top_cover_scale_z_input_array, + .count = 2, + .stride = 1, + }, + // node_top_cover_scale_z_output + .output = { + .float_array = array_node_top_cover_scale_z_output_array, + .count = 2, + .stride = 1, + }, + // node_top_cover_scale_z_intangent + .in_tangent = { + .float_array = array_node_top_cover_scale_z_intangent_array, + .count = 2, + .stride = 2, + }, + // node_top_cover_scale_z_outtangent + .out_tangent = { + .float_array = array_node_top_cover_scale_z_outtangent_array, + .count = 2, + .stride = 2, + }, + // node_top_cover_scale_z_interpolation + .interpolation = { + .interpolation_array = array_node_top_cover_scale_z_interpolation_array, + .count = 2, + .stride = 1, + }, +}; + +channel const node_channel_node_root_bone_translation_x = { + .source_sampler = &sampler_node_root_bone_translation_x_sampler, + .target_transform_index = 0, + .target_attribute = target_attribute::X, +}; + +channel const node_channel_node_root_bone_translation_y = { + .source_sampler = &sampler_node_root_bone_translation_y_sampler, + .target_transform_index = 0, + .target_attribute = target_attribute::Y, +}; + +channel const node_channel_node_root_bone_translation_z = { + .source_sampler = &sampler_node_root_bone_translation_z_sampler, + .target_transform_index = 0, + .target_attribute = target_attribute::Z, +}; + +channel const node_channel_node_root_bone_rotationz_angle = { + .source_sampler = &sampler_node_root_bone_rotationz_angle_sampler, + .target_transform_index = 1, + .target_attribute = target_attribute::ANGLE, +}; + +channel const node_channel_node_root_bone_rotationy_angle = { + .source_sampler = &sampler_node_root_bone_rotationy_angle_sampler, + .target_transform_index = 2, + .target_attribute = target_attribute::ANGLE, +}; + +channel const node_channel_node_root_bone_rotationx_angle = { + .source_sampler = &sampler_node_root_bone_rotationx_angle_sampler, + .target_transform_index = 3, + .target_attribute = target_attribute::ANGLE, +}; + +channel const node_channel_node_root_bone_scale_x = { + .source_sampler = &sampler_node_root_bone_scale_x_sampler, + .target_transform_index = 4, + .target_attribute = target_attribute::X, +}; + +channel const node_channel_node_root_bone_scale_y = { + .source_sampler = &sampler_node_root_bone_scale_y_sampler, + .target_transform_index = 4, + .target_attribute = target_attribute::Y, +}; + +channel const node_channel_node_root_bone_scale_z = { + .source_sampler = &sampler_node_root_bone_scale_z_sampler, + .target_transform_index = 4, + .target_attribute = target_attribute::Z, +}; + +channel const node_channel_node_bottom_cover_translation_x = { + .source_sampler = &sampler_node_bottom_cover_translation_x_sampler, + .target_transform_index = 0, + .target_attribute = target_attribute::X, +}; + +channel const node_channel_node_bottom_cover_translation_y = { + .source_sampler = &sampler_node_bottom_cover_translation_y_sampler, + .target_transform_index = 0, + .target_attribute = target_attribute::Y, +}; + +channel const node_channel_node_bottom_cover_translation_z = { + .source_sampler = &sampler_node_bottom_cover_translation_z_sampler, + .target_transform_index = 0, + .target_attribute = target_attribute::Z, +}; + +channel const node_channel_node_bottom_cover_rotationz_angle = { + .source_sampler = &sampler_node_bottom_cover_rotationz_angle_sampler, + .target_transform_index = 1, + .target_attribute = target_attribute::ANGLE, +}; + +channel const node_channel_node_bottom_cover_rotationy_angle = { + .source_sampler = &sampler_node_bottom_cover_rotationy_angle_sampler, + .target_transform_index = 2, + .target_attribute = target_attribute::ANGLE, +}; + +channel const node_channel_node_bottom_cover_rotationx_angle = { + .source_sampler = &sampler_node_bottom_cover_rotationx_angle_sampler, + .target_transform_index = 3, + .target_attribute = target_attribute::ANGLE, +}; + +channel const node_channel_node_bottom_cover_scale_x = { + .source_sampler = &sampler_node_bottom_cover_scale_x_sampler, + .target_transform_index = 4, + .target_attribute = target_attribute::X, +}; + +channel const node_channel_node_bottom_cover_scale_y = { + .source_sampler = &sampler_node_bottom_cover_scale_y_sampler, + .target_transform_index = 4, + .target_attribute = target_attribute::Y, +}; + +channel const node_channel_node_bottom_cover_scale_z = { + .source_sampler = &sampler_node_bottom_cover_scale_z_sampler, + .target_transform_index = 4, + .target_attribute = target_attribute::Z, +}; + +channel const node_channel_node_control_bone_translation_x = { + .source_sampler = &sampler_node_control_bone_translation_x_sampler, + .target_transform_index = 0, + .target_attribute = target_attribute::X, +}; + +channel const node_channel_node_control_bone_translation_y = { + .source_sampler = &sampler_node_control_bone_translation_y_sampler, + .target_transform_index = 0, + .target_attribute = target_attribute::Y, +}; + +channel const node_channel_node_control_bone_translation_z = { + .source_sampler = &sampler_node_control_bone_translation_z_sampler, + .target_transform_index = 0, + .target_attribute = target_attribute::Z, +}; + +channel const node_channel_node_control_bone_rotationz_angle = { + .source_sampler = &sampler_node_control_bone_rotationz_angle_sampler, + .target_transform_index = 1, + .target_attribute = target_attribute::ANGLE, +}; + +channel const node_channel_node_control_bone_rotationy_angle = { + .source_sampler = &sampler_node_control_bone_rotationy_angle_sampler, + .target_transform_index = 2, + .target_attribute = target_attribute::ANGLE, +}; + +channel const node_channel_node_control_bone_rotationx_angle = { + .source_sampler = &sampler_node_control_bone_rotationx_angle_sampler, + .target_transform_index = 3, + .target_attribute = target_attribute::ANGLE, +}; + +channel const node_channel_node_control_bone_scale_x = { + .source_sampler = &sampler_node_control_bone_scale_x_sampler, + .target_transform_index = 4, + .target_attribute = target_attribute::X, +}; + +channel const node_channel_node_control_bone_scale_y = { + .source_sampler = &sampler_node_control_bone_scale_y_sampler, + .target_transform_index = 4, + .target_attribute = target_attribute::Y, +}; + +channel const node_channel_node_control_bone_scale_z = { + .source_sampler = &sampler_node_control_bone_scale_z_sampler, + .target_transform_index = 4, + .target_attribute = target_attribute::Z, +}; + +channel const node_channel_node_side_cover_translation_x = { + .source_sampler = &sampler_node_side_cover_translation_x_sampler, + .target_transform_index = 0, + .target_attribute = target_attribute::X, +}; + +channel const node_channel_node_side_cover_translation_y = { + .source_sampler = &sampler_node_side_cover_translation_y_sampler, + .target_transform_index = 0, + .target_attribute = target_attribute::Y, +}; + +channel const node_channel_node_side_cover_translation_z = { + .source_sampler = &sampler_node_side_cover_translation_z_sampler, + .target_transform_index = 0, + .target_attribute = target_attribute::Z, +}; + +channel const node_channel_node_side_cover_rotationz_angle = { + .source_sampler = &sampler_node_side_cover_rotationz_angle_sampler, + .target_transform_index = 1, + .target_attribute = target_attribute::ANGLE, +}; + +channel const node_channel_node_side_cover_rotationy_angle = { + .source_sampler = &sampler_node_side_cover_rotationy_angle_sampler, + .target_transform_index = 2, + .target_attribute = target_attribute::ANGLE, +}; + +channel const node_channel_node_side_cover_rotationx_angle = { + .source_sampler = &sampler_node_side_cover_rotationx_angle_sampler, + .target_transform_index = 3, + .target_attribute = target_attribute::ANGLE, +}; + +channel const node_channel_node_side_cover_scale_x = { + .source_sampler = &sampler_node_side_cover_scale_x_sampler, + .target_transform_index = 4, + .target_attribute = target_attribute::X, +}; + +channel const node_channel_node_side_cover_scale_y = { + .source_sampler = &sampler_node_side_cover_scale_y_sampler, + .target_transform_index = 4, + .target_attribute = target_attribute::Y, +}; + +channel const node_channel_node_side_cover_scale_z = { + .source_sampler = &sampler_node_side_cover_scale_z_sampler, + .target_transform_index = 4, + .target_attribute = target_attribute::Z, +}; + +channel const node_channel_node_top_cover_translation_x = { + .source_sampler = &sampler_node_top_cover_translation_x_sampler, + .target_transform_index = 0, + .target_attribute = target_attribute::X, +}; + +channel const node_channel_node_top_cover_translation_y = { + .source_sampler = &sampler_node_top_cover_translation_y_sampler, + .target_transform_index = 0, + .target_attribute = target_attribute::Y, +}; + +channel const node_channel_node_top_cover_translation_z = { + .source_sampler = &sampler_node_top_cover_translation_z_sampler, + .target_transform_index = 0, + .target_attribute = target_attribute::Z, +}; + +channel const node_channel_node_top_cover_rotationz_angle = { + .source_sampler = &sampler_node_top_cover_rotationz_angle_sampler, + .target_transform_index = 1, + .target_attribute = target_attribute::ANGLE, +}; + +channel const node_channel_node_top_cover_rotationy_angle = { + .source_sampler = &sampler_node_top_cover_rotationy_angle_sampler, + .target_transform_index = 2, + .target_attribute = target_attribute::ANGLE, +}; + +channel const node_channel_node_top_cover_rotationx_angle = { + .source_sampler = &sampler_node_top_cover_rotationx_angle_sampler, + .target_transform_index = 3, + .target_attribute = target_attribute::ANGLE, +}; + +channel const node_channel_node_top_cover_scale_x = { + .source_sampler = &sampler_node_top_cover_scale_x_sampler, + .target_transform_index = 4, + .target_attribute = target_attribute::X, +}; + +channel const node_channel_node_top_cover_scale_y = { + .source_sampler = &sampler_node_top_cover_scale_y_sampler, + .target_transform_index = 4, + .target_attribute = target_attribute::Y, +}; + +channel const node_channel_node_top_cover_scale_z = { + .source_sampler = &sampler_node_top_cover_scale_z_sampler, + .target_transform_index = 4, + .target_attribute = target_attribute::Z, +}; + +image const * const images[] = { +}; + +effect const effect_material_003 = { + .type = effect_type::PHONG, + .phong = { + .emission = { + .type = color_or_texture_type::COLOR, + .color = {0.0f, 0.0f, 0.0f, 1.0f}, + }, + .ambient = { + .type = color_or_texture_type::COLOR, + .color = {0.0f, 0.0f, 0.0f, 1.0f}, + }, + .diffuse = { + .type = color_or_texture_type::COLOR, + .color = {0.03878482f, 0.04486225f, 0.8000157f, 1.0f}, + }, + .specular = { + .type = color_or_texture_type::COLOR, + .color = {0.009696205f, 0.01121556f, 0.2000039f, 1.0f}, + }, + .shininess = 46.43856f, + .reflective = { + .type = color_or_texture_type::COLOR, + .color = {0.0f, 0.0f, 0.0f, 1.0f}, + }, + .reflectivity = 0.0f, + .transparent = { + .type = color_or_texture_type::COLOR, + .color = {1.0f, 1.0f, 1.0f, 1.0f}, + }, + .transparency = 1.0f, + .index_of_refraction = 0.0f, + } +}; + +effect const effect_material = { + .type = effect_type::PHONG, + .phong = { + .emission = { + .type = color_or_texture_type::COLOR, + .color = {0.0f, 0.0f, 0.0f, 1.0f}, + }, + .ambient = { + .type = color_or_texture_type::COLOR, + .color = {0.0f, 0.0f, 0.0f, 1.0f}, + }, + .diffuse = { + .type = color_or_texture_type::COLOR, + .color = {0.8f, 0.8f, 0.8f, 1.0f}, + }, + .specular = { + .type = color_or_texture_type::COLOR, + .color = {0.2f, 0.2f, 0.2f, 1.0f}, + }, + .shininess = 46.43856f, + .reflective = { + .type = color_or_texture_type::COLOR, + .color = {0.0f, 0.0f, 0.0f, 1.0f}, + }, + .reflectivity = 0.0f, + .transparent = { + .type = color_or_texture_type::COLOR, + .color = {1.0f, 1.0f, 1.0f, 1.0f}, + }, + .transparency = 1.0f, + .index_of_refraction = 0.0f, + } +}; + +material const material_material_003_material = { + .effect = &effect_material_003, +}; + +material const material_material_material = { + .effect = &effect_material, +}; + +input_element const input_elements_position_0_3_normal_0_3_texcoord_0_3[] = { + { + .semantic = "POSITION", + .semantic_index = 0, + .format = input_format::FLOAT3, + }, + { + .semantic = "NORMAL", + .semantic_index = 0, + .format = input_format::FLOAT3, + }, + { + .semantic = "TEXCOORD", + .semantic_index = 0, + .format = input_format::FLOAT3, + }, +}; + +triangles const triangles_geom_book[] = { + { + .count = 76, // triangles + .index_offset = 0, // indices + .inputs_index = 0, // index into inputs_list + }, + { + .count = 864, // triangles + .index_offset = 228, // indices + .inputs_index = 0, // index into inputs_list + }, +}; + +geometry const geometry_geom_book = { + .mesh = { + .triangles = triangles_geom_book, + .triangles_count = 2, + + .vertex_buffer_offset = 0, + .vertex_buffer_size = 21816, + + .index_buffer_offset = 0, + .index_buffer_size = 11280, + } +}; + +geometry const * const geometries[] = { + &geometry_geom_book, +}; + +matrix const inverse_bind_matrices_geom_book_skin1[] = { + { + 0.0254f, -1.11027e-09f, -6.05583e-09f, 0.0f, + 6.05583e-09f, 4.18402e-09f, 0.0254f, 0.0f, + -1.11027e-09f, -0.0254f, 4.18402e-09f, 0.0f, + 0.0405104f, 0.2942449f, 0.2216883f, 1.0f, + }, + { + 0.0254f, -1.11027e-09f, -6.05583e-09f, 0.0f, + 6.05583e-09f, 4.05173e-09f, 0.0254f, 0.0f, + -1.11027e-09f, -0.0254f, 4.05173e-09f, 0.0f, + 0.0405104f, 0.2942449f, 0.2216883f, 1.0f, + }, + { + 0.0254f, -1.11027e-09f, -6.05583e-09f, 0.0f, + 6.05583e-09f, 4.18453e-09f, 0.0254f, 0.0f, + -1.11027e-09f, -0.0254f, 4.18453e-09f, 0.0f, + -0.1620414f, 0.2942449f, 0.2216883f, 1.0f, + }, + { + -0.0254f, 3.394e-16f, 2.72502e-09f, 0.0f, + 5.45133e-16f, 0.0254f, 1.91765e-09f, 0.0f, + -2.72502e-09f, 1.91765e-09f, -0.0254f, 0.0f, + -0.04051031f, 0.2216883f, 0.2942449f, 1.0f, + }, + { + -0.0254f, -1.11027e-09f, 3.83529e-09f, 0.0f, + -3.83529e-09f, 1.91765e-09f, -0.0254f, 0.0f, + 1.11027e-09f, -0.0254f, -1.91765e-09f, 0.0f, + -0.04051032f, 0.2942449f, 0.231828f, 1.0f, + }, +}; + +controller const controller_geom_book_skin1 = { + .skin = { + .geometry = &geometry_geom_book, + + .bind_shape_matrix = { + -4.64649e-06f, 0.0f, -106.2992f, 0.0f, + -106.2992f, -1.73183e-05f, 4.64649e-06f, 0.0f, + -1.73183e-05f, 106.2992f, 7.57009e-13f, 0.0f, + -1.736628f, 0.2053121f, -6.005055f, 1.0f, + }, + .inverse_bind_matrices = inverse_bind_matrices_geom_book_skin1, + + .vertex_buffer_offset = 0, + .vertex_buffer_size = 19392, + } +}; + +transform const transforms_node_environmentambientlight[] = { +}; + +instance_geometry const instance_geometries_node_environmentambientlight[] = { +}; + +instance_controller const instance_controllers_node_environmentambientlight[] = { +}; + +instance_light const instance_lights_node_environmentambientlight[] = { + { + .light = &light_environmentambientlight, + } +}; + +channel const * const node_channels_node_environmentambientlight[] = { +}; + +node const node_node_environmentambientlight = { + .name = "EnvironmentAmbientLight", + + .parent_index = -1, + + .type = node_type::NODE, + + .transforms = transforms_node_environmentambientlight, + .transforms_count = 0, + + .instance_geometries = instance_geometries_node_environmentambientlight, + .instance_geometries_count = 0, + + .instance_controllers = instance_controllers_node_environmentambientlight, + .instance_controllers_count = 0, + + .instance_lights = instance_lights_node_environmentambientlight, + .instance_lights_count = 1, + + .channels = node_channels_node_environmentambientlight, + .channels_count = 0, +}; + +transform const transforms_node_armature[] = { + { + .type = transform_type::TRANSLATE, + .translate = {0.0f, -3.371394f, -4.44089e-16f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {1.0f, 2.22045e-16f, 0.0f, -89.99998f}, + }, + { + .type = transform_type::SCALE, + .scale = {39.37008f, 39.37008f, 39.37008f}, + }, +}; + +instance_geometry const instance_geometries_node_armature[] = { +}; + +instance_controller const instance_controllers_node_armature[] = { +}; + +instance_light const instance_lights_node_armature[] = { +}; + +channel const * const node_channels_node_armature[] = { +}; + +node const node_node_armature = { + .name = "Armature", + + .parent_index = -1, + + .type = node_type::NODE, + + .transforms = transforms_node_armature, + .transforms_count = 3, + + .instance_geometries = instance_geometries_node_armature, + .instance_geometries_count = 0, + + .instance_controllers = instance_controllers_node_armature, + .instance_controllers_count = 0, + + .instance_lights = instance_lights_node_armature, + .instance_lights_count = 0, + + .channels = node_channels_node_armature, + .channels_count = 0, +}; + +transform const transforms_node_root_bone[] = { + { + .type = transform_type::TRANSLATE, + .translate = {-0.04051036f, -0.2942448f, -0.1360549f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {0.0f, 0.0f, 1.0f, -1.21888e-12f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {0.0f, 1.0f, 0.0f, -1.36604e-05f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {1.0f, 0.0f, 0.0f, 5.11235e-06f}, + }, + { + .type = transform_type::SCALE, + .scale = {1.0f, 1.0f, 1.0f}, + }, +}; + +instance_geometry const instance_geometries_node_root_bone[] = { +}; + +instance_controller const instance_controllers_node_root_bone[] = { +}; + +instance_light const instance_lights_node_root_bone[] = { +}; + +channel const * const node_channels_node_root_bone[] = { + &node_channel_node_root_bone_scale_x, + &node_channel_node_root_bone_scale_y, + &node_channel_node_root_bone_translation_y, + &node_channel_node_root_bone_rotationy_angle, + &node_channel_node_root_bone_scale_z, + &node_channel_node_root_bone_translation_z, + &node_channel_node_root_bone_rotationx_angle, + &node_channel_node_root_bone_rotationz_angle, + &node_channel_node_root_bone_translation_x, +}; + +node const node_node_root_bone = { + .name = "root_bone", + + .parent_index = 1, + + .type = node_type::JOINT, + + .transforms = transforms_node_root_bone, + .transforms_count = 5, + + .instance_geometries = instance_geometries_node_root_bone, + .instance_geometries_count = 0, + + .instance_controllers = instance_controllers_node_root_bone, + .instance_controllers_count = 0, + + .instance_lights = instance_lights_node_root_bone, + .instance_lights_count = 0, + + .channels = node_channels_node_root_bone, + .channels_count = 9, +}; + +transform const transforms_node_root_bone_end[] = { + { + .type = transform_type::TRANSLATE, + .translate = {0.0f, 0.6680081f, 0.0f}, + }, +}; + +instance_geometry const instance_geometries_node_root_bone_end[] = { +}; + +instance_controller const instance_controllers_node_root_bone_end[] = { +}; + +instance_light const instance_lights_node_root_bone_end[] = { +}; + +channel const * const node_channels_node_root_bone_end[] = { +}; + +node const node_node_root_bone_end = { + .name = "root_bone_end", + + .parent_index = 2, + + .type = node_type::NODE, + + .transforms = transforms_node_root_bone_end, + .transforms_count = 1, + + .instance_geometries = instance_geometries_node_root_bone_end, + .instance_geometries_count = 0, + + .instance_controllers = instance_controllers_node_root_bone_end, + .instance_controllers_count = 0, + + .instance_lights = instance_lights_node_root_bone_end, + .instance_lights_count = 0, + + .channels = node_channels_node_root_bone_end, + .channels_count = 0, +}; + +transform const transforms_node_bottom_cover[] = { + { + .type = transform_type::TRANSLATE, + .translate = {-0.04051036f, -0.2942448f, -0.1360549f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {0.0f, 0.0f, 1.0f, -1.06867e-12f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {0.0f, 1.0f, 0.0f, -1.36604e-05f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {1.0f, 0.0f, 0.0f, -4.999998f}, + }, + { + .type = transform_type::SCALE, + .scale = {1.0f, 1.0f, 1.0f}, + }, +}; + +instance_geometry const instance_geometries_node_bottom_cover[] = { +}; + +instance_controller const instance_controllers_node_bottom_cover[] = { +}; + +instance_light const instance_lights_node_bottom_cover[] = { +}; + +channel const * const node_channels_node_bottom_cover[] = { + &node_channel_node_bottom_cover_scale_y, + &node_channel_node_bottom_cover_rotationz_angle, + &node_channel_node_bottom_cover_rotationx_angle, + &node_channel_node_bottom_cover_scale_x, + &node_channel_node_bottom_cover_translation_y, + &node_channel_node_bottom_cover_rotationy_angle, + &node_channel_node_bottom_cover_translation_x, + &node_channel_node_bottom_cover_translation_z, + &node_channel_node_bottom_cover_scale_z, +}; + +node const node_node_bottom_cover = { + .name = "bottom_cover", + + .parent_index = 1, + + .type = node_type::JOINT, + + .transforms = transforms_node_bottom_cover, + .transforms_count = 5, + + .instance_geometries = instance_geometries_node_bottom_cover, + .instance_geometries_count = 0, + + .instance_controllers = instance_controllers_node_bottom_cover, + .instance_controllers_count = 0, + + .instance_lights = instance_lights_node_bottom_cover, + .instance_lights_count = 0, + + .channels = node_channels_node_bottom_cover, + .channels_count = 9, +}; + +transform const transforms_node_bottom_cover_end[] = { + { + .type = transform_type::TRANSLATE, + .translate = {0.0f, 0.8867731f, -2.98023e-08f}, + }, +}; + +instance_geometry const instance_geometries_node_bottom_cover_end[] = { +}; + +instance_controller const instance_controllers_node_bottom_cover_end[] = { +}; + +instance_light const instance_lights_node_bottom_cover_end[] = { +}; + +channel const * const node_channels_node_bottom_cover_end[] = { +}; + +node const node_node_bottom_cover_end = { + .name = "bottom_cover_end", + + .parent_index = 4, + + .type = node_type::NODE, + + .transforms = transforms_node_bottom_cover_end, + .transforms_count = 1, + + .instance_geometries = instance_geometries_node_bottom_cover_end, + .instance_geometries_count = 0, + + .instance_controllers = instance_controllers_node_bottom_cover_end, + .instance_controllers_count = 0, + + .instance_lights = instance_lights_node_bottom_cover_end, + .instance_lights_count = 0, + + .channels = node_channels_node_bottom_cover_end, + .channels_count = 0, +}; + +transform const transforms_node_control_bone[] = { + { + .type = transform_type::TRANSLATE, + .translate = {0.1620414f, -0.2942448f, -0.1360549f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {0.0f, 0.0f, 1.0f, -1.21915e-12f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {0.0f, 1.0f, 0.0f, -1.36604e-05f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {1.0f, 0.0f, 0.0f, 5.1135e-06f}, + }, + { + .type = transform_type::SCALE, + .scale = {1.0f, 1.0f, 1.0f}, + }, +}; + +instance_geometry const instance_geometries_node_control_bone[] = { +}; + +instance_controller const instance_controllers_node_control_bone[] = { +}; + +instance_light const instance_lights_node_control_bone[] = { +}; + +channel const * const node_channels_node_control_bone[] = { + &node_channel_node_control_bone_translation_z, + &node_channel_node_control_bone_translation_y, + &node_channel_node_control_bone_scale_y, + &node_channel_node_control_bone_rotationz_angle, + &node_channel_node_control_bone_scale_z, + &node_channel_node_control_bone_rotationx_angle, + &node_channel_node_control_bone_scale_x, + &node_channel_node_control_bone_rotationy_angle, + &node_channel_node_control_bone_translation_x, +}; + +node const node_node_control_bone = { + .name = "control_bone", + + .parent_index = 1, + + .type = node_type::JOINT, + + .transforms = transforms_node_control_bone, + .transforms_count = 5, + + .instance_geometries = instance_geometries_node_control_bone, + .instance_geometries_count = 0, + + .instance_controllers = instance_controllers_node_control_bone, + .instance_controllers_count = 0, + + .instance_lights = instance_lights_node_control_bone, + .instance_lights_count = 0, + + .channels = node_channels_node_control_bone, + .channels_count = 9, +}; + +transform const transforms_node_control_bone_end[] = { + { + .type = transform_type::TRANSLATE, + .translate = {0.0f, 0.500894f, -1.49012e-08f}, + }, +}; + +instance_geometry const instance_geometries_node_control_bone_end[] = { +}; + +instance_controller const instance_controllers_node_control_bone_end[] = { +}; + +instance_light const instance_lights_node_control_bone_end[] = { +}; + +channel const * const node_channels_node_control_bone_end[] = { +}; + +node const node_node_control_bone_end = { + .name = "control_bone_end", + + .parent_index = 6, + + .type = node_type::NODE, + + .transforms = transforms_node_control_bone_end, + .transforms_count = 1, + + .instance_geometries = instance_geometries_node_control_bone_end, + .instance_geometries_count = 0, + + .instance_controllers = instance_controllers_node_control_bone_end, + .instance_controllers_count = 0, + + .instance_lights = instance_lights_node_control_bone_end, + .instance_lights_count = 0, + + .channels = node_channels_node_control_bone_end, + .channels_count = 0, +}; + +transform const transforms_node_side_cover[] = { + { + .type = transform_type::TRANSLATE, + .translate = {-0.04051036f, -0.2942448f, -0.1360549f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {0.0f, 0.0f, 1.0f, 180.0f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {0.0f, 1.0f, 0.0f, -8.14222e-13f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {1.0f, 0.0f, 0.0f, 90.00001f}, + }, + { + .type = transform_type::SCALE, + .scale = {1.0f, 1.0f, 1.0f}, + }, +}; + +instance_geometry const instance_geometries_node_side_cover[] = { +}; + +instance_controller const instance_controllers_node_side_cover[] = { +}; + +instance_light const instance_lights_node_side_cover[] = { +}; + +channel const * const node_channels_node_side_cover[] = { + &node_channel_node_side_cover_rotationy_angle, + &node_channel_node_side_cover_scale_x, + &node_channel_node_side_cover_translation_y, + &node_channel_node_side_cover_rotationz_angle, + &node_channel_node_side_cover_translation_x, + &node_channel_node_side_cover_rotationx_angle, + &node_channel_node_side_cover_scale_z, + &node_channel_node_side_cover_translation_z, + &node_channel_node_side_cover_scale_y, +}; + +node const node_node_side_cover = { + .name = "side_cover", + + .parent_index = 1, + + .type = node_type::JOINT, + + .transforms = transforms_node_side_cover, + .transforms_count = 5, + + .instance_geometries = instance_geometries_node_side_cover, + .instance_geometries_count = 0, + + .instance_controllers = instance_controllers_node_side_cover, + .instance_controllers_count = 0, + + .instance_lights = instance_lights_node_side_cover, + .instance_lights_count = 0, + + .channels = node_channels_node_side_cover, + .channels_count = 9, +}; + +transform const transforms_node_side_cover_end[] = { + { + .type = transform_type::TRANSLATE, + .translate = {0.0f, 0.4535162f, 0.0f}, + }, +}; + +instance_geometry const instance_geometries_node_side_cover_end[] = { +}; + +instance_controller const instance_controllers_node_side_cover_end[] = { +}; + +instance_light const instance_lights_node_side_cover_end[] = { +}; + +channel const * const node_channels_node_side_cover_end[] = { +}; + +node const node_node_side_cover_end = { + .name = "side_cover_end", + + .parent_index = 8, + + .type = node_type::NODE, + + .transforms = transforms_node_side_cover_end, + .transforms_count = 1, + + .instance_geometries = instance_geometries_node_side_cover_end, + .instance_geometries_count = 0, + + .instance_controllers = instance_controllers_node_side_cover_end, + .instance_controllers_count = 0, + + .instance_lights = instance_lights_node_side_cover_end, + .instance_lights_count = 0, + + .channels = node_channels_node_side_cover_end, + .channels_count = 0, +}; + +transform const transforms_node_top_cover[] = { + { + .type = transform_type::TRANSLATE, + .translate = {-0.04051036f, -0.2942449f, 0.3174614f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {0.0f, 0.0f, 1.0f, 180.0f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {0.0f, 1.0f, 0.0f, 2.23118e-05f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {1.0f, 0.0f, 0.0f, 175.0f}, + }, + { + .type = transform_type::SCALE, + .scale = {1.0f, 1.0f, 1.0f}, + }, +}; + +instance_geometry const instance_geometries_node_top_cover[] = { +}; + +instance_controller const instance_controllers_node_top_cover[] = { +}; + +instance_light const instance_lights_node_top_cover[] = { +}; + +channel const * const node_channels_node_top_cover[] = { + &node_channel_node_top_cover_translation_x, + &node_channel_node_top_cover_scale_z, + &node_channel_node_top_cover_scale_y, + &node_channel_node_top_cover_translation_z, + &node_channel_node_top_cover_rotationz_angle, + &node_channel_node_top_cover_scale_x, + &node_channel_node_top_cover_rotationx_angle, + &node_channel_node_top_cover_rotationy_angle, + &node_channel_node_top_cover_translation_y, +}; + +node const node_node_top_cover = { + .name = "top_cover", + + .parent_index = 1, + + .type = node_type::JOINT, + + .transforms = transforms_node_top_cover, + .transforms_count = 5, + + .instance_geometries = instance_geometries_node_top_cover, + .instance_geometries_count = 0, + + .instance_controllers = instance_controllers_node_top_cover, + .instance_controllers_count = 0, + + .instance_lights = instance_lights_node_top_cover, + .instance_lights_count = 0, + + .channels = node_channels_node_top_cover, + .channels_count = 9, +}; + +transform const transforms_node_top_cover_end[] = { + { + .type = transform_type::TRANSLATE, + .translate = {0.0f, 0.8867732f, 0.0f}, + }, +}; + +instance_geometry const instance_geometries_node_top_cover_end[] = { +}; + +instance_controller const instance_controllers_node_top_cover_end[] = { +}; + +instance_light const instance_lights_node_top_cover_end[] = { +}; + +channel const * const node_channels_node_top_cover_end[] = { +}; + +node const node_node_top_cover_end = { + .name = "top_cover_end", + + .parent_index = 10, + + .type = node_type::NODE, + + .transforms = transforms_node_top_cover_end, + .transforms_count = 1, + + .instance_geometries = instance_geometries_node_top_cover_end, + .instance_geometries_count = 0, + + .instance_controllers = instance_controllers_node_top_cover_end, + .instance_controllers_count = 0, + + .instance_lights = instance_lights_node_top_cover_end, + .instance_lights_count = 0, + + .channels = node_channels_node_top_cover_end, + .channels_count = 0, +}; + +transform const transforms_node_book[] = { +}; + +instance_geometry const instance_geometries_node_book[] = { +}; + +int const joint_node_indices_node_book_geom_book_skin1[] = { + 2, // joint0 node_root_bone + 4, // joint1 node_bottom_cover + 6, // joint2 node_control_bone + 8, // joint3 node_side_cover + 10, // joint4 node_top_cover +}; + +instance_material const instance_controller_instance_materials_node_book_0[] = { + { + .element_index = 1, // an index into mesh.triangles + .material = &material_material_material, + + .emission = { .input_set = -1 }, + .ambient = { .input_set = -1 }, + .diffuse = { .input_set = -1 }, + .specular = { .input_set = -1 }, + }, + { + .element_index = 0, // an index into mesh.triangles + .material = &material_material_003_material, + + .emission = { .input_set = -1 }, + .ambient = { .input_set = -1 }, + .diffuse = { .input_set = -1 }, + .specular = { .input_set = -1 }, + }, +}; + +instance_controller const instance_controllers_node_book[] = { + { + .controller = &controller_geom_book_skin1, + + .joint_node_indices = joint_node_indices_node_book_geom_book_skin1, + .joint_count = (sizeof (joint_node_indices_node_book_geom_book_skin1)) / (sizeof (int)), + + .instance_materials = instance_controller_instance_materials_node_book_0, + .instance_materials_count = 2, + }, +}; + +instance_light const instance_lights_node_book[] = { +}; + +channel const * const node_channels_node_book[] = { +}; + +node const node_node_book = { + .name = "Book", + + .parent_index = -1, + + .type = node_type::NODE, + + .transforms = transforms_node_book, + .transforms_count = 0, + + .instance_geometries = instance_geometries_node_book, + .instance_geometries_count = 0, + + .instance_controllers = instance_controllers_node_book, + .instance_controllers_count = 1, + + .instance_lights = instance_lights_node_book, + .instance_lights_count = 0, + + .channels = node_channels_node_book, + .channels_count = 0, +}; + +transform const transforms_node_camera[] = { + { + .type = transform_type::TRANSLATE, + .translate = {256.181f, -87.99197f, 70.63641f}, + }, + { + .type = transform_type::ROTATE, + .rotate = {-0.6239836f, -0.4714231f, -0.6232213f, -100.9618f}, + }, +}; + +instance_geometry const instance_geometries_node_camera[] = { +}; + +instance_controller const instance_controllers_node_camera[] = { +}; + +instance_light const instance_lights_node_camera[] = { +}; + +channel const * const node_channels_node_camera[] = { +}; + +node const node_node_camera = { + .name = "Camera", + + .parent_index = -1, + + .type = node_type::NODE, + + .transforms = transforms_node_camera, + .transforms_count = 2, + + .instance_geometries = instance_geometries_node_camera, + .instance_geometries_count = 0, + + .instance_controllers = instance_controllers_node_camera, + .instance_controllers_count = 0, + + .instance_lights = instance_lights_node_camera, + .instance_lights_count = 0, + + .channels = node_channels_node_camera, + .channels_count = 0, +}; + +node const * const nodes[] = { + &node_node_environmentambientlight, // 0 + &node_node_armature, // 1 + &node_node_root_bone, // 2 + &node_node_root_bone_end, // 3 + &node_node_bottom_cover, // 4 + &node_node_bottom_cover_end, // 5 + &node_node_control_bone, // 6 + &node_node_control_bone_end, // 7 + &node_node_side_cover, // 8 + &node_node_side_cover_end, // 9 + &node_node_top_cover, // 10 + &node_node_top_cover_end, // 11 + &node_node_book, // 12 + &node_node_camera, // 13 +}; + +inputs const inputs_list[] = { + { + .elements = input_elements_position_0_3_normal_0_3_texcoord_0_3, + .elements_count = 3, + }, +}; + +extern collada::types::descriptor const descriptor; + +collada::types::descriptor const descriptor = { + .nodes = nodes, + .nodes_count = (sizeof (nodes)) / (sizeof (nodes[0])), + + .inputs_list = inputs_list, + .inputs_list_count = (sizeof (inputs_list)) / (sizeof (inputs_list[0])), + + .images = images, + .images_count = (sizeof (images)) / (sizeof (images[0])), + + .position_normal_texture_buffer = "data/scenes/book/book.vtx", + .joint_weight_buffer = "data/scenes/book/book.vjw", + .index_buffer = "data/scenes/book/book.idx", +}; + +} diff --git a/data/scenes/book/book.idx b/data/scenes/book/book.idx new file mode 100644 index 0000000000000000000000000000000000000000..000b03a0a6b04d03b1c696c6027d61e7e8aa34d1 GIT binary patch literal 11280 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 literal 0 HcmV?d00001 diff --git a/data/scenes/book/book.vjw b/data/scenes/book/book.vjw new file mode 100644 index 0000000000000000000000000000000000000000..6d9e47bd36c204dcf2a57ed206ec27d59aa68710 GIT binary patch literal 19392 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 o_L^ t) { - return i; + return {i, i + 1}; } } - return -1; + return {source.count - 1, 0}; } - static inline float linear_interpolate_iv(types::source const& source, int frame_ix, float t) + static inline float linear_interpolate_iv(types::source const& source, frame_ix frame_ix, float t) { - float prev = source.float_array[(frame_ix+0) * source.stride]; - float next = source.float_array[(frame_ix+1) * source.stride]; + float prev = source.float_array[(frame_ix.f0) * source.stride]; + float next = source.float_array[(frame_ix.f1) * source.stride]; return (t - prev) / (next - prev); } - static inline float linear_interpolate_value(types::source const& source, int frame_ix, int parameter_ix, float iv) + static inline float linear_interpolate_value(types::source const& source, frame_ix frame_ix, int parameter_ix, float iv) { - float prev = source.float_array[(frame_ix+0) * source.stride + parameter_ix]; - float next = source.float_array[(frame_ix+1) * source.stride + parameter_ix]; + float prev = source.float_array[(frame_ix.f0) * source.stride + parameter_ix]; + float next = source.float_array[(frame_ix.f1) * source.stride + parameter_ix]; return prev + iv * (next - prev); } @@ -88,7 +93,7 @@ namespace collada::animate { return (XMFLOAT2 const *)&source.float_array[ix]; } - static float bezier_sampler(types::sampler const * const sampler, int frame_ix, int parameter_ix, float t) + static float bezier_sampler(types::sampler const * const sampler, frame_ix frame_ix, int parameter_ix, float t) { /* P0 is (INPUT[i] , OUTPUT[i]) @@ -97,15 +102,15 @@ namespace collada::animate { P1 is (INPUT[i+1], OUTPUT[i+1]) */ - float frame0_input = sampler->input.float_array[frame_ix+0]; - float frame1_input = sampler->input.float_array[frame_ix+1]; + float frame0_input = sampler->input.float_array[frame_ix.f0]; + float frame1_input = sampler->input.float_array[frame_ix.f1]; - float frame0_output = sampler->output.float_array[(frame_ix+0) * sampler->output.stride + parameter_ix]; - float frame1_output = sampler->output.float_array[(frame_ix+1) * sampler->output.stride + parameter_ix]; + float frame0_output = sampler->output.float_array[(frame_ix.f0) * sampler->output.stride + parameter_ix]; + float frame1_output = sampler->output.float_array[(frame_ix.f1) * sampler->output.stride + parameter_ix]; XMVECTOR p0 = XMVectorSet(frame0_input, frame0_output, 0, 0); - XMVECTOR c0 = XMLoadFloat2(tangent_index(sampler->out_tangent, frame_ix + 0, parameter_ix)); - XMVECTOR c1 = XMLoadFloat2(tangent_index(sampler->in_tangent, frame_ix + 1, parameter_ix)); + XMVECTOR c0 = XMLoadFloat2(tangent_index(sampler->out_tangent, frame_ix.f0, parameter_ix)); + XMVECTOR c1 = XMLoadFloat2(tangent_index(sampler->in_tangent, frame_ix.f1, parameter_ix)); XMVECTOR p1 = XMVectorSet(frame1_input, frame1_output, 0, 0); return bezier_binary_search(p0, c0, c1, p1, t); @@ -153,7 +158,7 @@ namespace collada::animate { static void animate_channel_segment(types::channel const& channel, instance_types::transform& transform, - int frame_ix, float t) + frame_ix frame_ix, float t) { enum types::target_attribute const * target_attributes = &channel.target_attribute; int target_attributes_count = 1; @@ -176,7 +181,7 @@ namespace collada::animate { for (int parameter_ix = 0; parameter_ix < target_attributes_count; parameter_ix++) { - enum types::interpolation interpolation = channel.source_sampler->interpolation.interpolation_array[frame_ix]; + enum types::interpolation interpolation = channel.source_sampler->interpolation.interpolation_array[frame_ix.f0]; float value; if (interpolation == types::interpolation::BEZIER) { @@ -196,8 +201,8 @@ namespace collada::animate { types::channel const& channel = *node_instance.node->channels[i]; instance_types::transform& transform = node_instance.transforms[channel.target_transform_index]; - int frame_ix = find_frame_ix(channel.source_sampler->input, t); - assert(frame_ix >= 0); // animation is missing a key frame + frame_ix frame_ix = find_frame_ix(channel.source_sampler->input, t); + //assert(frame_ix >= 0); // animation is missing a key frame animate_channel_segment(channel, transform, frame_ix, t); } diff --git a/src/collada/scene.cpp b/src/collada/scene.cpp index 5bc1532..2b79c3a 100644 --- a/src/collada/scene.cpp +++ b/src/collada/scene.cpp @@ -450,6 +450,8 @@ namespace collada::scene { types::instance_controller const &instance_controller = instance_controllers[i]; types::skin const &skin = instance_controller.controller->skin; + XMMATRIX bsm = XMLoadFloat4x4((XMFLOAT4X4*)&skin.bind_shape_matrix); + XMFLOAT4X4 joints[instance_controller.joint_count]; int joints_size = (sizeof (joints)); for (int joint_index = 0; joint_index < instance_controller.joint_count; joint_index++) { @@ -457,7 +459,7 @@ namespace collada::scene { int node_index = instance_controller.joint_node_indices[joint_index]; instance_types::node& node_instance = node_state.node_instances[node_index]; - XMStoreFloat4x4(&joints[joint_index], ibm * node_instance.world); + XMStoreFloat4x4(&joints[joint_index], bsm * ibm * node_instance.world); } glBindBuffer(GL_UNIFORM_BUFFER, joint_uniform_buffer); glBufferData(GL_UNIFORM_BUFFER, joints_size, (void *)&joints[0], GL_DYNAMIC_DRAW); @@ -520,7 +522,7 @@ namespace collada::scene { void state::update(float t) { - t = animate::loop(t / 4.0f, 3.333333f); + t = animate::loop(t / 4.0f, 1.8333333333333333f); for (int i = 0; i < descriptor->nodes_count; i++) { animate::animate_node(node_state.node_instances[i], t); diff --git a/src/test.cpp b/src/test.cpp index 0e1eab8..29bc501 100644 --- a/src/test.cpp +++ b/src/test.cpp @@ -29,6 +29,7 @@ #include "data/scenes/ship20.h" #include "data/scenes/noodle.h" #include "data/scenes/shadow_test.h" +#include "data/scenes/book.h" struct line_location { struct { @@ -309,11 +310,13 @@ void load(const char * source_path) ////////////////////////////////////////////////////////////////////// collada::effect::load_effects(); - scene_state.load_scene(&noodle::descriptor); - node_eye = scene_state.find_node_by_name("Camera001"); + scene_state.load_scene(&book::descriptor); + node_eye = scene_state.find_node_by_name("Camera"); assert(node_eye != nullptr); - node_at = scene_state.find_node_by_name("Camera001.Target"); - assert(node_at != nullptr); + //view::state.eye = XMVector3Transform(XMVectorZero(), node_eye->world); + + //node_at = scene_state.find_node_by_name("Camera001.Target"); + //assert(node_at != nullptr); } void update_keyboard(int up, int down, int left, int right, @@ -453,8 +456,13 @@ void update(float time) current_time = time; scene_state.update(time); + /* view::state.eye = XMVector3Transform(XMVectorZero(), node_eye->world); - view::state.at = XMVector3Transform(XMVectorZero(), node_at->world); + if (node_at == nullptr) + view::state.at = XMVectorZero(); + else + view::state.at = XMVector3Transform(XMVectorZero(), node_at->world); + */ view::update_transforms(); } diff --git a/src/view.cpp b/src/view.cpp index 1a0c88f..93d4d23 100644 --- a/src/view.cpp +++ b/src/view.cpp @@ -107,6 +107,6 @@ namespace view { //state.eye = XMVectorSet(-45.5f, 43.25f, 63.0f, 1); //state.at = state.eye + state.direction * at_distance; state.at = XMVectorSet(0, 0, 0, 1); - state.eye = XMVectorSet(0, -10, 0, 1); + state.eye = XMVectorSet(0, -100, 0, 1); } }