Maintain component orientation/position

 So I have a giant model (as discussed in a separate thread) and one approach for speeding up reconstruction and texturing is to split the big one into smaller ones, then run Reconstruction on different machines in parallel and combine later.

So far I have all my images aligned in one giant component.

The plan is to export smaller components as follows:

  • Select a portion of the cameras
  • Export component 
  • Repeat for multiple regions of the model
  • Import individual components as separate projects 
  • Reconstruct (and maybe texture)
  • Stitch all the components into one model later

HOWEVER, when I import the smaller components, the orientation is all over the place, so the resulting meshes will be arranged in random positions rather than properly adjacent. 

Any thoughts on dealing with this?

Just did something like this. 

https://support.capturingreality.com/hc/en-us/community/posts/360014755272-A-large-project-of-my-neighborhood-

Tell me what your working with.

How many pictures, what megapixel, how much ram, what video card, what processor, ssd or machanical, and how much disk space for cache if ssd?

It will be hard to recombine them if they are not reconstructed all in one go. I’ve tried a couple of years ago. I’m sure it can be done if you have 3d model editing skills. Other wise the edges will not match up and require substantial touch up. There will also be gaps in between the individual models where cameras from one selection will need information from cameras in another selection. There will be large gaps. 

Steven, 

Thanks again for the info. 

I got ~2700 pics. About 1/4 at 24M and the rest 42M. A few different machines; locally GTX 1080, 32GB ram, 500GB SSD, in the cloud up to p3.16x AWS (lots of horsepower there!)

 

Hi Tim,

you can export XMPs which contain the exact camera positions and if those are present, then RC will use this info instead of re-calculating when you click alignment (I believe, been a while). That means that if you export your components with enough overlap in the cameras and don’t go near the edge for reconstruction, the differences should be marginal. Depending on the purpose, the seams might be acceptable, they could be hidden in corners or just combined and re-meshed in a third party app…

Very similar to my setup. 32gb ram, gtx 1080, ssd, 1630 pictures about half 12mp and half 42mp. 

The last part of reconstruction, where it reads in the console part x/500, the last 20 or so took longer than the first 400. It used about 80GB of memory on those last 20 parts even though they where only like 20-50 vertices. After a few restarts I just let it run making sure my Virtual Memory was assigned to the fastest drive, as this was the bottle neck in this run. I tried to allocate my cache to my second fastest SSD and VM to the fastest. 

I don’t have any expertise on model editing and recombining meshes is beyond my skills, so Gotz or Jonathan are more qualified here.

 I should mention that it took 1-2 weeks of trying to get the settings right and restarting to get to the 48 hr run. If I had just let it run the first time (it just seemed sooo slow), I could have been done much sooner. You have to consider the dead line. Is testing a new work flow that could save time really going to save you time after a few restarts and mistakes?

you say you have multiple machines and its already aligned. you could copy the whole job on to each of the machines and use the recon box to run each section on each machie.

make the first box and save the recon box. edit it in a text editor and round up all the numbers then with a little bit of maths copy the file and edit it as many times as you want with different regions.

Yep, that was the plan in the beginning. 

The one issue with that approach is that the project is over 2500 images. So to run parallel full projects on multiple machines would have required multiple CLI licenses ($$$). 

That’s why I wanted to do it in components with smaller number of images in each.

Almost everything has been said.

I think the right method is :

-align by small chunk - I like to keep my small components in the 300-1500 range, because as the time is directly proportional to the number of features squared, above 1500 this is exploding - of course, it depends on your subject, how “local” it is, the precision of your pictures, the computer you have, the memory you have…  

-export and import your components in one final project. I confirm that you will need the big CLI license if the total pictures goes above 2500 - but if you are at the limit sometimes the small chunks prealignment helps you to kick out the useless pictures and if the total is under 2500, you are fine with the Promo license. You can also filter out some cameras.

Then, you don’t care about the components in different positions / scales / orientations because you need to realign to get one component, and this one will be oriented and positioned using ground control points, or manually.

As it was said before, you then need to reconstruct in one pass - so you need to first make sure you have one component first. 

Of course, depending on your subject you can also try to reconstruct seperate objects and stitch them in a 3D software - it could work in some cases, but usually this is less precise…

So, about parallelism, you can’t on one computer (RC is already parallel in nature but only one instance can run at a time - which is enough in my opinion), so one way to deal with a kind of parallelism (that is what I am doing) is to use one computer for the small individual alignments (with the Promo license - you don’t even need a GPU) and one computer (this one needs some GPU power and RAM) with another license (possibly the CLI if you go above 2500 pictures).

And then, all the “game” is to plan the captures so you have these chunks/clusters to align and that they eventually align together at the end, and gives you the precision you need. 

 

 

 

And, from my experience, this is not worth reconstructing an aligned model by chunks on seperate computers, because there is a “fixed price” (the depth map computation) that means that you would have to do it several times on each computer.

Just try to reconstruct the whole model on the bigger machine that you have (CPU/RAM/GPU).

Once again, it depends on the case, (and this is only my experience) but working with high res 42MP I never reconstruct at downscale 1 (high), except for small objects scanning. Depending on the case, I am usually working in D2 or, sometimes, in D3 on big projects (like more than 20,000 pictures reconstructions). The 42 MP become really useful when you texture - and at the end, I am simplifying my 1 to 2 Billions triangles model to something more manageable in the millions, so, sometimes no need to aim for a too high reconstruction quality.

Jonathan,

Thanks for the info. I have, for the most part, been following your outline recently.