meshroom_external_plugins icon indicating copy to clipboard operation
meshroom_external_plugins copied to clipboard

InstantMeshes plugin development

Open djoerg opened this issue 5 years ago • 57 comments

Hi, first, thanks for trying to bring more features to MeshRoom. Highly appreciate it!

I'm curious if the obj format that InstantMeshes exports have ever worked on the Texturing node. If've tried using InstantMeshes manualy, before i found your plugin, and the Texturing node always failed to load it. Sadly it's the same with your plugin. After fiddling around a little bit, it seems to me that the Texturing node can't handle quad meshes. After converting the IM output to a pure triangle mesh via Meshlab and exporting it without normals or color, the Texturing node works. Including normals also leads to failure! I've looked at the exported obj in an text editor and it turns out that IM is also exporting the mesh with normals!

How have you used your InstantMeshes node inside Meshroom? Have you ever feed it directly into the Texturing node or have you put some other nodes in between? Or, maybe it worked in an older version of MeshRoom? (I tried it with the 2019.2 version)

I really hope there's a solution for this. InstantMeshes works so well for automatic retopology, i would love to use it in a MeshRoom workflow.

Btw, i'm a software developer and i love the fact that it's so easy to implemet new nodes with python, so i would like to implement some own nodes or wrap some external CLI tools into nodes, but i have nearly no knowlegde about MeshRoom. It seems to me, that you have a fairly good understanding how MeshRoom works. Maybe we could work together (or share some knowledge) bringing more features to MeshRoom?

djoerg avatar Feb 10 '20 06:02 djoerg

Hi, first, thanks for trying to bring more features to MeshRoom. Highly appreciate it!

You are welcome.

I'm curious if the obj format that InstantMeshes exports have ever worked on the Texturing node.

No, at the moment there are no nodes compatible with the InstantMeshes quad mesh output. It was based on this feature request https://github.com/alicevision/meshroom/issues/774 Support for texturing quad meshes would require changes on the Alicevision side of the texturing node. (Meshroom (python, qt) is the GUI for Alicevision (c++)) However it might be possible to use https://github.com/caosdoar/Fornos to bake the high resolution texture from the Texturing node to the low poly from the InstantMeshes node.

Btw, i'm a software developer and i love the fact that it's so easy to implement new nodes with python, so i would like to implement some own nodes or wrap some external CLI tools into nodes, but i have nearly no knowledge about Meshroom.

You are welcome to contribute. What do you have in mind?

Here are the basics on how to implement new nodes:

  1. CommandLineNode: nodes run external cli programs - this is how most Meshroom nodes work. Simple example
 class Convert2MVE(desc.CommandLineNode):
     commandLine = 'aliceVision_exportMVE2 {allParams}' 

Runs aliceVision_exportMVE2.exe with all parameters. {allParams} is only supported by alicevision plugins.

For external programs cli parameters need to be adjusted (example):

class ImageMasking(desc.CommandLineNode):
    commandLine = 'mogrify -format png -path {outputValue} -type Grayscale -negate -fill black -fuzz {fuzzValue}% +opaque "#ffffff" -blur {radiusValue}x{sigmaValue} -type Bilevel -depth 1 {inputValue}/*jpg'

Runs mogrify.exe with defined parameters

  1. Native Python nodes

It is possible to implement new nodes in python without running an external program from the cli.

Here is a good examples for pure python nodes: https://github.com/alicevision/meshroom/blob/develop/meshroom/nodes/aliceVision/SketchfabUpload.py and https://github.com/alicevision/meshroom/pull/641/files (import modules)

References on different supported GUI elements for nodes can be found here

Maybe we could work together (or share some knowledge) bringing more features to MeshRoom?

I am happy to share some knowledge (although I am still learning myself and mainly work on the documentation). There is no lack of ideas for new features, but you are always welcome to implement your own projects.

Implementation notes: It is easy to write a node for an existing cli tool, but if you want to contribute your node to the main Meshroom repository, a native Meshroom implementations is required. They can be pure python nodes or c++ implementations on the alicevision side with python cli nodes for Meshroom. This is to ensure multi platform compatibility and reduce dependencies on third parties. Licenses should be compatible with MPL2.

