Wrong Obj.max.x values in camera Coordsys ( Matrix3)

Hi all,

I am trying to measure an object's delta x and delta y values relative to my camera's coordsys but am getting incorrect values for both obj.max.x and obj.min.x

In this little script I am assigning the camera's (camera001's) transform.rotationpart matrix to a variable named c_rot (stands for camera rotation).

I then try measuring the obj.max.x and min.x values in this coordsys.
the delta_x value should be 100 as the box's width, height and length are all 100.

I get the following output from the listener after running the script:

"
C_rot = (matrix3 [0.579717,-0.814818,0] [0.515249,0.366583,0.774684] [-0.631226,-0.449097,0.632349] [0,0,0])
max_x = -16.3928
min_x = 16.3928
delta_x = 32.7856
OK

"

I will be using this for a zoom function in a render script I am working on, should anyone be interested I'd be happy to explain more.

Any help would be greatly appreciated, thank you! :D\

(--start of script scope
 
if (yesnocancelbox "do you want to reset the scene? \n after reset a box and cam will be created and box size \n (in cam coordsys) will be measured" == #yes) do (resetmaxfile #noprompt )
 
	--declaring initial variables
local c_rot =0, max_x=0, min_x=0
 
	--Create a Targetcamera                                                                             
		--	(I copied the orientation/position from the target cam in my scene)
		tcam = targetcamera()
		tcam.transform = (matrix3 [0.579717,-0.814818,0] [0.515249,0.366583,0.774684] [-0.631226,-0.449097,0.632349] [0,0,0]) 
		tcam.pos =  [ -197.464, -140.085, 197.174 ]
 
		--Assign camera's transform.rotationpart to 'c_rot' variable
			c_rot = tcam.transform.rotationpart as matrix3
			format "C_rot = % \n" c_rot
 
			--create box (which will be measured by script)
				box1 = box length:100 width:100 height:100 --create box 
				box1.pivot = box1.center --center box's pivot
				box1.transform = c_rot --align box to camera
 
	in coordsys c_rot (
 
		max_x = box1.max.x --measure obj.max.x
		min_x = box1.min.x --measure obj.min.x
		delta_x =abs ( (-1* min_x) + max_x ) --calculate delta_x
		format "max_x =  % \n min_x = % \n delta_x = % \n" max_x min_x delta_x --print result (check listener/forum post)
 
	)--end in coordsys c_rot do
 
)--end of script scope
AttachmentSize
measure_obj_in_cam_coordsys_test_script.ms1.35 KB

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
obaida's picture

nodeGetBoundingBox

you can use nodeGetBoundingBox

AttachmentSize
measure_obj_in_cam_coordsys_test_script_Fixed.ms 1.55 KB
Maarten's picture

Yes, still no clue

Not sure what is causing the weird measurement values in the coordsys, does indeed look like it should be a simple error. Am trying to work around it now but would still like to know what went wrong in the original code.
-Maarten

TsveTan's picture

Still unsolved?

It looks very simple...

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.