OpenDroneMap-ODM/contrib/fix_ply
Stephen Mather c6d94d6a64
Fix ply (#1829)
* Create README.md for fix_ply

* Create fix_ply.py

* Update fix_ply.py to match current

* Update README.md to match Jaime's description

* Add more description
2025-07-15 21:42:56 -04:00
..
README.md Fix ply (#1829) 2025-07-15 21:42:56 -04:00
fix_ply.py Fix ply (#1829) 2025-07-15 21:42:56 -04:00

README.md

Fix Ply

Use to translate a modified ply into a compatible format for subsequent steps in ODM. Via Jaime Chacoff, https://community.opendronemap.org/t/edited-point-cloud-with-cloudcompare-wont-rerun-from-odm-meshing/21449/6

The basic idea is to process through ODM until the point cloud is created, use a 3rd party tool, like CloudCompare to edit the point cloud, and then continue processing in OpenDroneMap.

This useful bit of python will convert the PLY exported from CloudCompare back into a compatible format for continued processing in OpenDroneMap.

  1. Run project in WebODM and add this to your settings: end-with: odm-filterpoints
  2. Once complete, go to your NodeODM container and copy /var/www/data/[Task ID]/odm-filterpoints directory
  3. Open CloudCompare and from odm-filterpoints directory you've copied, open point_cloud.ply
  4. In the box that pops up, add a scalar field vertex - views
  5. To see the actual colours again - select the point cloud, then in properties change colours from "Scalar field" to "RGB"
  6. Make your changes to the point cloud
  7. Compute normals (Edit > Normals > Compute)
  8. Save PLY file as ASCII
  9. Run Python file above to fix PLY file and convert to binary
  10. Copy odm_filterpoints directory (or just point_cloud.ply) back into NodeODM container
  11. Restart project in WebODM "From Meshing" (don't forget to edit settings to remove end-with: odm-filterpoints or it's not going to do anything).