IO: add PLY export test coverage for loose edges and loose vertices
The input file contains a partial cube, with two regular faces, two loose edges and one loose vertex. This checks whether the loose vertex for example is included into the output when exporting with UVs (loose verts do not have UVs in Blender, so they should get (0,0) UV in PLY).
This commit is contained in:
@@ -426,37 +426,107 @@ class ply_exporter_ply_data_test : public ply_export_test {
|
||||
}
|
||||
};
|
||||
|
||||
TEST_F(ply_exporter_ply_data_test, CubeLoadPLYDataVertices)
|
||||
TEST_F(ply_exporter_ply_data_test, CubeLoadPLYData)
|
||||
{
|
||||
PLYExportParams params = {};
|
||||
PlyData plyData = load_ply_data_from_blendfile(
|
||||
"io_tests" SEP_STR "blend_geometry" SEP_STR "cube_all_data.blend", params);
|
||||
PlyData plyData = load_ply_data_from_blendfile("io_tests/blend_geometry/cube_all_data.blend",
|
||||
params);
|
||||
EXPECT_EQ(plyData.vertices.size(), 8);
|
||||
EXPECT_EQ(plyData.uv_coordinates.size(), 0);
|
||||
}
|
||||
TEST_F(ply_exporter_ply_data_test, CubeLoadPLYDataUV)
|
||||
{
|
||||
PLYExportParams params = {};
|
||||
params.export_uv = true;
|
||||
PlyData plyData = load_ply_data_from_blendfile(
|
||||
"io_tests" SEP_STR "blend_geometry" SEP_STR "cube_all_data.blend", params);
|
||||
PlyData plyData = load_ply_data_from_blendfile("io_tests/blend_geometry/cube_all_data.blend",
|
||||
params);
|
||||
EXPECT_EQ(plyData.vertices.size(), 8);
|
||||
EXPECT_EQ(plyData.uv_coordinates.size(), 8);
|
||||
}
|
||||
TEST_F(ply_exporter_ply_data_test, CubeLooseEdgesLoadPLYData)
|
||||
{
|
||||
PLYExportParams params = {};
|
||||
params.forward_axis = IO_AXIS_Y;
|
||||
params.up_axis = IO_AXIS_Z;
|
||||
params.global_scale = 1.0f;
|
||||
PlyData plyData = load_ply_data_from_blendfile(
|
||||
"io_tests/blend_geometry/cube_loose_edges_verts.blend", params);
|
||||
float3 exp_vertices[] = {
|
||||
{1, 1, 1},
|
||||
{1, 1, -1},
|
||||
{1, -1, 1},
|
||||
{1, -1, -1},
|
||||
{-1, 1, 1},
|
||||
{-1, 1, -1},
|
||||
{-1, -1, 1},
|
||||
{-1, -1, -1},
|
||||
};
|
||||
std::pair<int, int> exp_edges[] = {{7, 6}, {6, 4}};
|
||||
uint32_t exp_face_sizes[] = {4, 4};
|
||||
uint32_t exp_faces[] = {5, 1, 3, 7, 5, 4, 0, 1};
|
||||
EXPECT_EQ(plyData.vertices.size(), ARRAY_SIZE(exp_vertices));
|
||||
EXPECT_EQ(plyData.uv_coordinates.size(), 0);
|
||||
EXPECT_EQ(plyData.edges.size(), ARRAY_SIZE(exp_edges));
|
||||
EXPECT_EQ(plyData.face_sizes.size(), ARRAY_SIZE(exp_face_sizes));
|
||||
EXPECT_EQ(plyData.face_vertices.size(), ARRAY_SIZE(exp_faces));
|
||||
EXPECT_EQ_ARRAY(exp_vertices, plyData.vertices.data(), ARRAY_SIZE(exp_vertices));
|
||||
EXPECT_EQ_ARRAY(exp_edges, plyData.edges.data(), ARRAY_SIZE(exp_edges));
|
||||
EXPECT_EQ_ARRAY(exp_face_sizes, plyData.face_sizes.data(), ARRAY_SIZE(exp_face_sizes));
|
||||
EXPECT_EQ_ARRAY(exp_faces, plyData.face_vertices.data(), ARRAY_SIZE(exp_faces));
|
||||
}
|
||||
TEST_F(ply_exporter_ply_data_test, CubeLooseEdgesLoadPLYDataUV)
|
||||
{
|
||||
PLYExportParams params = {};
|
||||
params.forward_axis = IO_AXIS_Y;
|
||||
params.up_axis = IO_AXIS_Z;
|
||||
params.global_scale = 1.0f;
|
||||
params.export_uv = true;
|
||||
PlyData plyData = load_ply_data_from_blendfile(
|
||||
"io_tests/blend_geometry/cube_loose_edges_verts.blend", params);
|
||||
float3 exp_vertices[] = {
|
||||
{1, 1, 1},
|
||||
{1, 1, -1},
|
||||
{1, -1, 1},
|
||||
{1, -1, -1},
|
||||
{-1, 1, 1},
|
||||
{-1, 1, -1},
|
||||
{-1, 1, -1},
|
||||
{-1, -1, 1},
|
||||
{-1, -1, -1},
|
||||
};
|
||||
float2 exp_uv[] = {
|
||||
{0.625f, 0.5f},
|
||||
{0.375f, 0.5f},
|
||||
{0, 0},
|
||||
{0.375f, 0.75f},
|
||||
{0.625f, 0.25f},
|
||||
{0.125f, 0.5f},
|
||||
{0.375f, 0.25f},
|
||||
{0, 0},
|
||||
{0.125f, 0.75f},
|
||||
};
|
||||
std::pair<int, int> exp_edges[] = {{8, 7}, {7, 4}};
|
||||
uint32_t exp_face_sizes[] = {4, 4};
|
||||
uint32_t exp_faces[] = {5, 1, 3, 8, 6, 4, 0, 1};
|
||||
EXPECT_EQ(plyData.vertices.size(), 9);
|
||||
EXPECT_EQ(plyData.uv_coordinates.size(), 9);
|
||||
EXPECT_EQ(plyData.edges.size(), ARRAY_SIZE(exp_edges));
|
||||
EXPECT_EQ(plyData.face_sizes.size(), ARRAY_SIZE(exp_face_sizes));
|
||||
EXPECT_EQ(plyData.face_vertices.size(), ARRAY_SIZE(exp_faces));
|
||||
EXPECT_EQ_ARRAY(exp_vertices, plyData.vertices.data(), ARRAY_SIZE(exp_vertices));
|
||||
EXPECT_EQ_ARRAY(exp_uv, plyData.uv_coordinates.data(), ARRAY_SIZE(exp_uv));
|
||||
EXPECT_EQ_ARRAY(exp_edges, plyData.edges.data(), ARRAY_SIZE(exp_edges));
|
||||
EXPECT_EQ_ARRAY(exp_face_sizes, plyData.face_sizes.data(), ARRAY_SIZE(exp_face_sizes));
|
||||
EXPECT_EQ_ARRAY(exp_faces, plyData.face_vertices.data(), ARRAY_SIZE(exp_faces));
|
||||
}
|
||||
|
||||
TEST_F(ply_exporter_ply_data_test, SuzanneLoadPLYDataUV)
|
||||
{
|
||||
PLYExportParams params = {};
|
||||
params.export_uv = true;
|
||||
PlyData plyData = load_ply_data_from_blendfile(
|
||||
"io_tests" SEP_STR "blend_geometry" SEP_STR "suzanne_all_data.blend", params);
|
||||
PlyData plyData = load_ply_data_from_blendfile("io_tests/blend_geometry/suzanne_all_data.blend",
|
||||
params);
|
||||
EXPECT_EQ(plyData.uv_coordinates.size(), 542);
|
||||
}
|
||||
|
||||
TEST_F(ply_exporter_ply_data_test, CubeLoadPLYDataUVDisabled)
|
||||
{
|
||||
PLYExportParams params = {};
|
||||
params.export_uv = false;
|
||||
PlyData plyData = load_ply_data_from_blendfile(
|
||||
"io_tests" SEP_STR "blend_geometry" SEP_STR "cube_all_data.blend", params);
|
||||
EXPECT_EQ(plyData.uv_coordinates.size(), 0);
|
||||
}
|
||||
|
||||
} // namespace blender::io::ply
|
||||
|
||||
Reference in New Issue
Block a user