ROm222
(ROm222)
1
Please help!

I am trying to determine the target position (view position) of a Blender Camera so I do this:

cam = Blender.Object.Get(“Camera”)

loc = cam.loc # Camera Position

rot = cam.rot # Camera Rotation in Euler Angle

# rot[0] = rot[0] * RAD_TO_DEG # Convert Euler To Degree

# rot[1] = rot[1] * RAD_TO_DEG # Convert Euler To Degree

# rot[2] = rot[2] * RAD_TO_DEG # Convert Euler To Degree

# Then I calculate the camera view position by doing this:

loc[0] = loc[0] + (1.0 - math.cos( rot[0] ) )

loc[1] = loc[1] + (1.0 - math.cos( rot[1] ) )

loc[2] = loc[2] + (1.0 - math.cos( rot[2] ) )

The result obviously doesn’t seems to work… what Im doing wrong!?

Tks in advance,

Cheers,

Crouch
(Crouch)
2
*bump*

I’m quite curious for a solution to this ‘problem’ as well, so perhaps an enlightened mind can reply?

ROm222
(ROm222)
3
Ok, in order to reply to my own post… there’s the code to get the target position…

It’s working fine if the camera rotX is about 45 degree but every other value the calculation is wrong… can someone point me out why?

Cheers,

import math

import Blender

import Blender.NMesh

cam = Blender.Object.Get(“Camera”)

loc = cam.loc

rot = cam.rot

obj = Blender.Object.GetSelected()[0]

me = Blender.NMesh.GetRawFromObject( obj.name )

dd = 1.0

x = loc[0] - dd * math.cos(rot[0]) * math.sin(rot[2])

y = loc[1] + dd * math.cos(rot[0]) * math.cos(rot[2])

z = loc[2] - dd * math.sin(rot[0])

obj.LocX = x

obj.LocY = y

obj.LocZ = z

me.transform( obj.matrix )

me.update()

Blender.Redraw()

You could use the cameras transformation matrix to work it out.

camera_view = (Vector(0,0,-1) * ob.matrixWorld).toEuler()

ROm222
(ROm222)
5
My god I was far fetched with that one… finally it turns out that just:

t_pos = ( Blender.Mathutils.Vector(0, 0, -1) * cam.matrixWorld )

it’s alright

Cheers ideasman42,