Agisoft Metashape

Agisoft Metashape => Bug Reports => Topic started by: badger on December 12, 2016, 04:01:08 PM

Title: Issues with importing bundler.out alignment
Post by: badger on December 12, 2016, 04:01:08 PM
Hello,

I'm trying to import scene and mesh from RealityCapture, to take advantage of the great texturing capabilities of Photoscan. The scene is exported from RC in bundler format but when importing in Photoscan, the mesh is translated on the z axis with respect to the cameras (see attached screenshot).

I imported the same mesh and the same bundler.out with meshlab and the alignment shows correct there, therefore it is not a problem on the export side, but Photoscan is rendering a translated mesh, or translated camera positions.

Any suggestion how this could be fixed on my side, or any hope to get a patch for this ?

thank you in advance
Title: Re: Issues with importing bundler.out alignment
Post by: Alexey Pasumansky on December 12, 2016, 04:06:15 PM
Hello badger,

If you can send the bundler file, PhotoScan project in PSZ format (I assume only added camera instances will be sufficient) and mesh file to be imported to support@agisoft.com, we'll check that.
Title: Re: Issues with importing bundler.out alignment
Post by: badger on December 12, 2016, 04:33:43 PM
thank you. I'll sent everything via WeTransfer.

Do you also need the photographs ?
Title: Re: Issues with importing bundler.out alignment
Post by: badger on December 12, 2016, 04:41:00 PM
by eyeballing the alignment it looks a bit offset also along the X and Y axes. Not as much as the Z axis.
Title: Re: Issues with importing bundler.out alignment
Post by: Alexey Pasumansky on December 12, 2016, 04:46:10 PM
Hello badger,

The images are not required.
Title: Re: Issues with importing bundler.out alignment
Post by: Alexey Pasumansky on December 13, 2016, 06:54:16 PM
Hello badger,

Can you also send the list of files that you are using for Meshlab import? We are trying to open the mesh with the bundler file there, but it keeps crashing.

Also please specify which edition of PhotoScan you are using.
Title: Re: Issues with importing bundler.out alignment
Post by: badger on December 14, 2016, 02:25:11 PM
Hello badger,

Can you also send the list of files that you are using for Meshlab import? We are trying to open the mesh with the bundler file there, but it keeps crashing.

Also please specify which edition of PhotoScan you are using.

hello,

I'm using Photoscan 1.2.6

I sent the list of photos yesterday, but pathnames need to be adjusted to your testing environment, otherwise meshlab crashes because it does not find the photos.
Title: Re: Issues with importing bundler.out alignment
Post by: Alexey Pasumansky on December 14, 2016, 02:51:57 PM
Hello badger,

Is it Standard or Professional edition?

I think we have found what's the problem with bundler.out import. To avoid coordinate overflow (internal coordinates of the chunk) PhotoScan is translating the point of origin for the imported cameras.

I'll try to send you back the project where the camera positions are aligned with mesh (planning to do that with Python script).
Title: Re: Issues with importing bundler.out alignment
Post by: badger on December 14, 2016, 08:40:26 PM
Hello badger,

Is it Standard or Professional edition?

I think we have found what's the problem with bundler.out import. To avoid coordinate overflow (internal coordinates of the chunk) PhotoScan is translating the point of origin for the imported cameras.

I'll try to send you back the project where the camera positions are aligned with mesh (planning to do that with Python script).

It's standard edition, for the time being. And thanks for the explanation. Would you be so kind to give details about the translation of the PoO, so that would be possible to compensate it ?
Title: Re: Issues with importing bundler.out alignment
Post by: Alexey Pasumansky on December 14, 2016, 09:23:41 PM
Hello badger,

It's just a translation, all the rotations are kept, so the shift would be the same for each camera, meaning that you can compare the last column in 4x4 matrix of camera.transform (as it kept in the project xml, for example) with the corresponding camera center from the bundler file.

To calculate the camera center from bundler out you need to use the following:
Code: [Select]
center = - R.t() * translationHere R is 3x3 rotation matrix from bundler file and translation: three-component vector form the same file. R.t() means that matrix is transposed.
Title: Re: Issues with importing bundler.out alignment
Post by: badger on December 16, 2016, 12:52:28 PM
Hi Alexey,

I think it's fair to thank you guys also publicly, on the forum. A very top level customer support.

keep it  ;)
Title: Re: Issues with importing bundler.out alignment
Post by: Alexey Pasumansky on March 14, 2017, 01:08:07 PM
Here's the script for those, who has the similar issue. I think that in the next update (version 1.3.1) we'll change the internal representation a little, so that the import could work without any corrections using scripting.

Code: [Select]
import PhotoScan

