GeometryCollective / boundary-first-flattening

MIT License
768 stars 96 forks source link

Scale and transformation #38

Closed petrasvestartas closed 5 years ago

petrasvestartas commented 5 years ago

Hi,

Thank you for this amazing algorithm, I am really surprised how fast it work.

I implemented it in Rhino software via command line and hope to have more time to implement C++ version as an interactive plugin.

The question I have is how does the algorithm transform the input by means of translation?

Does it calculated the average center of the mesh and moves it to origin point? Also does the scale matter? For instance if the model would 1000 bigger or smaller would it have any problem?

bfs

rohan-sawhney commented 5 years ago

@petrasvestartas Thanks for the feedback! The code to translate the input mesh can be found here: https://github.com/GeometryCollective/boundary-first-flattening/blob/13bf0f2d4572731068a36d366089464b97c7aa69/mesh/src/MeshIO.cpp#L537 In the next version, I'll add this translation back to the model so that input geometry is not modified. The scale shouldn't matter - internally BFF scales the model down to unit radius but then rescales it when the mesh is written to file.

petrasvestartas commented 5 years ago

Dear @rohan-sawhney ,

Since I am using your command-line method I noticed that this can be improved.

Currently I am using .NET C# language with a custom written obj parser. Meaning I am exporting .obj files from my application via code, running command-line in one thread, and then extracting vertices, faces and texture values to get the end result. I do not know if it possible to speed up this process, without export files, but saving files and opening them takes 50 ms for small meshes and 500 ms for the face mask (the default input of your software).

Would it be possible to avoid this file save/open operation when the command line would output 3 collections: vertices, faces and textures?

Ideally I will use C++ code, but for .NET users who does not have any experience in low level coding it would be a great help.