[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26608] trunk/blender: access spot size in radians from python.

Campbell Barton ideasman42 at gmail.com
Thu Feb 4 20:24:20 CET 2010


Revision: 26608
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26608
Author:   campbellbarton
Date:     2010-02-04 20:24:20 +0100 (Thu, 04 Feb 2010)

Log Message:
-----------
access spot size in radians from python.

Modified Paths:
--------------
    trunk/blender/release/scripts/io/engine_render_pov.py
    trunk/blender/release/scripts/io/export_fbx.py
    trunk/blender/release/scripts/io/export_x3d.py
    trunk/blender/source/blender/makesrna/intern/rna_lamp.c

Modified: trunk/blender/release/scripts/io/engine_render_pov.py
===================================================================
--- trunk/blender/release/scripts/io/engine_render_pov.py	2010-02-04 17:38:39 UTC (rev 26607)
+++ trunk/blender/release/scripts/io/engine_render_pov.py	2010-02-04 19:24:20 UTC (rev 26608)
@@ -169,8 +169,8 @@
                 file.write('\tspotlight\n')
 
                 # Falloff is the main radius from the centre line
-                file.write('\tfalloff %.2f\n' % (lamp.spot_size / 2.0)) # 1 TO 179 FOR BOTH
-                file.write('\tradius %.6f\n' % ((lamp.spot_size / 2.0) * (1.0 - lamp.spot_blend)))
+                file.write('\tfalloff %.2f\n' % (degrees(lamp.spot_size) / 2.0)) # 1 TO 179 FOR BOTH
+                file.write('\tradius %.6f\n' % ((degrees(lamp.spot_size) / 2.0) * (1.0 - lamp.spot_blend)))
 
                 # Blender does not have a tightness equivilent, 0 is most like blender default.
                 file.write('\ttightness 0\n') # 0:10f

Modified: trunk/blender/release/scripts/io/export_fbx.py
===================================================================
--- trunk/blender/release/scripts/io/export_fbx.py	2010-02-04 17:38:39 UTC (rev 26607)
+++ trunk/blender/release/scripts/io/export_fbx.py	2010-02-04 19:24:20 UTC (rev 26608)
@@ -1142,7 +1142,7 @@
         file.write('\n\t\t\tProperty: "Color", "Color", "A+",1,1,1')
         file.write('\n\t\t\tProperty: "Intensity", "Intensity", "A+",%.2f' % (min(light.energy*100, 200))) # clamp below 200
         if light.type == 'SPOT':
-            file.write('\n\t\t\tProperty: "Cone angle", "Cone angle", "A+",%.2f' % (light.spot_size * scale))
+            file.write('\n\t\t\tProperty: "Cone angle", "Cone angle", "A+",%.2f' % math.degrees(light.spot_size))
 # 		file.write('\n\t\t\tProperty: "Cone angle", "Cone angle", "A+",%.2f' % (light.spotSize * scale))
         file.write('\n\t\t\tProperty: "Fog", "Fog", "A+",50')
         file.write('\n\t\t\tProperty: "Color", "Color", "A",%.2f,%.2f,%.2f' % tuple(light.color))

Modified: trunk/blender/release/scripts/io/export_x3d.py
===================================================================
--- trunk/blender/release/scripts/io/export_x3d.py	2010-02-04 17:38:39 UTC (rev 26607)
+++ trunk/blender/release/scripts/io/export_x3d.py	2010-02-04 19:24:20 UTC (rev 26608)
@@ -291,7 +291,7 @@
 
         # compute cutoff and beamwidth
         intensity=min(lamp.energy/1.75,1.0)
-        beamWidth=((lamp.spot_size*math.pi)/180.0)*.37;
+        beamWidth=lamp.spot_size * 0.37;
         # beamWidth=((lamp.spotSize*math.pi)/180.0)*.37;
         cutOffAngle=beamWidth*1.3
 

Modified: trunk/blender/source/blender/makesrna/intern/rna_lamp.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_lamp.c	2010-02-04 17:38:39 UTC (rev 26607)
+++ trunk/blender/source/blender/makesrna/intern/rna_lamp.c	2010-02-04 19:24:20 UTC (rev 26608)
@@ -33,6 +33,8 @@
 #include "DNA_material_types.h"
 #include "DNA_texture_types.h"
 
+#include "BLI_math_base.h"
+
 #ifdef RNA_RUNTIME
 
 #include "MEM_guardedalloc.h"
@@ -124,6 +126,20 @@
 	WM_main_add_notifier(NC_LAMP|ND_SKY, la);
 }
 
+/* only for rad/deg conversion! can remove later */
+static float rna_Lamp_spot_size_get(PointerRNA *ptr)
+{
+	Lamp *la= ptr->id.data;
+	return la->spotsize * (M_PI / 180.0);
+}
+
+static void rna_Lamp_spot_size_set(PointerRNA *ptr, float value)
+{
+	Lamp *la= ptr->id.data;
+	la->spotsize= value * (180.0 / M_PI);
+}
+
+
 #else
 
 static void rna_def_lamp_mtex(BlenderRNA *brna)
@@ -640,10 +656,11 @@
 	RNA_def_property_ui_text(prop, "Spot Blend", "The softness of the spotlight edge.");
 	RNA_def_property_update(prop, 0, "rna_Lamp_draw_update");
 
-	prop= RNA_def_property(srna, "spot_size", PROP_FLOAT, PROP_NONE);
-	RNA_def_property_float_sdna(prop, NULL, "spotsize");
-	RNA_def_property_range(prop, 1.0f ,180.0f);
+	prop= RNA_def_property(srna, "spot_size", PROP_FLOAT, PROP_ANGLE);
+	// RNA_def_property_float_sdna(prop, NULL, "spotsize");
+	RNA_def_property_range(prop, M_PI/180.0f, M_PI);
 	RNA_def_property_ui_text(prop, "Spot Size", "Angle of the spotlight beam in degrees.");
+	RNA_def_property_float_funcs(prop, "rna_Lamp_spot_size_get", "rna_Lamp_spot_size_set", NULL); /* only for deg/rad conversion */
 	RNA_def_property_update(prop, 0, "rna_Lamp_draw_update");
 
 	prop= RNA_def_property(srna, "show_cone", PROP_BOOLEAN, PROP_NONE);





More information about the Bf-blender-cvs mailing list