doc = PhotoScan.app.document
chunk = doc.chunk
path = PhotoScan.app.getOpenFileName("Specify bundler.out file used:")
file = open(path, "rt")

coords = list()

line = file.readline()
line = file.readline()
for i in range(0, len(chunk.cameras)):
    line = file.readline()
    line = file.readline()
    line = file.readline()
    line = file.readline()
    line = file.readline()
    x, y, z = line.split()
    coords.append(PhotoScan.Vector([float(x), float(y), float(z)]))

T = chunk.cameras[i].transform

###for version 1.3:
        R = chunk.cameras[i].transform.rotation() * PhotoScan.Matrix.Diag([1,-1,-1]) #for version 1.3
###end of code for version 1.3

###for version 1.2:
#R = PhotoScan.Matrix([[T[0,0], T[0,1], T[0,2]],
# [T[1,0], T[1,1], T[1,2]],
# [T[2,0], T[2,1], T[2,2]]])
#R = R * PhotoScan.Matrix.Diag([1,-1,-1]) #for version 1.2
###end of code for version 1.2

    v = (-1) * R * coords[-1]

chunk.cameras[i].transform = PhotoScan.Matrix([[T[0,0], T[0,1], T[0,2], v.x],
[T[1,0], T[1,1], T[1,2], v.y],
[T[2,0], T[2,1], T[2,2], v.z],
[0, 0, 0, 1]])

file.close()

print("finished")
Title: Re: Issues with importing bundler.out alignment
Post by: jsloat on May 24, 2017, 09:25:27 PM
I really appreciate the example plug-in to import Bundler files from Reality Capture. (I learn a lot from such examples)

As others have no doubt discovered, it is unlikely to work "out of the box" on substantial files like I've been trying.
I'm trying to use it to convert a Bundler file with 3500 cameras and it keeps crashing.

After wrestling to try to get it working for a day, my debugging shows that the format of the bundler.out
file being created in the Current Beta 1.0 version of Reality Capture has several complicating factors.

The first was ensuring that values that have exponential notation from RC, get wrapped in a Float() call to handle that.

The second was that in the case where PhotoScan didn't align certain images, there will be no transform to stuff the position data into so watch for that. If you simply skip those then you'll likely be stuffing position data into a non-corresponding image/camera.

The 3rd issue is that (at least in my case) the line record structure of the file is rather inconsistent.
For much of my Bundler file, the 3x3 transform matrix has a triplet per line, (which the plug-in tries to skip
using readline() but part way through reading the bundler file, I start encountering lines where all 9 transform values are on a single line, and elsewhere I get as many as 13 values per line, which makes the parsing logic much more complicated than this plug-in (skipping fixed numbers of lines) will handle.

My plan is to try exporting from Reality Capture in another format such as Maya and rewrite a version of this plug-in to parse that file format (hoping it is a bit more of a structured record file format ).

(Will share if I get that working)

-Jay-
Title: Re: Issues with importing bundler.out alignment
Post by: Alexey Pasumansky on May 24, 2017, 09:32:40 PM
Hello Jay,

Latest version of PhotoScan (1.3.2) should be able to import bundler.out file without any shift, so the script would be no longer needed.
Title: Re: Issues with importing bundler.out alignment
Post by: risu on July 22, 2017, 08:06:24 PM
I'm having issues getting RC bundler file into latest Photoscan.

When I try it, I just get generic error "Can't import cameras: <filename>"

I'm using PS Standard, 1.3.2 build 4205 and RC 1.0.2.2600 Steam
Title: Re: Issues with importing bundler.out alignment
Post by: risu on July 22, 2017, 08:10:51 PM
Link to sample psz and bundler file that PS doesn't accept: bundler_and_psz.zip (https://www.dropbox.com/s/uoycd16iiagaf6s/bundler_and_psz.zip?dl=1)
Title: Re: Issues with importing bundler.out alignment
Post by: mwillis on October 31, 2017, 05:55:28 PM
Hi Risu, I am having the same error with Photoscan Pro 1.3.4. Built 5067.  Did you ever get it to work?

Thanks
Title: Re: Issues with importing bundler.out alignment
Post by: Alexey Pasumansky on October 31, 2017, 06:26:33 PM
Hello Mark,

Can you share the project file (with loaded cameras) and bundler.out file for import with support@agisoft.com?

Please also check that bundler file contains the same number of cameras that are available in the active chunk of PhotoScan project where to the file is imported.
Title: Re: Issues with importing bundler.out alignment
Post by: mwillis on October 31, 2017, 11:00:27 PM
Hi Alexey, I found the problem. It was to do with the number of photos, as you mentioned.

Thank you.