alicevision / Meshroom

3D Reconstruction Software
http://alicevision.org
Other
11.04k stars 1.07k forks source link

Camera / model orientation upside down #256

Open DevoStevo66 opened 5 years ago

DevoStevo66 commented 5 years ago

When my models load in Meshroom, they are always orientated upside down relative to the grid. Just wondering if you can, and how you would re-calibrate the camera or change a setting somewhere to fix it's axis orientation?

I've looked at CameraInit and SFM node attributes in Meshroom but I really have no idea where to start. Otherwise it would be good if you could re-orientate the mesh in Meshroom so if exported/imported to/from external programs you don't have to work on an upside down model (as apparently you can't change the model orientation if you want to re-texture in Meshroom etc.).

I've learnt how to use the MeshDecimate node to clean up meshes in Meshroom and re-texture using LSCM unwrap to produce one texture-atlas rather than 2 (which was happening often using Basic unwrap). So this is why I'd like to fix the orientation issue. If you can orientate the model so lines up with ortho views it makes for easier cleaning up of mesh for instance.

ChemicalXandco commented 5 years ago

I don't think it is possible in meshroom but you can import the obj into meshlab then go to Filters > Normals, Curvatures and Orientation > Transform: Rotate and align it yourself from there.

sunilk-n commented 5 years ago

When my models load in Meshroom, they are always orientated upside down relative to the grid. Just wondering if you can, and how you would re-calibrate the camera or change a setting somewhere to fix it's axis orientation?

I've looked at CameraInit and SFM node attributes in Meshroom but I really have no idea where to start. Otherwise it would be good if you could re-orientate the mesh in Meshroom so if exported/imported to/from external programs you don't have to work on an upside down model (as apparently you can't change the model orientation if you want to re-texture in Meshroom etc.).

I've learnt how to use the MeshDecimate node to clean up meshes in Meshroom and re-texture using LSCM unwrap to produce one texture-atlas rather than 2 (which was happening often using Basic unwrap). So this is why I'd like to fix the orientation issue. If you can orientate the model so lines up with ortho views it makes for easier cleaning up of mesh for instance.

Is there an option to retexture on a mesh edited in meshroom... If so, Can anyone explain me the process of how to do it

XenonofArcticus commented 5 years ago

Setting orientation and real-world scale by clicking orthogonal known-length edges of an in-scene calibration target would be super useful. I've done this in Pix4D and it makes a big difference.

pjgoodall commented 3 years ago

I'm having the same experience. Seems like a fault, rather than a feature request.

natowi commented 3 years ago

@pjgoodall That is expected in MR 2019.2. The issue has already been addressed. It will be included in the next release https://github.com/alicevision/meshroom/pull/978

natowi commented 3 years ago

This feature is now available with the 2020 release. 1) add a SfmTransform node 2) change the mode to manual & compute the node 3) double click on the SfmTransform node to load the pointscloud it in the 3D viewer 4) click on the 3D gizmo icon

(The SfmTransform node can be placed after the StructureFromMotion node (output) or the Meshing node (output).)

transform-1

pjgoodall commented 3 years ago

Is the EXIF Orientation tag honoured?

natowi commented 3 years ago

Is the EXIF Orientation tag honoured?

@pjgoodall You can use "FromSingleCamera" to orient the model. In my case the correct image orientation is being used.

endolith commented 3 years ago

The SfmTransform node can be placed after the StructureFromMotion node (output) and the Meshing node (output).

Does it have to be placed after both?

natowi commented 3 years ago

Does it have to be placed after both?

No, I now replaced and with or in the original post. Thanks.

avclubvids commented 1 year ago

@natowi - I'm so glad I found this post, I was not aware of the "compute, then double click the node" method of activating the SFMTransform's gizmo, and I was losing my mind!

Is there a way to manipulate this gizmo in World space? My data solved at a ~45º angle, so rotating it to level and moving it to the origin was a huge hassle, with the gizmo being locked to local coords, as far as I could find.

natowi commented 1 year ago

I added the info to the wiki here https://github.com/alicevision/Meshroom/wiki/Model-orientation @avclubvids If you have a camera with the correct orientation you can use FromSingleCamera as described. If your images have GPS metadata, you may be able to use GPS alignment: https://github.com/alicevision/AliceVision/pull/1069 using the "auto" setting: "auto: Using X axis of all cameras as horizon. gps north and scale if available. cameras center mean is used as origin."

Use cameras X axis to estimate the horizontal plane (and the horizon)
Use GPS measurements (if available) to align the Z axis with the north
Use GPS measurements (if available) to set the scale (otherwise scaled such that stddev=1)
Use cameras center mean as frame origin

https://github.com/alicevision/Meshroom/pull/1954

avclubvids commented 1 year ago

@natowi - I followed the instructions and told MR to re-calculate everything downstream of the SFMTransform node... but it seems to have ignored it. Do I need to purge the cached results before re-running it? Screenshot showing the correct SFMTransform orientation and the old/incorrect mesh after it finished re-processing:

MicrosoftTeams-image

natowi commented 1 year ago

sorry, I forgot: there seems to be a bug in the current release https://github.com/alicevision/Meshroom/issues/1994