Changeset View
Changeset View
Standalone View
Standalone View
space_view3d_math_vis/draw.py
| Context not available. | |||||
| callback_handle = [] | callback_handle = [] | ||||
| def tag_redraw_all_view3d(): | def tag_redraw_all_view3d_areas(): | ||||
| context = bpy.context | context = bpy.context | ||||
| # Py cant access notifers | # Py cant access notifers | ||||
| for window in context.window_manager.windows: | for window in context.window_manager.windows: | ||||
| for area in window.screen.areas: | for area in window.screen.areas: | ||||
| if area.type == 'VIEW_3D': | if area.type == 'VIEW_3D': | ||||
| for region in area.regions: | area.tag_redraw() | ||||
| if region.type == 'WINDOW': | |||||
| region.tag_redraw() | |||||
| def callback_enable(): | def callback_enable(): | ||||
| if callback_handle: | if callback_handle: | ||||
| Context not available. | |||||
| handle_view = SpaceView3D.draw_handler_add(draw_callback_view, (), 'WINDOW', 'POST_VIEW') | handle_view = SpaceView3D.draw_handler_add(draw_callback_view, (), 'WINDOW', 'POST_VIEW') | ||||
| callback_handle[:] = handle_pixel, handle_view | callback_handle[:] = handle_pixel, handle_view | ||||
| tag_redraw_all_view3d() | tag_redraw_all_view3d_areas() | ||||
| def callback_disable(): | def callback_disable(): | ||||
| Context not available. | |||||
| SpaceView3D.draw_handler_remove(handle_view, 'WINDOW') | SpaceView3D.draw_handler_remove(handle_view, 'WINDOW') | ||||
| callback_handle[:] = [] | callback_handle[:] = [] | ||||
| tag_redraw_all_view3d() | tag_redraw_all_view3d_areas() | ||||
| def draw_callback_px(): | def draw_callback_px(): | ||||
| Context not available. | |||||
| data_matrix, data_quat, data_euler, data_vector, data_vector_array = utils.console_math_data() | data_matrix, data_quat, data_euler, data_vector, data_vector_array = utils.console_math_data() | ||||
| name_hide = context.scene.MathVisProp.name_hide | |||||
| if name_hide: | |||||
| return | |||||
| if not data_matrix and not data_quat and not data_euler and not data_vector and not data_vector_array: | if not data_matrix and not data_quat and not data_euler and not data_vector and not data_vector_array: | ||||
| ''' | ''' | ||||
| Context not available. | |||||
| # vars for projection | # vars for projection | ||||
| perspective_matrix = region3d.perspective_matrix.copy() | perspective_matrix = region3d.perspective_matrix.copy() | ||||
| def draw_text(text, vec): | def draw_text(text, vec, dx=3.0, dy=-4.0): | ||||
| vec_4d = perspective_matrix * vec.to_4d() | vec_4d = perspective_matrix * vec.to_4d() | ||||
| if vec_4d.w > 0.0: | if vec_4d.w > 0.0: | ||||
| x = region_mid_width + region_mid_width * (vec_4d.x / vec_4d.w) | x = region_mid_width + region_mid_width * (vec_4d.x / vec_4d.w) | ||||
| y = region_mid_height + region_mid_height * (vec_4d.y / vec_4d.w) | y = region_mid_height + region_mid_height * (vec_4d.y / vec_4d.w) | ||||
| blf.position(font_id, x + 3.0, y - 4.0, 0.0) | blf.position(font_id, x + dx, y + dy, 0.0) | ||||
| blf.draw(font_id, text) | blf.draw(font_id, text) | ||||
| # points | # points | ||||
| Context not available. | |||||
| # matrix | # matrix | ||||
| if data_matrix: | if data_matrix: | ||||
| for key, mat in data_matrix.items(): | for key, mat in data_matrix.items(): | ||||
| draw_text(key, mat[3]) | loc = Vector((mat[0][3], mat[1][3], mat[2][3])) | ||||
| draw_text(key, loc, dx=10, dy=-20) | |||||
| line = 20 | |||||
| if data_quat: | if data_quat: | ||||
| loc = context.scene.cursor_location.copy() | loc = context.scene.cursor_location.copy() | ||||
| for key, mat in data_quat.items(): | for key, mat in data_quat.items(): | ||||
| draw_text(key, loc) | draw_text(key, loc, dy=-line) | ||||
| line +=20 | |||||
| if data_euler: | if data_euler: | ||||
| loc = context.scene.cursor_location.copy() | loc = context.scene.cursor_location.copy() | ||||
| for key, mat in data_euler.items(): | for key, mat in data_euler.items(): | ||||
| draw_text(key, loc) | draw_text(key, loc, dy=-line) | ||||
| line +=20 | |||||
| def draw_callback_view(): | def draw_callback_view(): | ||||
| Context not available. | |||||
| data_matrix, data_quat, data_euler, data_vector, data_vector_array = utils.console_math_data() | data_matrix, data_quat, data_euler, data_vector, data_vector_array = utils.console_math_data() | ||||
| # draw_matrix modifiers | |||||
| bbox_hide = context.scene.MathVisProp.bbox_hide | |||||
| bbox_scale = context.scene.MathVisProp.bbox_scale | |||||
| # draw_matrix vars | # draw_matrix vars | ||||
| zero = Vector((0.0, 0.0, 0.0)) | zero = Vector((0.0, 0.0, 0.0)) | ||||
| x_p = Vector((1.0, 0.0, 0.0)) | x_p = Vector((bbox_scale, 0.0, 0.0)) | ||||
| x_n = Vector((-1.0, 0.0, 0.0)) | x_n = Vector((-bbox_scale, 0.0, 0.0)) | ||||
| y_p = Vector((0.0, 1.0, 0.0)) | y_p = Vector((0.0, bbox_scale, 0.0)) | ||||
| y_n = Vector((0.0, -1.0, 0.0)) | y_n = Vector((0.0, -bbox_scale, 0.0)) | ||||
| z_p = Vector((0.0, 0.0, 1.0)) | z_p = Vector((0.0, 0.0, bbox_scale)) | ||||
| z_n = Vector((0.0, 0.0, -1.0)) | z_n = Vector((0.0, 0.0, -bbox_scale)) | ||||
| bb = [Vector() for i in range(8)] | bb = [Vector() for i in range(8)] | ||||
| def draw_matrix(mat): | def draw_matrix(mat): | ||||
| zero_tx = mat * zero | zero_tx = mat * zero | ||||
| Context not available. | |||||
| glEnd() | glEnd() | ||||
| # z | # z | ||||
| glColor3f(0.2, 0.2, 1.0) | glColor3f(0.4, 0.4, 1.0) | ||||
| glBegin(GL_LINES) | glBegin(GL_LINES) | ||||
| glVertex3f(*(zero_tx)) | glVertex3f(*(zero_tx)) | ||||
| glVertex3f(*(mat * z_p)) | glVertex3f(*(mat * z_p)) | ||||
| Context not available. | |||||
| glEnd() | glEnd() | ||||
| # bounding box | # bounding box | ||||
| if bbox_hide: | |||||
| return | |||||
| i = 0 | i = 0 | ||||
| glColor3f(1.0, 1.0, 1.0) | glColor3f(1.0, 1.0, 1.0) | ||||
| for x in (-1.0, 1.0): | for x in (-bbox_scale, bbox_scale): | ||||
| for y in (-1.0, 1.0): | for y in (-bbox_scale, bbox_scale): | ||||
| for z in (-1.0, 1.0): | for z in (-bbox_scale, bbox_scale): | ||||
| bb[i][:] = x, y, z | bb[i][:] = x, y, z | ||||
| bb[i] = mat * bb[i] | bb[i] = mat * bb[i] | ||||
| i += 1 | i += 1 | ||||
| Context not available. | |||||