If you have any questions, feel free to ask.

natowi avatar Feb 10 '20 17:02 natowi

Wow thanks for the quick reply and all the information. I need some time to go through all of this.

I assumed that the Texturing node can't handle quads and i think it's not trivial to implement this. But the problem with obj file including normals... should be relatively easy to implement a simple 'ignore normals' feature!? The reasoning behind this is, that we could use InstantMeshes in pure triangle mode, but even this exports contains normals! Do you think it's a valuable feature request?

You are absolutely right that implementing native stuff in c++ or python is the best way to go. I've just started developing c++ a few weeks ago, so much to learn. My python skills are also very limited, just done some utility/helper stuff insde Blender.I'm comming from a PHP/Java/C# background and worked the last 10 years almost only in VisualStudio on C# projects.

So could you point me to some documentation on how to setup a development environment for Meshroom under Win7 with the VisualStudio Community Edition? Is this possible or must i learn all this (for me very strange) cmake commandline stuff?

My goals/dreams with meshroom:

  • long term goal: make it a full open source pipeline that is competitive with the commercial ones and is easaly useable by unexperienced users without much knowledge about photogrammetry
  • better mesh quality (at the moment, every mesh i created contains hundreds of wrongly oriented polys that need a cleaup by hand, around 4-8 hours manual work per mesh, and then re-running the Texturing node)
  • auto generation of low poly output (hence the intrest in InstantMeshes) with automatic generation of normal and/or displacement maps
  • automatic (at least as much as possible) texture delightning
  • using exposure brackets as input to generate HDR textures (to use as a 3D HDR Environment in VFX production. to circumvent the limitations of HDRi Environment maps)
  • maybe an 'flat-only' workflow for pure texture generation (no mesh output) but with automatic normal/displacement maps (usefull for texture generation from walls, floors and other flat surfaces)
  • and much more ;)

Btw, i'm a hobby photographer since 10 years, so i would happily share my photo/image processing skills to. I procduced many 360 HDRi envirment maps by myself and also coded an own HDR processing tool.

I could also imagine to contribute some of my own SFM image sets with a CC0 license. (Sadly most of them are lost due to a hardrive crash, but i surely will shot more in the near future)

Phuu, enough for now. :) I realy appreciate your help here, thank you so much

djoerg avatar Feb 10 '20 18:02 djoerg

I assumed that the Texturing node can't handle quads and i think it's not trivial to implement this. But the problem with obj file including normals... should be relatively easy to implement a simple 'ignore normals' feature!? The reasoning behind this is, that we could use InstantMeshes in pure triangle mode, but even this exports contains normals! Do you think it's a valuable feature request?

It might be possible to use https://github.com/caosdoar/Fornos to bake the high resolution texture from the Texturing node to the low poly from the InstantMeshes node.

Having a tight InstantMeshes plugin (maybe even with preview) would be interesting. This is something we could discuss with the main MR devs.

So could you point me to some documentation on how to setup a development environment for Meshroom under Win7 with the VisualStudio Community Edition? Is this possible or must i learn all this (for me very strange) cmake commandline stuff?

Sure, I put this wiki together: https://github.com/natowi/meshroom_external_plugins/wiki btw you should update to win10 if possible as many packages dropped win7 support or cause unexpected errors on win7

auto generation of low poly output (hence the intrest in InstantMeshes) with automatic generation of normal and/or displacement maps

Support for normals is wip https://github.com/alicevision/AliceVision/pull/578

automatic (at least as much as possible) texture delightning

I think there is some basic support for this

using exposure brackets as input to generate HDR textures (to use as a 3D HDR Environment in VFX production. to circumvent the limitations of HDRi Environment maps)

Sounds useful and not too difficult to implement (especially since you have experience in this area)

There are some existing nodes related to HDR: LDRtoHDR and HDRI 360 stitching (will be available with the next release or when building from source)

