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");


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to