Revision: 27758
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27758
Author: aligorith
Date: 2010-03-26 03:57:49 +0100 (Fri, 26 Mar 2010)
Log Message:
-----------
4 Devs in Agreement - End of the Road for Old Track
This commit removes the Old Track method (used to be found under Object ->
Animation -> Track), with all existing instances of this being converted to
Track To Constraints. In fact, while performing this removal, I found that this
was supposed to have happened in version 2.27 already, but for some reason the
options were left in, and this function managed to survive for a further decade.
I've left the tracking axes around still, since it seems some curve tools still
use that. However, that usage should probably get faded out in future too?
Misc notes:
* Fixed compiling error with constaints from harkyman's Maintain Volume patch.
* Subversion of 2.52 now bumped up to .2
Modified Paths:
--------------
trunk/blender/release/scripts/ui/properties_object.py
trunk/blender/source/blender/blenkernel/BKE_blender.h
trunk/blender/source/blender/blenkernel/intern/action.c
trunk/blender/source/blender/blenkernel/intern/anim.c
trunk/blender/source/blender/blenkernel/intern/constraint.c
trunk/blender/source/blender/blenkernel/intern/depsgraph.c
trunk/blender/source/blender/blenkernel/intern/object.c
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/editors/object/object_add.c
trunk/blender/source/blender/editors/object/object_relations.c
trunk/blender/source/blender/editors/transform/transform_conversions.c
trunk/blender/source/blender/makesrna/intern/rna_object.c
Modified: trunk/blender/release/scripts/ui/properties_object.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_object.py 2010-03-26
01:31:43 UTC (rev 27757)
+++ trunk/blender/release/scripts/ui/properties_object.py 2010-03-26
02:57:49 UTC (rev 27758)
@@ -268,9 +268,10 @@
else:
layout.prop(ob, "dupli_group", text="")
-
+# XXX: the following options are all quite buggy, ancient hacks that should be
dropped
class OBJECT_PT_animation(ObjectButtonsPanel):
- bl_label = "Animation"
+ bl_label = "Animation Hacks"
+ bl_default_closed = True
def draw(self, context):
layout = self.layout
@@ -293,16 +294,12 @@
row.prop(ob, "slow_parent")
row.active = (ob.parent is not None)
col.prop(ob, "time_offset", text="Offset")
-
- if wide_ui:
- col = split.column()
- col.label(text="Track:")
- col.prop(ob, "track", text="")
+
+ # XXX: these are still used for a few curve-related tracking features
+ col = split.column()
+ col.label(text="Tracking Axes:")
col.prop(ob, "track_axis", text="Axis")
col.prop(ob, "up_axis", text="Up Axis")
- row = col.row()
- row.prop(ob, "track_override_parent", text="Override Parent")
- row.active = (ob.parent is not None)
# import generic panels from other files
@@ -316,7 +313,7 @@
OBJECT_PT_groups,
OBJECT_PT_display,
OBJECT_PT_duplication,
- OBJECT_PT_animation,
+ OBJECT_PT_animation, # XXX: panel of old hacks pending to be removed...
OBJECT_PT_motion_paths,
#OBJECT_PT_onion_skinning,
Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h 2010-03-26
01:31:43 UTC (rev 27757)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h 2010-03-26
02:57:49 UTC (rev 27758)
@@ -45,7 +45,7 @@
struct Main;
#define BLENDER_VERSION 252
-#define BLENDER_SUBVERSION 1
+#define BLENDER_SUBVERSION 2
#define BLENDER_MINVERSION 250
#define BLENDER_MINSUBVERSION 0
Modified: trunk/blender/source/blender/blenkernel/intern/action.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/action.c 2010-03-26
01:31:43 UTC (rev 27757)
+++ trunk/blender/source/blender/blenkernel/intern/action.c 2010-03-26
02:57:49 UTC (rev 27758)
@@ -1063,7 +1063,6 @@
copy_m4_m4(workob->parentinv, ob->parentinv);
copy_m4_m4(workob->constinv, ob->constinv);
workob->parent= ob->parent;
- workob->track= ob->track;
workob->rotmode= ob->rotmode;
Modified: trunk/blender/source/blender/blenkernel/intern/anim.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/anim.c 2010-03-26
01:31:43 UTC (rev 27757)
+++ trunk/blender/source/blender/blenkernel/intern/anim.c 2010-03-26
02:57:49 UTC (rev 27758)
@@ -668,7 +668,7 @@
if(level>MAX_DUPLI_RECUR) return;
cfrao= scene->r.cfra;
- if(ob->parent==NULL && ob->track==NULL && ob->ipo==NULL &&
ob->constraints.first==NULL) return;
+ if(ob->parent==NULL && ob->constraints.first==NULL) return;
if(ob->transflag & OB_DUPLINOSPEED) enable_cu_speed= 0;
copyob= *ob; /* store transform info */
Modified: trunk/blender/source/blender/blenkernel/intern/constraint.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/constraint.c 2010-03-26
01:31:43 UTC (rev 27757)
+++ trunk/blender/source/blender/blenkernel/intern/constraint.c 2010-03-26
02:57:49 UTC (rev 27758)
@@ -1867,7 +1867,7 @@
data->volume = 1.0f;
}
-static void samevolume_evaluate (bConstraint *con, bConstraintOb *cob)
+static void samevolume_evaluate (bConstraint *con, bConstraintOb *cob,
ListBase *targets)
{
bSameVolumeConstraint *data= con->data;
@@ -1896,7 +1896,6 @@
}
break;
}
-
}
static bConstraintTypeInfo CTI_SAMEVOL = {
Modified: trunk/blender/source/blender/blenkernel/intern/depsgraph.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/depsgraph.c 2010-03-26
01:31:43 UTC (rev 27757)
+++ trunk/blender/source/blender/blenkernel/intern/depsgraph.c 2010-03-26
02:57:49 UTC (rev 27758)
@@ -468,11 +468,6 @@
addtoroot = 0;
}
- if (ob->track) {
- node2 = dag_get_node(dag,ob->track);
- dag_add_relation(dag,node2,node,DAG_RL_OB_OB, "Track To");
- addtoroot = 0;
- }
if (ob->proxy) {
node2 = dag_get_node(dag, ob->proxy);
dag_add_relation(dag, node, node2,
DAG_RL_DATA_DATA|DAG_RL_OB_OB, "Proxy");
Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c 2010-03-26
01:31:43 UTC (rev 27757)
+++ trunk/blender/source/blender/blenkernel/intern/object.c 2010-03-26
02:57:49 UTC (rev 27758)
@@ -361,11 +361,6 @@
obt->recalc |= OB_RECALC;
}
- if(obt->track==ob) {
- obt->track= NULL;
- obt->recalc |= OB_RECALC_OB;
- }
-
modifiers_foreachObjectLink(obt,
unlink_object__unlinkModifierLinks, ob);
if ELEM(obt->type, OB_CURVE, OB_FONT) {
@@ -2037,31 +2032,6 @@
object_to_mat4(ob, ob->obmat);
}
- /* Handle tracking */
- if(ob->track) {
- /* Try to remove this tracking relationship if we can easily
detect that
- * it is cyclic (i.e. direct tracking), and bound to cause us
troubles.
- * For the other cases (i.e. a cyclic triangle, and higher
orders), we can't
- * easily detect or know how to remove those relationships,
safely, so just
- * let them be (with warnings).
- * Of course, this could also be a simple track that doesn't do
anything bad either :)
- */
- if (ob->track->track == ob) {
- printf("Removed direct cyclic tracking between %s and
%s\n", ob->id.name+2, ob->track->id.name+2);
- ob->track->track = NULL;
- ob->track = NULL;
- }
- else {
- /* NOTE: disabled recursive recalc for tracking for
now, since this causes crashes
- * when users create cyclic dependencies (stack
overflow). Really, this step ought
- * not to be needed anymore with the depsgraph, though
this may not be the case.
- * -- Aligorith, 2010 Mar 26
- */
- //if( ctime != ob->track->ctime)
where_is_object_time(scene, ob->track, ctime);
- solve_tracking(ob, ob->track->obmat);
- }
- }
-
/* solve constraints */
if (ob->constraints.first && !(ob->flag & OB_NO_CONSTRAINTS)) {
bConstraintOb *cob;
@@ -2157,34 +2127,7 @@
}
}
-void solve_tracking (Object *ob, float targetmat[][4])
-{
- float quat[4];
- float vec[3];
- float totmat[3][3];
- float tmat[4][4];
-
- sub_v3_v3v3(vec, ob->obmat[3], targetmat[3]);
- vec_to_quat( quat,vec, ob->trackflag, ob->upflag);
- quat_to_mat3( totmat,quat);
-
- if(ob->parent && (ob->transflag & OB_POWERTRACK)) {
- /* 'temporal' : clear parent info */
- object_to_mat4(ob, tmat);
- tmat[0][3]= ob->obmat[0][3];
- tmat[1][3]= ob->obmat[1][3];
- tmat[2][3]= ob->obmat[2][3];
- tmat[3][0]= ob->obmat[3][0];
- tmat[3][1]= ob->obmat[3][1];
- tmat[3][2]= ob->obmat[3][2];
- tmat[3][3]= ob->obmat[3][3];
- }
- else copy_m4_m4(tmat, ob->obmat);
-
- mul_m4_m3m4(ob->obmat, totmat, tmat);
-}
-
void where_is_object(struct Scene *scene, Object *ob)
{
where_is_object_time(scene, ob, (float)scene->r.cfra);
@@ -2204,12 +2147,6 @@
int a;
/* NO TIMEOFFS */
-
- /* no ipo! (because of dloc and realtime-ipos) */
- // XXX old animation system
- //ipo= ob->ipo;
- //ob->ipo= NULL;
-
if(ob->parent) {
par= ob->parent;
@@ -2231,9 +2168,6 @@
object_to_mat4(ob, ob->obmat);
}
- if(ob->track)
- solve_tracking(ob, ob->track->obmat);
-
/* solve constraints */
if (ob->constraints.first) {
bConstraintOb *cob;
@@ -2242,10 +2176,6 @@
solve_constraints(&ob->constraints, cob, (float)scene->r.cfra);
constraints_clear_evalob(cob);
}
-
- /* WATCH IT!!! */
- // XXX old animation system
- //ob->ipo= ipo;
}
/* for calculation of the inverse parent transform, only used for editor */
@@ -2257,7 +2187,6 @@
unit_m4(workob->parentinv);
unit_m4(workob->constinv);
workob->parent= ob->parent;
- workob->track= ob->track;
workob->trackflag= ob->trackflag;
workob->upflag= ob->upflag;
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2010-03-26
01:31:43 UTC (rev 27757)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2010-03-26
02:57:49 UTC (rev 27758)
@@ -6426,6 +6426,25 @@
}
}
+/* NOTE: this version patch is intended for versions < 2.52.2, but was
initially introduced in 2.27 already */
+static void do_version_old_trackto_to_constraints(Object *ob)
+{
+ /* create new trackto constraint from the relationship */
+ if (ob->track)
+ {
+ bConstraint *con= add_ob_constraint(ob, "AutoTrack",
CONSTRAINT_TYPE_TRACKTO);
+ bTrackToConstraint *data = con->data;
+
+ /* copy tracking settings from the object */
+ data->tar = ob->track;
+ data->reserved1 = ob->trackflag;
+ data->reserved2 = ob->upflag;
+ }
+
+ /* clear old track setting */
+ ob->track = NULL;
+}
+
static void do_versions(FileData *fd, Library *lib, Main *main)
{
/* WATCH IT!!!: pointers from libdata have not been converted */
@@ -7248,36 +7267,7 @@
}
/* Change Ob->Track in real TrackTo constraint */
-
- if (ob->track){
- bConstraint *con;
- bConstraintTypeInfo *cti;
- bTrackToConstraint *data;
- void *cdata;
-
- list = &ob->constraints;
- if (list)
- {
- con = MEM_callocN(sizeof(bConstraint),
"constraint");
- strcpy (con->name, "AutoTrack");
- unique_constraint_name(con, list);
- con->flag |= CONSTRAINT_EXPAND;
- con->enforce=1.0F;
- con->type = CONSTRAINT_TYPE_TRACKTO;
-
- cti=
get_constraint_typeinfo(CONSTRAINT_TYPE_TRACKTO);
- cdata= MEM_callocN(cti->size,
cti->structName);
- cti->new_data(cdata);
- data = (bTrackToConstraint *)cdata;
-
- data->tar = ob->track;
- data->reserved1 = ob->trackflag;
- data->reserved2 = ob->upflag;
- con->data= (void*) data;
- BLI_addtail(list, con);
- }
- ob->track = 0;
- }
+ do_version_old_trackto_to_constraints(ob);
ob = ob->id.next;
}
@@ -10695,8 +10685,16 @@
@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs