[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28201] trunk/blender/source/blender: Fix [#22029] Camera in degree mode doesn't update

Matt Ebb matt at mke3.net
Thu Apr 15 06:56:46 CEST 2010


Revision: 28201
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28201
Author:   broken
Date:     2010-04-15 06:56:44 +0200 (Thu, 15 Apr 2010)

Log Message:
-----------
Fix [#22029] Camera in degree mode doesn't update

Removed the camera->angle from DNA, now it just uses RNA to handle the conversions.
Really need to convert this to physical units at some point... :/

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_object.h
    trunk/blender/source/blender/blenkernel/intern/object.c
    trunk/blender/source/blender/blenlib/intern/uvproject.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/makesdna/DNA_camera_types.h
    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-15 01:35:32 UTC (rev 28200)
+++ trunk/blender/source/blender/blenkernel/BKE_object.h	2010-04-15 04:56:44 UTC (rev 28201)
@@ -77,6 +77,9 @@
 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);
 void make_local_lamp(struct Lamp *la);

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2010-04-15 01:35:32 UTC (rev 28200)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2010-04-15 04:56:44 UTC (rev 28201)
@@ -679,7 +679,6 @@
 	cam=  alloc_libblock(&G.main->camera, ID_CA, name);
 
 	cam->lens= 35.0f;
-	cam->angle= 49.14f;
 	cam->clipsta= 0.1f;
 	cam->clipend= 100.0f;
 	cam->drawsize= 0.5f;
@@ -774,6 +773,17 @@
 	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/intern/uvproject.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/uvproject.c	2010-04-15 01:35:32 UTC (rev 28200)
+++ trunk/blender/source/blender/blenlib/intern/uvproject.c	2010-04-15 04:56:44 UTC (rev 28201)
@@ -135,7 +135,7 @@
 	uci.do_pano = (camera->flag & CAM_PANORAMA);
 	uci.do_persp = (camera->type==CAM_PERSP);
 
-	uci.camangle= DEG2RAD(camera->angle)/2.0f;
+	uci.camangle= DEG2RAD(camera_get_angle(camera))/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-15 01:35:32 UTC (rev 28200)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2010-04-15 04:56:44 UTC (rev 28201)
@@ -8437,10 +8437,6 @@
 		Object *ob= main->object.first;
 		Camera *cam = main->camera.first;
 		Material *ma;
-		
-		for(; cam; cam= cam->id.next) {
-			cam->angle= 360.0f * (float)atan(16.0f/cam->lens) / (float)M_PI;
-		}
 
 		for(ma=main->mat.first; ma; ma= ma->id.next) {
 			if(ma->sss_scale==0.0f) {

Modified: trunk/blender/source/blender/makesdna/DNA_camera_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_camera_types.h	2010-04-15 01:35:32 UTC (rev 28200)
+++ trunk/blender/source/blender/makesdna/DNA_camera_types.h	2010-04-15 04:56:44 UTC (rev 28201)
@@ -46,11 +46,13 @@
 	struct AnimData *adt;	/* animation data (must be immediately after id for utilities to use it) */ 
 	
 	short type, flag;
-	float passepartalpha, angle;
+	float passepartalpha;
 	float clipsta, clipend;
 	float lens, ortho_scale, drawsize;
 	float shiftx, shifty;
 	
+	float pad;
+	
 	/* yafray: dof params */
 	/* qdn: yafray var 'YF_dofdist' now enabled for defocus composit node as well.
 			The name was not changed so that no other files need to be modified */

Modified: trunk/blender/source/blender/makesrna/intern/rna_camera.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_camera.c	2010-04-15 01:35:32 UTC (rev 28200)
+++ trunk/blender/source/blender/makesrna/intern/rna_camera.c	2010-04-15 04:56:44 UTC (rev 28201)
@@ -36,29 +36,20 @@
 
 #ifdef RNA_RUNTIME
 
-static void rna_Camera_angle_update(Main *bmain, Scene *scene, PointerRNA *ptr)
-{
-	Camera *cam= (Camera*)ptr->id.data;
-	cam->lens = 16.0f / tan(M_PI*cam->angle/360.0f);
-}
+#include "BKE_object.h"
 
-static void rna_Camera_lens_update(Main *bmain, Scene *scene, PointerRNA *ptr)
-{
-	Camera *cam= (Camera*)ptr->id.data;
-	cam->angle= 360.0f * atan(16.0f/cam->lens) / M_PI;
-}
-
 /* only for rad/deg conversion! can remove later */
 static float rna_Camera_angle_get(PointerRNA *ptr)
 {
 	Camera *cam= ptr->id.data;
-	return cam->angle * (M_PI / 180.0);
+	
+	return camera_get_angle(cam);
 }
 
 static void rna_Camera_angle_set(PointerRNA *ptr, float value)
 {
 	Camera *cam= ptr->id.data;
-	cam->angle= value * (180.0 / M_PI);
+	camera_set_angle(cam, value);
 }
 
 #else
@@ -93,12 +84,6 @@
 	RNA_def_property_ui_text(prop, "Passepartout Alpha", "Opacity (alpha) of the darkened overlay in Camera view");
 	RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
 
-	prop= RNA_def_property(srna, "angle", PROP_FLOAT, PROP_ANGLE);
-	RNA_def_property_range(prop, M_PI * (0.367/180.0), M_PI * (172.847/180.0));
-	RNA_def_property_ui_text(prop, "Angle", "Perspective Camera lens field of view in degrees");
-	RNA_def_property_float_funcs(prop, "rna_Camera_angle_get", "rna_Camera_angle_set", NULL); /* only for deg/rad conversion */
-	RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Camera_angle_update");
-
 	prop= RNA_def_property(srna, "clip_start", PROP_FLOAT, PROP_NONE);
 	RNA_def_property_float_sdna(prop, NULL, "clipsta");
 	RNA_def_property_range(prop, 0.0f, FLT_MAX);
@@ -115,7 +100,13 @@
 	RNA_def_property_float_sdna(prop, NULL, "lens");
 	RNA_def_property_range(prop, 1.0f, 5000.0f);
 	RNA_def_property_ui_text(prop, "Lens", "Perspective Camera lens value in millimeters");
-	RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Camera_lens_update");
+	RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
+	
+	prop= RNA_def_property(srna, "angle", PROP_FLOAT, PROP_ANGLE);
+	RNA_def_property_range(prop, M_PI * (0.367/180.0), M_PI * (172.847/180.0));
+	RNA_def_property_ui_text(prop, "Angle", "Perspective Camera lens field of view in degrees");
+	RNA_def_property_float_funcs(prop, "rna_Camera_angle_get", "rna_Camera_angle_set", NULL); /* only for deg/rad conversion */
+	RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
 
 	prop= RNA_def_property(srna, "ortho_scale", PROP_FLOAT, PROP_NONE);
 	RNA_def_property_float_sdna(prop, NULL, "ortho_scale");





More information about the Bf-blender-cvs mailing list