Retiring BLAM and announcing fSpy - a stand alone camera matching app

Wonderful program ! This is awesome !
Just curious as to why there is only 1 and 2 in the perspective list, what about three points perspective ?

I request lens data from G7X Mark II into this plugin, the G7X Mark II is a very popular camera.

Glad you like it! 2 vanishing points is all it takes to determine the camera’s orientation, focal length and position when the principal point is in the middle of the image, which I have assumed is the most common case. You can choose “from 3rd vanishing point” from the principal point menu if you want to specify a third vanishing point, which is then used to compute the principal point position

I installed and test it to day. It´s PIXEL PERFECT! thank you. Such accurate thing.
I got my perspective and all. But I did the picture with my phone camera, sensor is just mm
and I only got a atandard of 24x35 mm default measure on the viewer. Is there a way where I can adjust it to less than those values?

Great work !

Please update with G7X Mark II lens data :smiley:
Most Youtube vloggers uses this camera.

I use it too for my YouTube videos.

I just uploaded a new version if you want to have a look.

The main improvement is a cleaner results panel where individual values can be copied and pasted into applications without a dedicated fSpy importer. If anyone is using a 3D modeling tool other than Blender, it would be interesting to hear if this kind of manual import works.

2 Likes

Thank you for BLAM and all your efforts. You add some love to Blender.
Best wishes.

1 Like

Hello, it’s me again…

To anyone who has requested zooming: I just published a new build in which you can hold down shift while dragging a control point. This increases dragging precision and zooms in on the area around the control point. Let me know what you think!

4 Likes

Hello @stuffmatic.
A great idea that will definitely improve functionality,
Does the magnification factor depend on size of the image? I noticed that smaller files cause zoom out effect :slight_smile:

Cool! Would it be possible to show the magnifier up always when Shift is pressed instead of only when dragging control points? This would be handy in case you have a long lines across the image and you want to check how they align on the whole length.

Good feature, I was about to suggest cursor keys move for more precise after selecting control point.

very elegant solution (zooming).

One change and it’s so much better. Nice work :slight_smile:

First of all let me say this is a superb tool! I loved BLAM but this is a big improvement because you can see your adjustments real-time rather than having to start from scratch with new GP lines each time.

I gave this a try with Poser and it…more or less works. That software uses some very weird internal units so position and focal length are tricky to convert over. And the sensor size isn’t user-exposed so I’m in the process of doing some calibrations to figure out what it is.

Some suggestions for improvements to fSpy:

  • Add Euler rotations, if possible. Some software only has that input. Currently it’s possible to import the data into Blender and have it do the conversion but that’s an extra step.
  • Have the camera import into blender copy over the custom camera data (sensor size) since this directly interacts with focal length
  • Allow direct XYZ manipulation of the “axis origin.”
  • For calibration purposes allow a direct scale multiplication to be set. Currently this can be done somewhat with the reference measurement but that requires moving the origin around which throws off the camera position.

Hey, thanks for testing!

Add Euler rotations, if possible.

Good idea. Makes sense.

Have the camera import into blender copy over the custom camera data (sensor size) since this directly interacts with focal length

Currently, the import script just sets the field of view and does not deal with camera presets. As long as the render resolution matches the original image, things should work. Can you give an example of a use case where it’s good to also have the proper sensor size set in Blender?

Allow direct XYZ manipulation of the “axis origin.”

I’m afraid I don’t understand this one. The origin is in the (0, 0, 0) position by definition. Could you please clarify?

For calibration purposes allow a direct scale multiplication to be set. Currently this can be done somewhat with the reference measurement but that requires moving the origin around which throws off the camera position

Can you give an example of a use case where setting the scale factor manually would be useful? Currently I’m assuming that the user either doesn’t care (in which case a reasonable default camera distance is used) or wishes to control the camera distance precisely (to match a given reference distance). Also, applying an arbitrary overall scale is a trivial operation in a 3D modeling tool (as opposed to matching a reference distance).

This was a very quick experiment, that took me zero time matching the camera. It just worked, thanks to the zoom for precision.

Penn & Teller Fool Us :slight_smile:

Yeah, kinda been going through a YouTube spell of them - US version because, y’know, Alison Hannigan.

I liked the first 2 seasons a lot more because of pro host Jonathan Ross.

I took a closer look at how the export to Blender actually works and now see why this isn’t needed: Blender export uses only the image dimensions and horizontal FoV, right? Everything else is calculated from that in Blender.

Sorry, I had a feeling that might be unclear. What I mean is the ability to move the (0,0,0) point on screen along each axis. In other words some more precise control about where in the scene the origin sits. For instance if the origin is centered on X then moving it vertically on screen impacts both Y and Z. It would be useful to be able to slide the origin along Y or Z only. Obviously this is not a needed feature since everything else can just be moved relative to the origin in software.

This is another minor QoL request, really. One use case is when I have a particular point that I want to be the scene origin, and also want to match a reference distance that isn’t directly colinear with the origin. For instance, a poster on a wall, door frame for height, etc. So in that case I could use the reference distance to determine the scale for conversion to the external software units, then set the origin back to the desired location.

Thank you again for your hard work on this app, it is really a game-changer.