maybe an 'flat-only' workflow for pure texture generation (no mesh output) but with automatic normal/displacement maps (usefull for texture generation from walls, floors and other flat surfaces)
and much more ;)

That is interesting, too

Btw, i'm a hobby photographer since 10 years, so i would happily share my photo/image processing skills to.

I am working on a guide "capturing images for photogrammetry" for the Meshroom documentation (to reduce bug reports from new users that are based on unsuitable image datasets and provide a general guideline). If you are interested, I am happy to add you to the project.

I could also imagine to contribute some of my own SFM image sets with a CC0 license.

A HDRI / exposure brackets sample dataset might be interesting.

natowi avatar Feb 10 '20 19:02 natowi

Sorry for comming back a little late, had not much time the last days. But i managed to get the InstantMeshes node working with the Texturing node. :smile: InstantMeshes_0.3.py.zip I used a rudimentary Load/Save OBJ script by James Gregson as a starting point to convert the IM output OBJ to a meshroom compliant format. I had to modify it a little bit and also removed the numpy dependency to keep it simple. see: http://jamesgregson.ca/loadsave-wavefront-obj-files-in-python.html (Haven't added any credits in the comments yet, think i should do that eventualy.)

I added some info to your original top-level comment, but i don't know if i have done it in a good way. Want to hear your thoughts an that!

For now, only the 'Triangle' mode works fine. The two Quad modes are working only sporadicaly. Seems there are problems with wrongly orientated and/or non-manifold faces. That would be the next thing i try to fix.

Added/changed some commandline params and the descriptions. Maybe you can review that too

A come back in a few hours to comment on your last post, i'm a little busy at the moment

Thanks for all your helpfull information

djoerg avatar Feb 13 '20 12:02 djoerg

Good work. You are welcome to open a Pull Request for the InstantMeshes plugin to contribute your improvements.

The comments can be re-written later on.

Found out that the binary windows distribution of Meshroom can use uncompiled python source (*.py) files.

That is neat, nice find. I however did not yet get the IM node to work with the Texturing node.

A come back in a few hours to comment on your last post, i'm a little busy at the moment

There is no hurry, take your time.

natowi avatar Feb 13 '20 14:02 natowi

Good work. You are welcome to open a Pull Request for the InstantMeshes plugin to contribute your improvements.

Thanks. Unfortunatly, i'm not familiar with Git, used mostly TFS and SVN in the past. Must learn howto do a propper Pull request first. Don't want to mess up your repo.

I however did not yet get the IM node to work with the Texturing node.

Ohh, that's bad. Did my IM node caused problems or did the Texturing node throw any error? (With "Remesh mode=Triangle" it worked every time i tested it. I used only tiny meshes <50k) Can you provide your input and output mesh-files (before/after my IM node) from the Meshroom-cache? Every error is good to make it more robust! The Texturing-node log and the Meshroom output in the commandline window would also be helpfull.

djoerg avatar Feb 13 '20 17:02 djoerg

