[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