Getting to the way it's supposed to be!

This commit is contained in:
2024-10-12 00:43:51 +02:00
parent 84729f9d27
commit 8f2dad9cec
2663 changed files with 540071 additions and 14 deletions

View File

@@ -0,0 +1,61 @@
#undef UFBXT_TEST_GROUP
#define UFBXT_TEST_GROUP "curves"
UFBXT_FILE_TEST(max_curve_line)
#if UFBXT_IMPL
{
ufbx_node *polyline_node = ufbx_find_node(scene, "Polyline");
ufbx_node *bezier_node = ufbx_find_node(scene, "Bezier");
ufbxt_assert(polyline_node);
ufbxt_assert(bezier_node);
ufbxt_assert(polyline_node->attrib_type == UFBX_ELEMENT_LINE_CURVE);
ufbxt_assert(bezier_node->attrib_type == UFBX_ELEMENT_LINE_CURVE);
ufbxt_assert(polyline_node->attrib);
ufbxt_assert(bezier_node->attrib);
static const ufbx_vec3 ref_points[] = {
{ -1.0f, 0.0f, -1.0f },
{ 1.0f, 1.0f, -1.0f },
{ 1.0f, 0.0f, 1.0f },
{ 0.0f, -1.0f, 2.0f },
{ -2.0f, 0.0f, 2.0f },
{ -1.0f, 0.0f, 1.0f },
{ -1.0f, 0.0f, -1.0f },
};
ufbx_line_curve *polyline = (ufbx_line_curve*)polyline_node->attrib;
ufbxt_assert(polyline->point_indices.count == 7);
ufbxt_assert(polyline->segments.count == 1);
ufbxt_assert(polyline->segments.data[0].index_begin == 0);
ufbxt_assert(polyline->segments.data[0].num_indices == 7);
for (size_t i = 0; i < polyline->point_indices.count; i++) {
ufbx_vec3 p = polyline->control_points.data[polyline->point_indices.data[i]];
p = ufbx_transform_position(&polyline_node->geometry_to_world, p);
p.x *= 0.1f;
p.y *= 0.1f;
p.z *= 0.1f;
ufbxt_assert_close_vec3(err, p, ref_points[i]);
}
ufbx_vec3 polyline_color = { 0.223529411764706f ,0.0313725490196078f, 0.533333333333333f };
ufbxt_assert_close_vec3(err, polyline->color, polyline_color);
ufbx_line_curve *bezier = (ufbx_line_curve*)bezier_node->attrib;
ufbxt_assert(bezier->point_indices.count == 15);
ufbxt_assert(bezier->segments.count == 1);
ufbxt_assert(bezier->segments.data[0].index_begin == 0);
ufbxt_assert(bezier->segments.data[0].num_indices == 15);
for (size_t i = 0; i < bezier->point_indices.count; i++) {
ufbx_vec3 p = bezier->control_points.data[bezier->point_indices.data[i]];
p = ufbx_transform_position(&bezier_node->geometry_to_world, p);
p.x *= 0.1f;
p.y *= 0.1f;
p.z *= 0.1f;
ufbxt_assert(p.y >= -0.0001f);
ufbxt_assert_close_real(err, p.z, 0.0f);
}
ufbx_vec3 bezier_color = { 0.603921568627451f ,0.725490196078431f, 0.898039215686275f };
ufbxt_assert_close_vec3(err, bezier->color, bezier_color);
}
#endif