Go to a file and click on the pen button to edit, this creates a new branch for you to edit. You can than save edits and later create a pull request. (#) No need to worry about messing up something.

I used this dataset for testing https://github.com/alicevision/dataset_monstree with three images -however texturing works with six+ images.

The quad mesh option takes forever with Smoothing iterations at 2. Set to 0 for fast computation. Works with Texturing.

natowi avatar Feb 13 '20 20:02 natowi

Go to a file and click on the pen button to edit, this creates a new branch for you to edit. You can than save edits and later create a pull request. (#) No need to worry about messing up something.

Cool, will try that after getting it a little bit more robust. Maybe tomorrow.

I used this dataset for testing https://github.com/alicevision/dataset_monstree with three images -however texturing works with six+ images.

I assume you keept all settings at default? The DepthMap with downscale=2? Or have you used a different resulotion? To pin down these errors caused only by a few wrong faces, it's best to have the exact input mesh that produced the error. I'm not sure if the meshroom pipeline is fully deterministic! So even using the same settings as you can produce a slightly different mesh!!! (I have the gut feeling that the meshing isn't deterministic, cause i had errors on older projects that went away after executing the Meshing node a second time. Or maybe it was the MeshFiltering node, can't remeber exactly.)

Nevertheless, i think i found the main problem :smile:

  • InstantMeshes produces (more) self intersecting faces with smoothing, setting it to 0 worked most of the time
  • The "Basic" unwrap method of the Texturing node seems more robust than the other two, "LSCM" definitly crashes on self-intersecting faces with "OpenNL assertion failed"! (Tested this by removing self-intersections with MeshLab, after that LSCM worked.)

I will try to find a way to remove the self-intersections, maybe using some third-party lib.

Hopefully, i come up tomorrow with a working Pull request :wink:

djoerg avatar Feb 13 '20 23:02 djoerg

Short update: After searching the web for about 5 hours, i couldn't find a lightweight, easy to use, portable, mesh library for python that could repair self-intersections. Found CGAL, LibIgl, and others but all have so much dependencies and aren't easy to install or have no longer maintained python wrappers, that i don't want to use them.

But i stumbled accross MeshFix, a simple (award winning) commandline tool to repair the common defects in 3D scanned meshes. Unfortunatly, it needs the mesh to be a single closed object and that's very rarly the case using photgrammetry, cause you need a closed scan with the bottom of the object and totaly separeted from the background. :disappointed: (AFAIK, nearly impossible to get in Meshroom without manual cleanup in an external tool like Meshlab.) https://github.com/MarcoAttene/MeshFix-V2.1

Luckily, i found PyMeshFix, a python wrapper for MeshFix, that make it possible to run the various repair steps separetly. So i want to give it a try using ONLY the repair self-intersections step. :pray: https://github.com/pyvista/pymeshfix

If everything runs smooth, i would come up with a PoC in a few hours.

djoerg avatar Feb 14 '20 13:02 djoerg

Yes, I also found MeshFix, it produces good results but not on all meshes. It works best on mostly closed meshed.

There is also Meshlabserver that can be used to run Meshlab from cli. It might be interesting to write some nodes that access Meshlab. https://stackoverflow.com/questions/20797535/meshlab-invoke-meshlab-command-line-version

natowi avatar Feb 14 '20 18:02 natowi

Hmm, my 'few hours' statement was a little bit too optimistic. Had problems removing the (in our case) unnesessary UI dependecies in PyMeshFix. But akaszynski was so kind to deliver a new package without the dependencies. :smile: see: https://github.com/pyvista/pymeshfix/issues/16

@akaszynski Thanks again for that

There is also Meshlabserver that can be used to run Meshlab from cli.

Yes, thought about that too. Used Meshlab sometimes in the past and i think i have a little bit of understanding of the various cleanup and remeshing options in Meshlab. Could possibly be usefull, albeit the functions in meshlab seem a little bit outdated compared to the more sophisticated algorithms in other tools. For example: Removing self-intersections deletes ALL intersecting faces (without keeping the usefull ones) leaving holes in the mesh. Using the 'fill holes' function just uses the boundary vertecies without generating new topology and generating NEW self-intersections(!), so IMHO pretty useless. There are of course many other functions that could be usefull.

Btw, found a nice research paper for an algorithm removing self-intersections (and as a side effect also non-manifolds) without the need to have a closed mesh. (As far as i'm understanding it) https://iopscience.iop.org/article/10.1088/1742-6596/1314/1/012149/pdf But i found no tool that has implemented it yet. Could be a cool and educational project for the future to implement this algorithm be myself. :wink:

Ok, now i try to integrate the PyMeshFix functions and come up with a new version the next days

djoerg avatar Feb 15 '20 17:02 djoerg

Quick update: With the new PyMeshFix version 0.13.4, i managed to call the clean self-intersections separetly which, luckily, did excactly what i hoped for: cleaning the mesh without generating a closed one. :smile:

The downside is, we now have two dependencies, PyMeshfix and numpy, that need to be copied into the meshroom 'lib' folder. Maybe i could make this optional.

Now a i have to do some more tests with bigger/complexer meshes and cleanup the code a little bit (had to completly rewrite the OBJ load/save stuff).

I will definitly try to do a Pull request with the new 0.4 version today. After that, i think i will make a pure MeshFix node also, with ALL clean methods to make it possible to generate fully closed (and hopefully watertight) single meshes.

djoerg avatar Feb 18 '20 11:02 djoerg

Ahh, one question: The next bigger thing i will try is to automate the normal-map creation. I know, you mentioned that there is still WIP, but having more options is always better, i think.

So my quesition is, did you know any cli tools that can bake normals from a highpoly to a lowpoly mesh and be able to use obj as input/output?

djoerg avatar Feb 18 '20 12:02 djoerg

Take a look at this list: https://gist.github.com/natowi/a8d6c1fffb91e58be8f10c45f21ba85f Fornos is a good highpoly to lowpoly baking tool, but does not have cli support (could possibly be added to the cpp code)

natowi avatar Feb 18 '20 14:02 natowi

Hi, sorry for not replying so long. Bussy at work and a good friend visited me for a few days.

Yes, i've taken a look at the fornos source code and there is sadly no cli handling implemented. Maybe i could do that, but for a quick solution i would give xNormal a shot. It has also no 'real' cli handling, but it's possible to use a xml file to control the parameters. So that's the next thing i like to try.

Sooo, back to the InstantMeshes plugin. I've attached version 0.4 that now has detailed installation instructions included. I will do a pull request next. Sadly, it's not working as i hopped. My first tests that resulted in a NOT closed mesh where missleading. The mesh keeps unchanged by the meshfix functiion if there are no invalid faces. If the mesh needs to be repaired, the result is always a closed, watertight mesh. So i'm still looking for another solution to repair self-intersections and nonmanifold faces. Maybe utilizing another graphics library like CGAL or libigl.

InstantMeshes_0.4.py.zip

djoerg avatar Mar 06 '20 12:03 djoerg

hello natowi & djoerg Thankyou for working on the Instant Meshes node!

I got the new 0.4 version working with the texturing node using the 'outputMesh' output but not the 'outputInstantMeshes' output.

Is there something I am missing? Thankyou.

barefoots avatar Mar 31 '20 03:03 barefoots

@barefoots outputMesh is the Meshroom compatible obj output, outputInstantMeshes the original output from InstantMeshes.

natowi avatar Mar 31 '20 09:03 natowi

aaaaaaaaaaaahhhh thank-you!

barefoots avatar Mar 31 '20 10:03 barefoots

@djoerg would you be interested in making a (WIP) PR in the main Meshroom Repository? Then we can clean up the code/comments and add all the dependencies to the requirements.

natowi avatar Apr 23 '20 08:04 natowi

@djoerg Thanks for your contribution,it looks like you have so many ideas about improving this plugin ( and not finished ).I also want to do something to improve it, could you assign me some of your tasks? and if possible some suggestion about how to implement them well.

TigerVersusT avatar Apr 29 '20 02:04 TigerVersusT

@natowi HI natowi, which python version are you uisng? I received error messages when runing " pip install pymeshfix ", it seems that there is no supported version of vtk for python 38. vtk from pypi:https://pypi.org/project/vtk/#files

TigerVersusT avatar Apr 30 '20 01:04 TigerVersusT

@TigerVersusT take a look at the source code, in the comments there are install instructions. (line 55+)

natowi avatar Apr 30 '20 06:04 natowi

@TigerVersusT take a look at the source code, in the comments there are install instructions. (line 55+)

oh, thanks!

TigerVersusT avatar Apr 30 '20 08:04 TigerVersusT

Installation Instructions

Preamble:

   Tested only on Win7 SP1 64bit with many VisualStudio C++ Redistributables already installed.
   If you encounter errors like '...missing dll...' you might have to install one or more vs_c++_redist packages.
   Any feedback on this is welcome!
  1. Prerequisite Python Dependencies

pymeshfix-0.13.4-cp36-cp36m-win_amd64.whl

numpy-1.18.1-cp36-cp36m-win_amd64.whl


   Windows has no pre-installed Python environment and so you can't use any package managers like 'pip'!
   Meshroom for Windows ships with Python 3.6 (at the time of writing) and many,
   but not all necessary, standard python libraries(packages) are included.
   Due to the missing package managers, you have to install(copy) additional packages by hand!

   Dependencies (Python packages):
   
       * NumPy >= 1.18.1, older versions might work too  (https://numpy.org/)
       
       * PyMeshFix >= 0.13.4, older versions DON'T work! (https://github.com/pyvista/pymeshfix)


   Howto get a package:

       You might find binary distributions of these packages
       on various Python package repositories on the internet.
       
       Instructions using PyPi:

           - goto https://pypi.org/
           - search for the needed package (e.g. numpy)
           - click on the matching (name & version) package
           - on the next page, click 'Download' in the left column
             -> now you see a list of Wheel (.whl) files
           - download the appropriate Wheel file regarding Python and OS version

             Example: numpy-1.18.1-cp36-cp36m-win_amd64.whl (12.8 MB)
                  Python version --^^^^       ^^^^^^^^^-- OS version

             Hint: I always used the 64bit versions, don't know if Meshroom could 
                   use the 32bit versions too. Your mileage may vary!

   Howto install(copy) a package:

       The Wheel (.whl) files are just Zip compressed archives, so you can extract the content
       with any Zip compatible file compression utility (i used 7-Zip). You can also use
       Windows for that (without an extra utility), just change the file-extension to '.zip'.

       Disclaimer:
           I recommend to make a backup of your Meshroom installation folder before you
           start copying stuff into it. You could easily damage Meshroom by copying the
           wrong files/folders into the wrong locations!


       Copy Instructions:

           - extract the contents of the downloaded package
             -> in case you used a Wheel file, you should see two folders (e.g. for NumPy):
               numpy 
               numpy-1.18.1.dist-info
            
           - open the location where you installed Meshroom (<your-location>/meshroom-2019.2.0)
             -> now you should see something like this:
               aliceVision <dir>
               lib <dir>
               qtPlugins <dir>
               COPYING.md
               Meshroom.exe
               meshroom_compute.exe
               meshroom_photogrammetry.exe
               python36.dll

           - copy the extracted package folder (the one without the '.dist-info' at the end)
             into the 'lib' folder ('<your-location>/meshroom-2019.2.0/lib')

             e.g. for NumPy, your 'lib' folder now contains a 'numpy' folder:
               .
               .
               meshroom
               multiprocessing
               numpy
               psutil
               pydoc_data
               .
               .

           - to verify that you copied the right thing, open the copied package folder
             (<your-location>/meshroom-2019.2.0/lib/<the-package>)
             -> Now you see bunch of *.py files and usualy some folders (could be none). 
                There MUST be a '__init__.py' file! If not, you've done something wrong.   
 
     
   Repeat all steps for each dependency!
  1. The 'Instant Meshes' Executable

   This 'Instant Meshes' plugin doesn't implement the functionality from Instant Meshes,
   it calls the commandline executable instead. This means, you have to download the
   offical Instant Meshes release.

   - download Instant Meshes here: https://github.com/wjakob/instant-meshes
     (scroll down to 'Pre-compiled binaries')
     The download for Wwindows is a Zip file containing one single '.exe' file. (Don't know this for Mac OS X)
   - extract the 'Instant Meshes.exe' file from the Zip
   - open the folder '<your-location>/Meshroom-2019.2.0/aliceVision/bin'
       -> you should see a bunch of *.dll and *.exe files
   - copy the 'Instant Meshes.exe' file into this folder', (rename it to external_instantmeshes)
  1. The 'Instant Meshes' Plugin

https://github.com/natowi/meshroom_external_plugins/files/4642928/InstantMeshes_0.4.1.zip

   Relax, you're almost done. Just copy this file ('InstantMeshes.py')
   into the Meshroom nodes folder.

   - open the folder '<your-location>/Meshroom-2019.2.0/lib/meshroom/nodes/aliceVision'
     -> if you see a '__init__.pyc' and a bunch of *.pyc files correspoding to
        the available nodes in Meshroom, you're at the right place ;-)
   - just copy this file ('InstantMeshes.py') into that folder and you're done!
  1. Verify Installation (optional)

   - start the 'Meshroom.exe' as usual
   - looking at the console output (on Windows: The console window is usualy hidden behind the Application window!)
     the first line you see should start with:

       Plugins loaded: CameraCalibration, CameraInit, CameraLocalization, ...

     followed by a list of all loaded plugin names.
     There MUST be an entry named 'InstantMeshes' in this list!
     If there's no 'InstantMeshes' entry, you probably copied this file into the wrong location.
     If the output starts with 'WARNING:' or 'ERROR:', there could be something wrong with
     the prerequisite dependecies, maybe wrong Python or OS (amd64, win32, ...) version.
    

Changelog: 0.4.1 Log implementation

0.4 (2020-02-19)

  • New Load/Save Wavefront Obj storing data in separate lists for vertex/texture/normal-ids
  • PoC using PyMeshFix to cleanup self-intersections
  • Documentation: added header and installation instructions

0.3 (2020-02-13)

  • minor fixes in buildCommandLine
  • draft implementation of Meshroom compliant OBJ conversion
  • added second output for the direct InstantMeshes OBJ output
  • changed some parameter descriptions

0.2 (2020-02-11)

  • added top-level comments(and this changelog) to the original comments from natowi
  • added advanced cli-params 'threads' and 'deterministic'
  • added processChunk method (prerequisite to implement MR compliant OBJ conversion)
  • changed commandline-binary prefix from 'alicevision_' to 'external_'

0.1 (2020-02-10)

based on original version from natowi:

  • implemented more complex (%params%) commandline parameter handling

natowi avatar May 03 '20 07:05 natowi

Since @djoerg :wave: did not respond for some time, I opened a PR to add this plugin to the official MR repository. @TigerVersusT you are welcome to contribute here https://github.com/alicevision/meshroom/pull/877

natowi avatar May 03 '20 08:05 natowi

@natowi Hi natowi, I've seem your TODOs in the "alicevision/meshroom#877", considering my limited understanding of meshroom, maybe I can try the " implement Meshroom log output ". But I have so many things to learn. Before doing this, can you please tell me something about this feature? Does it means to print logs of instant-meshes on the console?

TigerVersusT avatar May 04 '20 08:05 TigerVersusT

@TigerVersusT There is a Log manager for Python based nodes. Currently the InstantMeshes node uses print() but this is not very helpful because it is not stored in a file that can be viewed afterwards. https://github.com/alicevision/meshroom/pull/631 Here an implementation example https://github.com/alicevision/meshroom/pull/712

natowi avatar May 04 '20 11:05 natowi

@TigerVersusT There is a Log manager for Python based nodes. Currently the InstantMeshes node uses print() but this is not very helpful because it is not stored in a file that can be viewed afterwards. alicevision/meshroom#631 Here an implementation example alicevision/meshroom#712

Thanks! I'll take a look at the examples, and try to do it( may be a little bit longer )

TigerVersusT avatar May 05 '20 01:05 TigerVersusT

@natowi Hi! natowi. Another bother to you, I have read your suggestions and have some understanding of the meshroom log system——for CLI based nodes, the default log files are written by I/O redirecting( so our instant-meshes node does has log file ), and python based nodes can implement log using the LogManager class. My question is, does the " implement Meshroom log output " feature means making instant-meshes node's log has the same format as other meshroom CLI based nodes like texturing or simply recording debug messages into the log file?

TigerVersusT avatar May 15 '20 08:05 TigerVersusT

@TigerVersusT sorry, I forgot to answer you. Did the respond by ChemicalXandco help you? Yes, it would be good to write the debug messages into a log file.

natowi avatar May 16 '20 14:05 natowi