[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20168] branches/soc-2009-yukishiro: merge from 2.5
Jingyuan Huang
jingyuan.huang at gmail.com
Tue May 12 04:03:48 CEST 2009
Revision: 20168
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20168
Author: yukishiro
Date: 2009-05-12 04:03:47 +0200 (Tue, 12 May 2009)
Log Message:
-----------
merge from 2.5
Modified Paths:
--------------
branches/soc-2009-yukishiro/release/ui/buttons_material.py
branches/soc-2009-yukishiro/release/ui/buttons_scene.py
branches/soc-2009-yukishiro/source/blender/blenkernel/intern/fcurve.c
branches/soc-2009-yukishiro/source/blender/editors/animation/anim_ipo_utils.c
branches/soc-2009-yukishiro/source/blender/editors/animation/keyframing.c
branches/soc-2009-yukishiro/source/blender/editors/space_graph/graph_edit.c
branches/soc-2009-yukishiro/source/blender/makesrna/intern/rna_access.c
branches/soc-2009-yukishiro/source/blender/makesrna/intern/rna_curve.c
branches/soc-2009-yukishiro/source/blender/makesrna/intern/rna_object.c
branches/soc-2009-yukishiro/source/blender/python/epy_doc_gen.py
branches/soc-2009-yukishiro/source/blender/python/intern/bpy_interface.c
Added Paths:
-----------
branches/soc-2009-yukishiro/release/ui/buttons_data_empty.py
Copied: branches/soc-2009-yukishiro/release/ui/buttons_data_empty.py (from rev 20167, branches/blender2.5/blender/release/ui/buttons_data_empty.py)
===================================================================
--- branches/soc-2009-yukishiro/release/ui/buttons_data_empty.py (rev 0)
+++ branches/soc-2009-yukishiro/release/ui/buttons_data_empty.py 2009-05-12 02:03:47 UTC (rev 20168)
@@ -0,0 +1,28 @@
+
+import bpy
+
+class DataButtonsPanel(bpy.types.Panel):
+ __space_type__ = "BUTTONS_WINDOW"
+ __region_type__ = "WINDOW"
+ __context__ = "data"
+
+ def poll(self, context):
+ ob = context.active_object
+ return (ob and ob.type == 'EMPTY')
+
+class DATA_PT_empty(DataButtonsPanel):
+ __idname__ = "DATA_PT_empty"
+ __label__ = "Empty"
+
+ def draw(self, context):
+ ob = context.active_object
+ layout = self.layout
+
+ if not ob:
+ return
+
+ layout.column()
+ layout.itemR(ob, "empty_draw_type")
+ layout.itemR(ob, "empty_draw_size")
+
+bpy.types.register(DATA_PT_empty)
\ No newline at end of file
Modified: branches/soc-2009-yukishiro/release/ui/buttons_material.py
===================================================================
--- branches/soc-2009-yukishiro/release/ui/buttons_material.py 2009-05-12 01:56:57 UTC (rev 20167)
+++ branches/soc-2009-yukishiro/release/ui/buttons_material.py 2009-05-12 02:03:47 UTC (rev 20168)
@@ -11,11 +11,13 @@
__label__ = "Material"
def draw(self, context):
- mat = context.main.materials[0]
- layout = self.layout
+ try: mat = context.active_object.active_material
+ except: mat = None
if not mat:
- return
+ return
+
+ layout = self.layout
layout.row()
layout.itemR(mat, "diffuse_color")
@@ -31,12 +33,14 @@
__label__ = "Subsurface Scattering"
def draw(self, context):
- sss = context.main.materials[0].subsurface_scattering
- layout = self.layout
+ try: sss = context.active_object.active_material.subsurface_scattering
+ except: sss = None
if not sss:
return
+ layout = self.layout
+
layout.row()
layout.itemR(sss, "enabled", text="Enable")
@@ -60,12 +64,14 @@
__label__ = "Ray Mirror"
def draw(self, context):
- raym = context.main.materials[0].raytrace_mirror
- layout = self.layout
+ try: raym = context.active_object.active_material.raytrace_mirror
+ except: raym = None
if not raym:
return
-
+
+ layout = self.layout
+
layout.row()
layout.itemR(raym, "enabled", text="Enable")
@@ -93,12 +99,14 @@
__idname__= "MATERIAL_PT_raytransp"
__label__= "Ray Transparency"
- def draw(self, context):
- rayt = context.main.materials[0].raytrace_transparency
- layout = self.layout
+ def draw(self, context):
+ try: rayt = context.active_object.active_material.raytrace_transparency
+ except: rayt = None
if not rayt:
- return
+ return
+
+ layout = self.layout
layout.row()
layout.itemR(rayt, "enabled", text="Enable")
Modified: branches/soc-2009-yukishiro/release/ui/buttons_scene.py
===================================================================
--- branches/soc-2009-yukishiro/release/ui/buttons_scene.py 2009-05-12 01:56:57 UTC (rev 20167)
+++ branches/soc-2009-yukishiro/release/ui/buttons_scene.py 2009-05-12 02:03:47 UTC (rev 20168)
@@ -93,7 +93,7 @@
layout.row()
layout.itemO("SCREEN_OT_render", text="RENDER", icon=0) # ICON_SCENE
- #layout.itemO("SCREEN_OT_render", text="ANIM", icon=0) # "anim", 1
+ layout.item_booleanO("SCREEN_OT_render", 'anim', True, text="ANIM", icon=0)
layout.row()
layout.itemR(scene, "start_frame", text="Start")
Modified: branches/soc-2009-yukishiro/source/blender/blenkernel/intern/fcurve.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/blenkernel/intern/fcurve.c 2009-05-12 01:56:57 UTC (rev 20167)
+++ branches/soc-2009-yukishiro/source/blender/blenkernel/intern/fcurve.c 2009-05-12 02:03:47 UTC (rev 20168)
@@ -210,8 +210,10 @@
BezTriple *bezt;
for (bezt=fcu->bezt, i=0; i < fcu->totvert; bezt++, i++) {
- yminv= MIN2(yminv, bezt->vec[1][1]);
- ymaxv= MAX2(ymaxv, bezt->vec[1][1]);
+ if (bezt->vec[1][1] < yminv)
+ yminv= bezt->vec[1][1];
+ if (bezt->vec[1][1] > ymaxv)
+ ymaxv= bezt->vec[1][1];
}
}
}
@@ -227,8 +229,10 @@
FPoint *fpt;
for (fpt=fcu->fpt, i=0; i < fcu->totvert; fpt++, i++) {
- yminv= MIN2(yminv, fpt->vec[1]);
- ymaxv= MAX2(ymaxv, fpt->vec[1]);
+ if (fpt->vec[1] < yminv)
+ yminv= fpt->vec[1];
+ if (fpt->vec[1] > ymaxv)
+ ymaxv= fpt->vec[1];
}
}
}
Modified: branches/soc-2009-yukishiro/source/blender/editors/animation/anim_ipo_utils.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/editors/animation/anim_ipo_utils.c 2009-05-12 01:56:57 UTC (rev 20167)
+++ branches/soc-2009-yukishiro/source/blender/editors/animation/anim_ipo_utils.c 2009-05-12 02:03:47 UTC (rev 20168)
@@ -148,12 +148,6 @@
/* Array Index - only if applicable */
if (RNA_property_array_length(prop)) {
- // XXX the format of these is not final... we don't know how this will go yet
- // format 1 style
- //static char *vectoritem[4]= {".X", ".Y", ".Z", ".W"};
- //static char *quatitem[4]= {".W", ".X", ".Y", ".Z"};
- //static char *coloritem[4]= {".R", ".G", ".B", ".A"};
- // format 2 style
static char *vectoritem[4]= {"X ", "Y ", "Z ", "W "};
static char *quatitem[4]= {"W ", "X ", "Y ", "Z "};
static char *coloritem[4]= {"R ", "G ", "B ", "A "};
@@ -181,8 +175,7 @@
/* putting this all together into the buffer */
// XXX we need to check for invalid names...
- //BLI_snprintf(name, 128, "%s.%s%s", structname, propname, arrayname); // format 1
- BLI_snprintf(name, 128, "%s%s (%s)", arrayname, propname, structname); // format 2
+ BLI_snprintf(name, 128, "%s%s (%s)", arrayname, propname, structname);
/* free temp name if nameprop is set */
if (nameprop)
@@ -197,6 +190,7 @@
/* ------------------------------- Color Codes for F-Curve Channels ---------------------------- */
+#if 0
/* used for FCURVE_COLOR_AUTO_RAINBOW */
// XXX this still doesn't work too great when there are more than 32 curves (which happens most of the time)
void ipo_rainbow (int cur, int tot, float *out)
@@ -206,14 +200,57 @@
dfac= (float)(1.0/( (float)tot+1.0));
/* this calculation makes 2 or 4 different cycles of rainbow colors */
+ // 2 different cycles - for hue
if(cur< tot/2) fac= (float)(cur*2.0f*dfac);
else fac= (float)((cur-tot/2)*2.0f*dfac +dfac);
+
+ // third cycle with altered hue
if(tot > 32) fac= fac*1.95f;
+ // clamping for excessive ranges
if(fac>1.0f) fac-= 1.0f;
+ // saturation adjustments for more visible range
if(fac>0.5f && fac<0.8f) sat= 0.5f;
else sat= 0.6f;
- //return hsv_to_cpack(fac, sat, 1.0f);
hsv_to_rgb(fac, sat, 1.0f, out, out+1, out+2);
}
+#endif
+
+/* step between the major distinguishable color bands of the primary colors */
+#define HSV_BANDWIDTH 0.3f
+
+/* testbed for FCURVE_COLOR_AUTO_RAINBOW determination methods */
+//void fcurve_rainbow (unsigned int cur, unsigned int tot, float *out)
+void ipo_rainbow (int cur, int tot, float *out)
+{
+ float hue, val, sat, fac;
+ int grouping;
+
+ /* we try to divide the colours into groupings of n colors,
+ * where n is:
+ * 3 - for 'odd' numbers of curves - there should be a majority of triplets of curves
+ * 4 - for 'even' numbers of curves - there should be a majority of quartets of curves
+ * so the base color is simply one of the three primary colors
+ */
+ grouping= (4 - (tot % 2));
+ hue= HSV_BANDWIDTH * (float)(cur % grouping);
+
+ /* 'Value' (i.e. darkness) needs to vary so that larger sets of three will be
+ * 'darker' (i.e. smaller value), so that they don't look that similar to previous ones.
+ * However, only a range of 0.3 to 1.0 is really usable to avoid clashing
+ * with some other stuff
+ */
+ fac = ((float)cur / (float)tot) * 0.7f;
+ val = 1.0f - fac;
+
+ /* the base color can get offset a bit so that the colors aren't so identical */
+ hue += fac * HSV_BANDWIDTH;
+ if (hue > 1.0f) hue= fmod(hue, 1.0f);
+
+ /* saturation fluctuates between 0.5 and 1.0 */
+ sat = ((cur / grouping) % 2) ? 0.61f : 0.96f;
+
+ /* finally, conver this to RGB colors */
+ hsv_to_rgb(hue, sat, val, out, out+1, out+2);
+}
Modified: branches/soc-2009-yukishiro/source/blender/editors/animation/keyframing.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/editors/animation/keyframing.c 2009-05-12 01:56:57 UTC (rev 20167)
+++ branches/soc-2009-yukishiro/source/blender/editors/animation/keyframing.c 2009-05-12 02:03:47 UTC (rev 20168)
@@ -29,6 +29,7 @@
#include "BKE_action.h"
#include "BKE_constraint.h"
#include "BKE_fcurve.h"
+#include "BKE_global.h"
#include "BKE_utildefines.h"
#include "BKE_context.h"
#include "BKE_report.h"
@@ -68,6 +69,7 @@
adt= BKE_id_add_animdata(id);
if (adt == NULL) {
/* if still none (as not allowed to add, or ID doesn't have animdata for some reason) */
+ printf("ERROR: Couldn't add AnimData (ID = %s) \n", (id) ? (id->name) : "<None>");
return NULL;
}
@@ -793,6 +795,9 @@
}
}
+ /* no F-Curve to add keyframes to */
+ printf("ERROR: no F-Curve to add keyframes to \n");
+
/* return failure */
return 0;
}
@@ -1203,11 +1208,11 @@
memset(&ptr, 0, sizeof(PointerRNA));
uiAnimContextProperty(C, &ptr, &prop, &index);
- if(ptr.data && prop && RNA_property_animateable(&ptr, prop)) {
+ if ((ptr.data && prop) && RNA_property_animateable(&ptr, prop)) {
path= RNA_path_from_ID_to_property(&ptr, prop);
- if(path) {
- if(all) {
+ if (path) {
+ if (all) {
length= RNA_property_array_length(prop);
if(length) index= 0;
@@ -1216,14 +1221,20 @@
else
length= 1;
- for(a=0; a<length; a++)
+ for (a=0; a<length; a++)
success+= insert_keyframe(ptr.id.data, NULL, NULL, path, index+a, cfra, 0);
MEM_freeN(path);
}
+ else if (G.f & G_DEBUG)
+ printf("Button Insert-Key: no path to property \n");
}
+ else if (G.f & G_DEBUG) {
+ printf("ptr.data = %p, prop = %p,", ptr.data, prop);
+ printf("animateable = %d \n", RNA_property_animateable(&ptr, prop));
+ }
- if(success) {
+ if (success) {
/* send updates */
ED_anim_dag_flush_update(C);
@@ -1267,11 +1278,11 @@
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list