IMPORT 3D CAMERA POSE

Hi!

RealityCapture is a great software. It’s perfect for working with photos and scans in real life, but it’s much more complicated for working with 3D renderings, even though the camera positions are known. This could be very useful for radiance fields, such as Gaussian splatting. Could we hope to be able to import camera positions into FBX, for example? Either multiple cameras in the file, or a camera animation? I tested it with flight plans, but it’s not very user-friendly and a bit limited.

Thanks!

Hi @StephaneAgullo
This is not possible, but you can import COLMAP files or BUNDLER with the wanted alignment into RealityCapture.
As you wrote, that it is perfect for working with photos and scans, this is the main purpose of the app - to create a models which can be used in some other application.
I suppose there are only 2D renders available: Rendering Images from Camera Positions | Tutorial

Hi @OndrejTrhan ! Thanks for your reply, indeed, the software is not called Virtuality Capture, but with the advances in radience fields, it would be super practical, because it’s really a shame to have to align known positions in 3D! However, I think I’ll find with the flight logs, I’m writing a 3ds max script, which works on positions, but not yet on rotations! Here is the script, if someone can help me I’m interested, GPT can’t do it! It would be really super practical to process the renderings & the point cloud, to then export that to Postshot & co! While waiting for Reality Capture to offer gaussians splats of course! Thanks again!

An example of aligned rendering in Reality Capture,

And integrated with drones, but that’s simpler,

And here’s the code for my script, just in case:

(
    local sframe = animationRange.start.frame as integer
    local eframe = animationRange.end.frame as integer

    local path = getSaveFileName caption:"Exporter Camera CSV" filename:"camera_export.csv" types:"CSV (*.csv)|*.csv|"
    if path == undefined then return false

    local file = createFile path
    format "image_name,x,y,z,rot_x,rot_y,rot_z,focal_length\n" to:file

    for cam in cameras where (isProperty cam #rotation and classof cam != TargetObject) do
    (
        for t = sframe to eframe do at time t (
            local pos = cam.position

            -- ✅ Récupération des angles du contrôleur Euler_XYZ, en DEGRÉS
            local rot_x = cam.rotation.controller.x_rotation
            local rot_y = cam.rotation.controller.y_rotation
            local rot_z = -cam.rotation.controller.z_rotation  -- RC: inverser le Z

            local focal = try(cam.focalLength as float) catch(35.0)
            local frameName = "RENDER_" + (formattedPrint t format:"04d") + ".png"

            local line = frameName + "," +
                         pos.x as string + "," +
                         pos.y as string + "," +
                         pos.z as string + "," +
                         rot_x as string + "," +
                         rot_y as string + "," +
                         rot_z as string + "," +
                         focal as string + "\n"

            format line to:file
        )
    )

    close file
    messageBox ("✅ Export terminé avec angles en degrés affichés dans Max \n" + path)
)

I am sorry, but this won’t work in RealityCapture for now. As it is a photogrammetry software, the captures need to follow the basic photogrammetry principles. 6 images for such object is too few. Also, if those will be aligned properly (you ca try it without the rotation’s usage), as their pose is forced, there couldn’t be any features to create the model.
Also, you need to be careful with the rotations, as there are Yaw/Pitch/Roll used and there are some issue importing those.

Yes, I know, but it’s for testing, if I can get the 6 cameras, it will work for the rest! The rotation processing is different between 3ds & RC, I can’t find the correspondence, but I’ll find it eventually! RC is really great for reality, but if one day you can make it compatible with 3D rendering, it will make a lot of sense with gaussian splatting! I don’t think importing camera positions in 3D is that complicated, with any 3D format, and it would be really super practical! Thanks again!

Some old work, bravo & merci for your work!

I suppose just importing the cameras to 3D position is available also now. To do so, you need to use the flightlog, as you wrote and with proper values, or you can use XMPs (RealityCapture Help), but there are used rotation matrices.

Good idea! I’ll try it if I can’t do it, I’m really bad at development, and GPT helps me as much as it can, don’t you have more information on these matrices? It could help us! The only information I found is this document. Thanks again!

Those are basically general rotation matrices.
There is nothing special about them.