[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38530] branches/soc-2011-tomato/source/ blender/editors/space_view3d/view3d_snap.c: Camera tracking integration
Sergey Sharybin
g.ulairi at gmail.com
Wed Jul 20 11:27:18 CEST 2011
Revision: 38530
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38530
Author: nazgul
Date: 2011-07-20 09:27:17 +0000 (Wed, 20 Jul 2011)
Log Message:
-----------
Camera tracking integration
===========================
Moved tweak from "Cursor To Active" to "Cursor To Selection".
It's more logical due to this operator already works with midpoints.
Modified Paths:
--------------
branches/soc-2011-tomato/source/blender/editors/space_view3d/view3d_snap.c
Modified: branches/soc-2011-tomato/source/blender/editors/space_view3d/view3d_snap.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_view3d/view3d_snap.c 2011-07-20 09:16:26 UTC (rev 38529)
+++ branches/soc-2011-tomato/source/blender/editors/space_view3d/view3d_snap.c 2011-07-20 09:27:17 UTC (rev 38530)
@@ -750,6 +750,32 @@
/* **************************************************** */
+static void bundle_midpoint(Scene *scene, float vec[3])
+{
+ MovieTrackingTrack *track;
+ int ok= 0;
+ float min[3], max[3], mat[4][4], pos[3];
+
+ BKE_get_tracking_mat(scene, mat);
+
+ INIT_MINMAX(min, max);
+
+ track= scene->clip->tracking.tracks.first;
+ while(track) {
+ if(track->flag&TRACK_HAS_BUNDLE && TRACK_SELECTED(track)) {
+ ok= 1;
+ mul_v3_m4v3(pos, mat, track->bundle_pos);
+ DO_MINMAX(pos, min, max);
+ }
+
+ track= track->next;
+ }
+
+ if(ok) {
+ interp_v3_v3v3(vec, min, max, 0.5);
+ }
+}
+
static int snap_curs_to_sel(bContext *C, wmOperator *UNUSED(op))
{
Object *obedit= CTX_data_edit_object(C);
@@ -814,6 +840,15 @@
else {
CTX_DATA_BEGIN(C, Object*, ob, selected_objects) {
VECCOPY(vec, ob->obmat[3]);
+
+ /* special case for camera -- snap to bundles */
+ if(obact->type==OB_CAMERA) {
+ /* snap to bundles should happen only when bundles are visible */
+ if(scene->clip && v3d->flag2&V3D_SHOW_RECONSTRUCTION) {
+ bundle_midpoint(scene, vec);
+ }
+ }
+
add_v3_v3(centroid, vec);
DO_MINMAX(vec, min, max);
count++;
@@ -853,32 +888,6 @@
/* ********************************************** */
-static void snap_to_bundle(Scene *scene, float *curs)
-{
- MovieTrackingTrack *track;
- int ok= 0;
- float min[3], max[3], mat[4][4], pos[3];
-
- BKE_get_tracking_mat(scene, mat);
-
- INIT_MINMAX(min, max);
-
- track= scene->clip->tracking.tracks.first;
- while(track) {
- if(track->flag&TRACK_HAS_BUNDLE && TRACK_SELECTED(track)) {
- ok= 1;
- mul_v3_m4v3(pos, mat, track->bundle_pos);
- DO_MINMAX(pos, min, max);
- }
-
- track= track->next;
- }
-
- if(ok) {
- interp_v3_v3v3(curs, min, max, 0.5);
- }
-}
-
static int snap_curs_to_active(bContext *C, wmOperator *UNUSED(op))
{
Object *obedit= CTX_data_edit_object(C);
@@ -905,14 +914,6 @@
else {
if (obact) {
VECCOPY(curs, obact->obmat[3]);
-
- /* special case for camera -- snap to bundles */
- if(obact->type==OB_CAMERA) {
- /* snap to bundles should happen only when bundles are visible */
- if(scene->clip && v3d->flag2&V3D_SHOW_RECONSTRUCTION) {
- snap_to_bundle(scene, curs);
- }
- }
}
}
More information about the Bf-blender-cvs
mailing list