Getting to the way it's supposed to be!
This commit is contained in:
61
modules/ufbx/test/test_curves.h
Normal file
61
modules/ufbx/test/test_curves.h
Normal 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
|
||||
Reference in New Issue
Block a user