[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56310] branches/soc-2011-tomato/source/ blender/editors/space_view3d/drawobject.c: Made bundles in 3D viewport have constant size

Sergey Sharybin sergey.vfx at gmail.com
Fri Apr 26 13:43:19 CEST 2013


Revision: 56310
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56310
Author:   nazgul
Date:     2013-04-26 11:43:19 +0000 (Fri, 26 Apr 2013)
Log Message:
-----------
Made bundles in 3D viewport have constant size

This means bundles' size is not affected by camera scale.
This way it's more useful to work with -- bundles never
becomes too small or too large (depending on reconstructed
scene scale).

Modified Paths:
--------------
    branches/soc-2011-tomato/source/blender/editors/space_view3d/drawobject.c

Modified: branches/soc-2011-tomato/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_view3d/drawobject.c	2013-04-26 11:31:54 UTC (rev 56309)
+++ branches/soc-2011-tomato/source/blender/editors/space_view3d/drawobject.c	2013-04-26 11:43:19 UTC (rev 56310)
@@ -1482,12 +1482,20 @@
 	unsigned char col_unsel[4], col_sel[4];
 	int tracknr = *global_track_index;
 	ListBase *tracksbase = BKE_tracking_object_get_tracks(tracking, tracking_object);
+	float camera_size[3];
 
 	UI_GetThemeColor4ubv(TH_TEXT, col_unsel);
 	UI_GetThemeColor4ubv(TH_SELECT, col_sel);
 
 	BKE_tracking_get_camera_object_matrix(scene, base->object, mat);
 
+	/* we're compensating camera size for bundles size,
+	 * to make it so bundles are always displayed with the same size
+	 */
+	copy_v3_v3(camera_size, base->object->size);
+	if ((tracking_object->flag & TRACKING_OBJECT_CAMERA) == 0)
+		mul_v3_fl(camera_size, tracking_object->scale);
+
 	glPushMatrix();
 
 	if (tracking_object->flag & TRACKING_OBJECT_CAMERA) {
@@ -1522,7 +1530,9 @@
 
 		glPushMatrix();
 		glTranslatef(track->bundle_pos[0], track->bundle_pos[1], track->bundle_pos[2]);
-		glScalef(v3d->bundle_size / 0.05f, v3d->bundle_size / 0.05f, v3d->bundle_size / 0.05f);
+		glScalef(v3d->bundle_size / 0.05f / camera_size[0],
+		         v3d->bundle_size / 0.05f / camera_size[1],
+		         v3d->bundle_size / 0.05f / camera_size[2]);
 
 		if (v3d->drawtype == OB_WIRE) {
 			glDisable(GL_LIGHTING);




More information about the Bf-blender-cvs mailing list