Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_view3d/drawobject.c
| Context not available. | |||||
| 1.00000000 | 1.00000000 | ||||
| }; | }; | ||||
| static void draw_xyz_wire(const float c[3], float size, int axis) | static void draw_xyz_wire(RegionView3D *rv3d, const float c[3], float size, int axis) | ||||
| { | { | ||||
| float v1[3] = {0.0f, 0.0f, 0.0f}, v2[3] = {0.0f, 0.0f, 0.0f}; | float v1[3] = {0.0f, 0.0f, 0.0f}, v2[3] = {0.0f, 0.0f, 0.0f}; | ||||
| float dim = size * 0.1f; | float dim = size * 0.1f; | ||||
| float dx[3], dy[3], dz[3]; | float dx[3], dy[3]; | ||||
| float imat[4][4]; | |||||
| GLfloat oldmat_GL[16]; | |||||
| float oldmat[4][4]; | |||||
| float new_c[3]; | |||||
| int i, j; | |||||
| glGetFloatv(GL_MODELVIEW_MATRIX, oldmat_GL); | |||||
| for (i = 0; i < 4; i++) { | |||||
| for (j = 0; j < 4; j++) { | |||||
| oldmat[i][j] = (float) oldmat_GL[j + i*4]; | |||||
| } | |||||
| } | |||||
| mul_v3_m4v3(new_c, oldmat, c); | |||||
| mul_m4_v3(rv3d->viewinv, new_c); | |||||
| glPushMatrix(); | |||||
| glLoadMatrixf(rv3d->viewmat); | |||||
| copy_m4_m4(imat, rv3d->viewinv); | |||||
| normalize_v3(imat[0]); | |||||
| normalize_v3(imat[1]); | |||||
| dx[0] = dim; dx[1] = 0.0f; dx[2] = 0.0f; | mul_v3_v3fl(dx, imat[0], dim); | ||||
| dy[0] = 0.0f; dy[1] = dim; dy[2] = 0.0f; | mul_v3_v3fl(dy, imat[1], dim); | ||||
| dz[0] = 0.0f; dz[1] = 0.0f; dz[2] = dim; | |||||
| switch (axis) { | switch (axis) { | ||||
| case 0: /* x axis */ | case 0: /* x axis */ | ||||
| glBegin(GL_LINES); | glBegin(GL_LINES); | ||||
| /* bottom left to top right */ | /* bottom left to top right */ | ||||
| sub_v3_v3v3(v1, c, dx); | sub_v3_v3v3(v1, new_c, dy); | ||||
| sub_v3_v3(v1, dy); | sub_v3_v3(v1, dx); | ||||
| add_v3_v3v3(v2, c, dx); | add_v3_v3v3(v2, new_c, dy); | ||||
| add_v3_v3(v2, dy); | add_v3_v3(v2, dx); | ||||
| glVertex3fv(v1); | glVertex3fv(v1); | ||||
| glVertex3fv(v2); | glVertex3fv(v2); | ||||
| /* top left to bottom right */ | /* top left to bottom right */ | ||||
| mul_v3_fl(dy, 2.0f); | mul_v3_fl(dx, 2.0f); | ||||
| add_v3_v3(v1, dy); | add_v3_v3(v1, dx); | ||||
| sub_v3_v3(v2, dy); | sub_v3_v3(v2, dx); | ||||
| glVertex3fv(v1); | glVertex3fv(v1); | ||||
| glVertex3fv(v2); | glVertex3fv(v2); | ||||
| Context not available. | |||||
| /* bottom left to top right */ | /* bottom left to top right */ | ||||
| mul_v3_fl(dx, 0.75f); | mul_v3_fl(dx, 0.75f); | ||||
| sub_v3_v3v3(v1, c, dx); | sub_v3_v3v3(v1, new_c, dx); | ||||
| sub_v3_v3(v1, dy); | sub_v3_v3(v1, dy); | ||||
| add_v3_v3v3(v2, c, dx); | add_v3_v3v3(v2, new_c, dx); | ||||
| add_v3_v3(v2, dy); | add_v3_v3(v2, dy); | ||||
| glVertex3fv(v1); | glVertex3fv(v1); | ||||
| Context not available. | |||||
| /* top left to center */ | /* top left to center */ | ||||
| mul_v3_fl(dy, 2.0f); | mul_v3_fl(dy, 2.0f); | ||||
| add_v3_v3(v1, dy); | add_v3_v3(v1, dy); | ||||
| copy_v3_v3(v2, c); | copy_v3_v3(v2,new_c); | ||||
| glVertex3fv(v1); | glVertex3fv(v1); | ||||
| glVertex3fv(v2); | glVertex3fv(v2); | ||||
| Context not available. | |||||
| glBegin(GL_LINE_STRIP); | glBegin(GL_LINE_STRIP); | ||||
| /* start at top left */ | /* start at top left */ | ||||
| sub_v3_v3v3(v1, c, dx); | sub_v3_v3v3(v1, new_c, dx); | ||||
| add_v3_v3v3(v1, c, dz); | add_v3_v3v3(v1, new_c, dy); | ||||
| glVertex3fv(v1); | glVertex3fv(v1); | ||||
| Context not available. | |||||
| glVertex3fv(v1); | glVertex3fv(v1); | ||||
| mul_v3_fl(dz, 2.0f); | mul_v3_fl(dy, 2.0f); | ||||
| sub_v3_v3(v1, dx); | sub_v3_v3(v1, dx); | ||||
| sub_v3_v3(v1, dz); | sub_v3_v3(v1, dy); | ||||
| glVertex3fv(v1); | glVertex3fv(v1); | ||||
| Context not available. | |||||
| glEnd(); | glEnd(); | ||||
| break; | break; | ||||
| } | } | ||||
| glPopMatrix(); | |||||
| } | } | ||||
| void drawaxes(float size, char drawtype) | void drawaxes(RegionView3D *rv3d, float size, char drawtype) | ||||
| { | { | ||||
| int axis; | int axis; | ||||
| float v1[3] = {0.0, 0.0, 0.0}; | float v1[3] = {0.0, 0.0, 0.0}; | ||||
| Context not available. | |||||
| v2[axis] += size * 0.125f; | v2[axis] += size * 0.125f; | ||||
| draw_xyz_wire(v2, size, axis); | draw_xyz_wire(rv3d, v2, size, axis); | ||||
| /* reset v1 & v2 to zero */ | /* reset v1 & v2 to zero */ | ||||
| Context not available. | |||||
| glCallList(displist); | glCallList(displist); | ||||
| } | } | ||||
| static void draw_viewport_object_reconstruction(Scene *scene, Base *base, View3D *v3d, | static void draw_viewport_object_reconstruction(Scene *scene, Base *base, View3D *v3d, RegionView3D *rv3d, | ||||
| MovieClip *clip, MovieTrackingObject *tracking_object, | MovieClip *clip, MovieTrackingObject *tracking_object, | ||||
| const short dflag, const unsigned char ob_wire_col[4], | const short dflag, const unsigned char ob_wire_col[4], | ||||
| int *global_track_index, bool draw_selected) | int *global_track_index, bool draw_selected) | ||||
| Context not available. | |||||
| } | } | ||||
| } | } | ||||
| drawaxes(0.05f, v3d->bundle_drawtype); | drawaxes(rv3d, 0.05f, v3d->bundle_drawtype); | ||||
| glEnable(GL_LIGHTING); | glEnable(GL_LIGHTING); | ||||
| } | } | ||||
| Context not available. | |||||
| } | } | ||||
| } | } | ||||
| drawaxes(0.05f, v3d->bundle_drawtype); | drawaxes(rv3d, 0.05f, v3d->bundle_drawtype); | ||||
| glEnable(GL_LIGHTING); | glEnable(GL_LIGHTING); | ||||
| } | } | ||||
| Context not available. | |||||
| *global_track_index = tracknr; | *global_track_index = tracknr; | ||||
| } | } | ||||
| static void draw_viewport_reconstruction(Scene *scene, Base *base, View3D *v3d, MovieClip *clip, | static void draw_viewport_reconstruction(Scene *scene, Base *base, View3D *v3d, RegionView3D *rv3d, MovieClip *clip, | ||||
| const short dflag, const unsigned char ob_wire_col[4], | const short dflag, const unsigned char ob_wire_col[4], | ||||
| const bool draw_selected) | const bool draw_selected) | ||||
| { | { | ||||
| Context not available. | |||||
| tracking_object = tracking->objects.first; | tracking_object = tracking->objects.first; | ||||
| while (tracking_object) { | while (tracking_object) { | ||||
| draw_viewport_object_reconstruction(scene, base, v3d, clip, tracking_object, | draw_viewport_object_reconstruction(scene, base, v3d, rv3d, clip, tracking_object, | ||||
| dflag, ob_wire_col, &global_track_index, draw_selected); | dflag, ob_wire_col, &global_track_index, draw_selected); | ||||
| tracking_object = tracking_object->next; | tracking_object = tracking_object->next; | ||||
| Context not available. | |||||
| /* draw data for movie clip set as active for scene */ | /* draw data for movie clip set as active for scene */ | ||||
| if (clip) { | if (clip) { | ||||
| draw_viewport_reconstruction(scene, base, v3d, clip, dflag, ob_wire_col, false); | draw_viewport_reconstruction(scene, base, v3d, rv3d, clip, dflag, ob_wire_col, false); | ||||
| draw_viewport_reconstruction(scene, base, v3d, clip, dflag, ob_wire_col, true); | draw_viewport_reconstruction(scene, base, v3d, rv3d, clip, dflag, ob_wire_col, true); | ||||
| } | } | ||||
| #ifdef VIEW3D_CAMERA_BORDER_HACK | #ifdef VIEW3D_CAMERA_BORDER_HACK | ||||
| Context not available. | |||||
| draw_empty_image(ob, dflag, ob_wire_col); | draw_empty_image(ob, dflag, ob_wire_col); | ||||
| } | } | ||||
| else { | else { | ||||
| drawaxes(ob->empty_drawsize, ob->empty_drawtype); | drawaxes(rv3d, ob->empty_drawsize, ob->empty_drawtype); | ||||
| } | } | ||||
| } | } | ||||
| break; | break; | ||||
| Context not available. | |||||
| default: | default: | ||||
| if (!render_override) { | if (!render_override) { | ||||
| drawaxes(1.0, OB_ARROWS); | drawaxes(rv3d, 1.0, OB_ARROWS); | ||||
| } | } | ||||
| break; | break; | ||||
| } | } | ||||
| Context not available. | |||||
| if (dtx && (G.f & G_RENDER_OGL) == 0) { | if (dtx && (G.f & G_RENDER_OGL) == 0) { | ||||
| if (dtx & OB_AXIS) { | if (dtx & OB_AXIS) { | ||||
| drawaxes(1.0f, OB_ARROWS); | drawaxes(rv3d, 1.0f, OB_ARROWS); | ||||
| } | } | ||||
| if (dtx & OB_DRAWBOUNDOX) { | if (dtx & OB_DRAWBOUNDOX) { | ||||
| draw_bounding_volume(ob, ob->boundtype); | draw_bounding_volume(ob, ob->boundtype); | ||||
| Context not available. | |||||
| draw_empty_image(ob, DRAW_CONSTCOLOR, NULL); | draw_empty_image(ob, DRAW_CONSTCOLOR, NULL); | ||||
| } | } | ||||
| else { | else { | ||||
| drawaxes(ob->empty_drawsize, ob->empty_drawtype); | drawaxes(rv3d, ob->empty_drawsize, ob->empty_drawtype); | ||||
| } | } | ||||
| break; | break; | ||||
| } | } | ||||
| Context not available. | |||||