[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28243] trunk/blender/source/blender: move camera lens/angle conversion to BLI_math

Campbell Barton ideasman42 at gmail.com
Sat Apr 17 10:55:31 CEST 2010


Revision: 28243
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28243
Author:   campbellbarton
Date:     2010-04-17 10:55:31 +0200 (Sat, 17 Apr 2010)

Log Message:
-----------
move camera lens/angle conversion to BLI_math

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_object.h
    trunk/blender/source/blender/blenkernel/intern/object.c
    trunk/blender/source/blender/blenlib/BLI_math_rotation.h
    trunk/blender/source/blender/blenlib/intern/math_rotation.c
    trunk/blender/source/blender/blenlib/intern/uvproject.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/makesrna/intern/rna_camera.c

Modified: trunk/blender/source/blender/blenkernel/BKE_object.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_object.h	2010-04-17 08:33:42 UTC (rev 28242)
+++ trunk/blender/source/blender/blenkernel/BKE_object.h	2010-04-17 08:55:31 UTC (rev 28243)
@@ -77,8 +77,6 @@
 struct Camera *copy_camera(struct Camera *cam);
 void make_local_camera(struct Camera *cam);
 float dof_camera(struct Object *ob);
-float camera_get_angle(struct Camera *cam);
-void camera_set_angle(struct Camera *cam, float angle);
 	
 void *add_lamp(char *name);
 struct Lamp *copy_lamp(struct Lamp *la);

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2010-04-17 08:33:42 UTC (rev 28242)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2010-04-17 08:55:31 UTC (rev 28243)
@@ -773,17 +773,6 @@
 	return cam->YF_dofdist;
 }
 
-/* angle in radians */
-float camera_get_angle(Camera *cam)
-{
-	return 2.f * atan(16.0f/cam->lens);
-}
-
-void camera_set_angle(Camera *cam, float angle)
-{
-	cam->lens = 16.0f / tan(angle * 0.5f);
-}
-
 void *add_lamp(char *name)
 {
 	Lamp *la;

Modified: trunk/blender/source/blender/blenlib/BLI_math_rotation.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_math_rotation.h	2010-04-17 08:33:42 UTC (rev 28242)
+++ trunk/blender/source/blender/blenlib/BLI_math_rotation.h	2010-04-17 08:55:31 UTC (rev 28243)
@@ -166,6 +166,9 @@
 void mat4_to_dquat(DualQuat *r, float base[4][4], float M[4][4]);
 void dquat_to_mat4(float R[4][4], DualQuat *dq);
 
+float lens_to_angle(float lens);
+float angle_to_lens(float angle);
+
 #ifdef __cplusplus
 }
 #endif

Modified: trunk/blender/source/blender/blenlib/intern/math_rotation.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/math_rotation.c	2010-04-17 08:33:42 UTC (rev 28242)
+++ trunk/blender/source/blender/blenlib/intern/math_rotation.c	2010-04-17 08:55:31 UTC (rev 28243)
@@ -1503,3 +1503,13 @@
 	memcpy(dq1, dq2, sizeof(DualQuat));
 }
 
+/* lense/angle conversion (radians) */
+float lens_to_angle(float lens)
+{
+	return 2.0f * atan(16.0f/lens);
+}
+
+float angle_to_lens(float angle)
+{
+	return 16.0f / tan(angle * 0.5f);
+}

Modified: trunk/blender/source/blender/blenlib/intern/uvproject.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/uvproject.c	2010-04-17 08:33:42 UTC (rev 28242)
+++ trunk/blender/source/blender/blenlib/intern/uvproject.c	2010-04-17 08:55:31 UTC (rev 28243)
@@ -39,9 +39,6 @@
 	short do_persp, do_pano, do_rotmat;
 } UvCameraInfo;
 
-/* ugly */
-extern float camera_get_angle(struct Camera *cam);
-
 void project_from_camera(float target[2], float source[3], UvCameraInfo *uci)
 {
 	float pv4[4];
@@ -138,7 +135,7 @@
 	uci.do_pano = (camera->flag & CAM_PANORAMA);
 	uci.do_persp = (camera->type==CAM_PERSP);
 
-	uci.camangle= camera_get_angle(camera)/2.0f;
+	uci.camangle= lens_to_angle(camera->lens) / 2.0f;
 	uci.camsize=  uci.do_persp ?  uci.camsize= tanf(uci.camangle) : camera->ortho_scale;
 
 	if (invert_m4_m4(uci.caminv, ob->obmat)) {

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2010-04-17 08:33:42 UTC (rev 28242)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2010-04-17 08:55:31 UTC (rev 28243)
@@ -8435,7 +8435,6 @@
 	}
 	if(main->versionfile <= 243) {
 		Object *ob= main->object.first;
-		Camera *cam = main->camera.first;
 		Material *ma;
 
 		for(ma=main->mat.first; ma; ma= ma->id.next) {

Modified: trunk/blender/source/blender/makesrna/intern/rna_camera.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_camera.c	2010-04-17 08:33:42 UTC (rev 28242)
+++ trunk/blender/source/blender/makesrna/intern/rna_camera.c	2010-04-17 08:55:31 UTC (rev 28243)
@@ -42,14 +42,14 @@
 static float rna_Camera_angle_get(PointerRNA *ptr)
 {
 	Camera *cam= ptr->id.data;
-	
-	return camera_get_angle(cam);
+
+	return lens_to_angle(cam->lens);
 }
 
 static void rna_Camera_angle_set(PointerRNA *ptr, float value)
 {
 	Camera *cam= ptr->id.data;
-	camera_set_angle(cam, value);
+	cam->lens= angle_to_lens(value);
 }
 
 #else





More information about the Bf-blender-cvs mailing list