About offline reconstruction
Opened this issue · 7 comments
Hi,
I was trying to run your code to reconstruct surface offline. Input "argv[]" according to the prompt. It's:
" -i " - Specify the path of the input file (.obj, .ply, .xyz)"
" -o " - Specify the path of the output file (.ply)"
so, I set the parameter "-i" as the file path of .ply(ex:"C:/Users/Desktop/tPLY" ,but is "unknown file extension" .
I change the "-i" as ""C:/Users/Desktop/tPLY/model000.ply" ,it works .But it can read only one file .
How can I debug the program to read all .ply files offline?
Any help would be appreciated!
Thank you !
Hi,
we added the command line interface for our very specific use case of quantitative evaluation. That's why its capabilities are very limited. However, adding support for multiple scans can be done quite easily.
In BatchSession.cpp, you'll find a method that parses command line arguments and run()
, which starts the pipeline. In run()
, you will find:
- A
ScanDataSink
, which implements an interface required byload_scan
. It assumes that the specified file only contains a single scan and will store it in its member variable. - Calls to
load_scan()
,data.AddScan()
, anddata.IntegrateScan()
. All of these need to be repeated for each new scan that you want to integrate. - Finally one call to
data.extractedMesh.saveFineToPLY()
, which can simply stay there (a single time).
Once you add proper command line parsing for multiple scans, you can integrate each scan in run()
. Feel free to issue a pull request if you want to share these changes. I would appreciate it :)
In theory, it should be possible to use data
directly in load_scan()
instead of the ScanDataSink
. However, data
will do some additional things and I am not sure if everything is wired up correctly at this stage. But feel free to try. Then you would not need to call data.AddScan()
.
This piece of code looks good on first sight. Can you debug the application to see where exactly the error occurs?
I solved the runtime error , just the iterator out of the range . I can run the program successfully with my own data.
But the results are unexpected. That's my input and output.
input:
output:
I just want to fusion the overlap mesh area.But it's either over-smooth or coarse in some area.
Some key parameters influence it in my sight. They are :
scale: the length of mesh edge;
smoothness: the smooth of surface;
R in ExtractMesh.h :resolution of the face.
Is there anything I ignore?
That looks like the patches should be smaller. Try specifying a --scale
of about 0.3
to 0.5
.
I encountered the similar problems about can't dereference out of range vector iterator
when test on my data .
The error is
STL_VERIFY(_Mycont->_Myfirst <= _Ptr && _Ptr < _Mycont->_Mylast, "can't dereference out of range vector iterator")
I call the stack to track error , it's mainly in "Optimizing part" . The function call is about:
HierarchyMortonMultiPass.h
: the function of void findOrCreate(Iterator elementsBegin, Iterator elementsEnd, std::vector<std::pair<iterator, bool>>& result)
in class OSR_EXPORT MortonContainer
the error is mortonIdx
out of the size dataIt
, but I didn't have any idea to modify . Can you give me some advice .
Thank you for your time .
Can you provide your data and code (e.g., in a fork of the repository)?