Difference between revisions of "Coordinate System to Bounding Box.py"

From Agisoft
Jump to: navigation, search
 
Line 2: Line 2:
 
#rotates model coordinate system in accordance of bounding box for active chunk
 
#rotates model coordinate system in accordance of bounding box for active chunk
 
#scale is kept  
 
#scale is kept  
#compatibility: Agisoft PhotoScan Professional 1.1.0
+
#compatibility: Agisoft PhotoScan Professional 1.3.0
  
 
import PhotoScan  
 
import PhotoScan  
Line 16: Line 16:
 
T = chunk.transform.matrix
 
T = chunk.transform.matrix
 
s = math.sqrt(T[0,0] ** 2 + T[0,1] ** 2 + T[0,2] ** 2) #scaling
 
s = math.sqrt(T[0,0] ** 2 + T[0,1] ** 2 + T[0,2] ** 2) #scaling
S = PhotoScan.Matrix().diag([s, s, s, 1]) #scale matrix
+
S = PhotoScan.Matrix().Diag([s, s, s, 1]) #scale matrix
 
else:
 
else:
S = PhotoScan.Matrix().diag([1, 1, 1, 1])
+
S = PhotoScan.Matrix().Diag([1, 1, 1, 1])
  
 
T = PhotoScan.Matrix( [[R[0,0], R[0,1], R[0,2], C[0]], [R[1,0], R[1,1], R[1,2], C[1]], [R[2,0], R[2,1], R[2,2], C[2]], [0, 0, 0, 1]])
 
T = PhotoScan.Matrix( [[R[0,0], R[0,1], R[0,2], C[0]], [R[1,0], R[1,1], R[1,2], C[1]], [R[2,0], R[2,1], R[2,2], C[2]], [0, 0, 0, 1]])

Latest revision as of 17:51, 6 February 2017

#rotates model coordinate system in accordance of bounding box for active chunk
#scale is kept 
#compatibility: Agisoft PhotoScan Professional 1.3.0

import PhotoScan 
import math 

doc = PhotoScan.app.document
chunk = doc.chunk

R = chunk.region.rot		#Bounding box rotation matrix
C = chunk.region.center		#Bounding box center vector

if chunk.transform.matrix:
	T = chunk.transform.matrix
	s = math.sqrt(T[0,0] ** 2 + T[0,1] ** 2 + T[0,2] ** 2) 		#scaling
	S = PhotoScan.Matrix().Diag([s, s, s, 1]) #scale matrix
else:
	S = PhotoScan.Matrix().Diag([1, 1, 1, 1])

T = PhotoScan.Matrix( [[R[0,0], R[0,1], R[0,2], C[0]], [R[1,0], R[1,1], R[1,2], C[1]], [R[2,0], R[2,1], R[2,2], C[2]], [0, 0, 0, 1]])

chunk.transform.matrix = S * T.inv()		#resulting chunk transformation matrix