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

Sergey Sharybin sergey.vfx at gmail.com
Thu May 9 18:38:47 CEST 2013


Revision: 56633
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56633
Author:   nazgul
Date:     2013-05-09 16:38:47 +0000 (Thu, 09 May 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:
--------------
    trunk/blender/source/blender/editors/space_view3d/drawobject.c

Modified: trunk/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawobject.c	2013-05-09 16:38:43 UTC (rev 56632)
+++ trunk/blender/source/blender/editors/space_view3d/drawobject.c	2013-05-09 16:38:47 UTC (rev 56633)
@@ -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