This was originally posted to the Python Scripting theme but is probably more appropriate here.
I'm working with some custom software that allows some photo overlay tools on dense clouds. When I import the dense cloud and camera position data from an unscaled model, it works fine. However, when I import the same from a scaled model, the camera positions are not correct. We use the script below to export the .xml camera position file as well as a file that contains the transform and x,y.z position data for every camera. I've looked these over and it looks like the position data exported from the scaled model is exactly the same as that pulled from an unscaled version of the same model. I'm wondering if anybody knows why this is and how I can get position data for the cameras in the scaled coordinate system.
----------------------------------------------------------------------------------------------------------------------------------------
import PhotoScan
import math
import os
import json
doc = PhotoScan.app.document
chunk = doc.chunk # FIXME thyis is just the active chunk
cams = chunk.cameras
proj_path = doc.path
proj_dir, proj_name = os.path.split(proj_path)
proj_name = proj_name[:-4]
outputs = {}
cams_filename = proj_dir + '/' + proj_name + '.cams.xml'
meta_filename = proj_dir + '/' + proj_name + '.meta.json'
meta_file = open(meta_filename, 'w')
chunk.exportCameras(cams_filename)
for cam in cams:
key = cam.key
path = cam.photo.path
center = cam.center
if center is not None:
geo = chunk.transform.matrix.mulp(center)
if chunk.crs is not None:
lla = list(chunk.crs.project(geo))
center = list(center)
agi_trans = cam.transform
trans = None
if agi_trans is not None:
trans = [list(agi_trans.row(n)) for n in range(agi_trans.size[1])]
outputs[key] = {'path' : path, 'center' : center, 'transform' : trans}
print(outputs)
meta_file.write(json.dumps({'cameras' : outputs}, indent=4))
meta_file.close()
------------------------------------------------------------------------------------------------------------------------------------------