[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43121] trunk/blender: Camera tracking: fixes in Link Empty to Track and Bundles to Mesh operators
Sergey Sharybin
sergey.vfx at gmail.com
Wed Jan 4 10:19:47 CET 2012
Revision: 43121
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43121
Author: nazgul
Date: 2012-01-04 09:19:39 +0000 (Wed, 04 Jan 2012)
Log Message:
-----------
Camera tracking: fixes in Link Empty to Track and Bundles to Mesh operators
- This operators always used to work with tracks for camera
- Properly set camera and object fields to Follow Track constraint
- TrackingObject.tracks is now pointing to actual list of tracks for
camera objects.
Modified Paths:
--------------
trunk/blender/release/scripts/startup/bl_operators/clip.py
trunk/blender/source/blender/makesrna/intern/rna_tracking.c
Modified: trunk/blender/release/scripts/startup/bl_operators/clip.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_operators/clip.py 2012-01-04 09:07:26 UTC (rev 43120)
+++ trunk/blender/release/scripts/startup/bl_operators/clip.py 2012-01-04 09:19:39 UTC (rev 43121)
@@ -60,6 +60,22 @@
set_background, clip, clip_user)
+def CLIP_camera_for_clip(context, clip):
+ scene = context.scene
+
+ camera = scene.camera
+
+ for ob in scene.objects:
+ if ob.type == 'CAMERA':
+ for con in ob.constraints:
+ if con.type == 'CAMERA_SOLVER':
+ cur_clip = scene.clip if con.use_active_clip else con.clip
+
+ if cur_clip == clip:
+ return ob
+
+ return camera
+
def CLIP_track_view_selected(sc, track):
if track.select_anchor:
return True
@@ -80,7 +96,7 @@
bl_label = "Link Empty to Track"
bl_options = {'UNDO', 'REGISTER'}
- def _link_track(self, context, track):
+ def _link_track(self, context, clip, tracking_object, track):
sc = context.space_data
constraint = None
ob = None
@@ -101,14 +117,17 @@
constraint.clip = sc.clip
constraint.track = track.name
constraint.use_3d_position = False
+ constraint.object = tracking_object.name
+ constraint.camera = CLIP_camera_for_clip(context, clip);
def execute(self, context):
sc = context.space_data
clip = sc.clip
+ tracking_object = clip.tracking.objects.active
- for track in clip.tracking.tracks:
+ for track in tracking_object.tracks:
if CLIP_track_view_selected(sc, track):
- self._link_track(context, track)
+ self._link_track(context, clip, tracking_object ,track)
return {'FINISHED'}
@@ -130,11 +149,12 @@
sc = context.space_data
clip = sc.clip
+ tracking_object = clip.tracking.objects.active
new_verts = []
mesh = bpy.data.meshes.new(name="Tracks")
- for track in clip.tracking.tracks:
+ for track in tracking_object.tracks:
if track.has_bundle:
new_verts.append(track.bundle)
Modified: trunk/blender/source/blender/makesrna/intern/rna_tracking.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_tracking.c 2012-01-04 09:07:26 UTC (rev 43120)
+++ trunk/blender/source/blender/makesrna/intern/rna_tracking.c 2012-01-04 09:19:39 UTC (rev 43121)
@@ -305,7 +305,14 @@
{
MovieTrackingObject *object= (MovieTrackingObject* )ptr->data;
- rna_iterator_listbase_begin(iter, &object->tracks, NULL);
+ if(object->flag&TRACKING_OBJECT_CAMERA) {
+ MovieClip *clip= (MovieClip*)ptr->id.data;
+
+ rna_iterator_listbase_begin(iter, &clip->tracking.tracks, NULL);
+ }
+ else {
+ rna_iterator_listbase_begin(iter, &object->tracks, NULL);
+ }
}
static PointerRNA rna_tracking_active_object_get(PointerRNA *ptr)
More information about the Bf-blender-cvs
mailing list