Beispiel #1
0
def test_pyvista_conversion(data_path):
    print(data_path)
    print(data_path.joinpath("diamond.ply"))
    cloud = PyntCloud.from_file(str(data_path.joinpath("diamond.ply")))
    poly = cloud.to_instance("pyvista", mesh=True)
    pc = PyntCloud.from_instance("pyvista", poly)
    assert np.allclose(cloud.points[['x', 'y', 'z']].values, poly.points)
    assert np.allclose(cloud.mesh.values, pc.mesh.values)
    poly = pv.read(str(data_path.joinpath("diamond.ply")))
    pc = PyntCloud.from_instance("pyvista", poly)
    assert np.allclose(pc.points[['x', 'y', 'z']].values, poly.points)
Beispiel #2
0
def test_pyvista_rgb_is_handled():
    """ Serves as regression test for old `in` behaviour that could cause a subtle bug
    if poin_arrays contain a field with `name in "RGB"`
    """
    poly = pv.Sphere()
    poly.point_data["RG"] = np.zeros_like(poly.points)[:, :2]
    pc = PyntCloud.from_instance("pyvista", poly)
    assert all(x in pc.points.columns for x in ["RG_0", "RG_1"])
Beispiel #3
0
def test_pyvista_conversion(data_path):
    original_point_cloud = pv.read(str(data_path / "diamond.ply"))
    cloud = PyntCloud.from_instance("pyvista", original_point_cloud)
    assert np.allclose(cloud.xyz, original_point_cloud.points)
    assert {'red', 'green', 'blue'}.issubset(cloud.points.columns)
    assert np.allclose(cloud.points[['red', 'green', 'blue']].values,
                       original_point_cloud.point_arrays["RGB"])
    assert {'nx', 'ny', 'nz'}.issubset(cloud.points.columns)
    assert np.allclose(cloud.points[['nx', 'ny', 'nz']].values,
                       original_point_cloud.point_arrays["Normals"])
Beispiel #4
0
def test_open3d_point_cloud(data_path):
    point_cloud = o3d.io.read_point_cloud(
        str(data_path.joinpath("diamond.ply")))
    cloud = PyntCloud.from_instance("open3d", point_cloud)
    assert np.allclose(cloud.xyz, np.asarray(point_cloud.points))
    assert {'red', 'green', 'blue'}.issubset(cloud.points.columns)
    assert np.allclose(cloud.points[['red', 'green', 'blue']].values / 255.,
                       np.asarray(point_cloud.colors))

    assert {'nx', 'ny', 'nz'}.issubset(cloud.points.columns)
    assert np.allclose(cloud.points[['nx', 'ny', 'nz']].values,
                       np.asarray(point_cloud.normals))
Beispiel #5
0
def test_open3d_triangle_mesh(data_path):
    triangle_mesh = o3d.io.read_triangle_mesh(
        str(data_path.joinpath("diamond.ply")))
    cloud = PyntCloud.from_instance("open3d", triangle_mesh)
    assert cloud.mesh is not None
    assert np.allclose(cloud.mesh.values, triangle_mesh.triangles)

    assert np.allclose(cloud.xyz, triangle_mesh.vertices)

    assert {'red', 'green', 'blue'}.issubset(cloud.points.columns)
    assert np.allclose(cloud.points[['red', 'green', 'blue']].values / 255.,
                       triangle_mesh.vertex_colors)

    assert {'nx', 'ny', 'nz'}.issubset(cloud.points.columns)
    assert np.allclose(cloud.points[['nx', 'ny', 'nz']].values,
                       triangle_mesh.vertex_normals)
Beispiel #6
0
def voxelize(pcd, x, y, z):
    # cloud = PyntCloud.from_file(path)
    cloud = PyntCloud.from_instance("open3d", pcd)
    voxelgrid_id = cloud.add_structure("voxelgrid", n_x=x, n_y=y, n_z=z)
    voxelgrid = cloud.structures[voxelgrid_id]

    x_cords = voxelgrid.voxel_x
    y_cords = voxelgrid.voxel_y
    z_cords = voxelgrid.voxel_z
    voxel = np.zeros((x, y, z)).astype(np.bool)

    for x, y, z in zip(x_cords, y_cords, z_cords):
        voxel[x][y][z] = True
    # with open("binvox/00000.binvox", 'wb') as f:
    #     v = binvox_rw.Voxels(voxel, (x, y, z), (0, 0, 0), 1, 'xyz')
    #     v.write(f)
    return voxel, voxelgrid
Beispiel #7
0
def test_pyvista_multicomponent_scalars_are_splitted():
    poly = pv.Sphere()
    poly.point_data["foo"] = np.zeros_like(poly.points)
    pc = PyntCloud.from_instance("pyvista", poly)
    assert all(x in pc.points.columns for x in ["foo_0", "foo_1", "foo_2"])
Beispiel #8
0
def test_pyvista_normals_are_handled():
    poly = pv.Sphere()
    pc = PyntCloud.from_instance("pyvista", poly)
    assert all(x in pc.points.columns for x in ["nx", "ny", "nz"])