| 52 | |
| 53 | |
| 54 | def show3Dpose(vals, ax, fix_z): |
| 55 | ax.view_init(elev=15., azim=70) |
| 56 | |
| 57 | colors = [(255/255, 128/255, 255/255), |
| 58 | (127/255, 127/255, 255/255), |
| 59 | (255/255, 127/255, 127/255)] |
| 60 | |
| 61 | I = np.array( [0, 0, 1, 4, 2, 5, 0, 7, 8, 8, 14, 15, 11, 12, 8, 9]) |
| 62 | J = np.array( [1, 4, 2, 5, 3, 6, 7, 8, 14, 11, 15, 16, 12, 13, 9, 10]) |
| 63 | |
| 64 | LR = [3, 3, 3, 3, 3, 3, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1] |
| 65 | |
| 66 | for i in np.arange( len(I) ): |
| 67 | x, y, z = [np.array( [vals[I[i], j], vals[J[i], j]] ) for j in range(3)] |
| 68 | ax.plot(x, y, z, lw=3, color = colors[LR[i]-1]) |
| 69 | |
| 70 | RADIUS = 0.72 |
| 71 | RADIUS_Z = 0.7 |
| 72 | |
| 73 | xroot, yroot, zroot = vals[0,0], vals[0,1], vals[0,2] |
| 74 | ax.set_xlim3d([-RADIUS+xroot, RADIUS+xroot]) |
| 75 | ax.set_ylim3d([-RADIUS+yroot, RADIUS+yroot]) |
| 76 | |
| 77 | if fix_z: |
| 78 | left_z = max(0.0, -RADIUS_Z+zroot) |
| 79 | right_z = RADIUS_Z+zroot |
| 80 | # ax.set_zlim3d([left_z, right_z]) |
| 81 | ax.set_zlim3d([0, 1.5]) |
| 82 | else: |
| 83 | ax.set_zlim3d([-RADIUS_Z+zroot, RADIUS_Z+zroot]) |
| 84 | |
| 85 | ax.set_aspect('equal') # works fine in matplotlib==2.2.2 or 3.7.1 |
| 86 | |
| 87 | white = (1.0, 1.0, 1.0, 0.0) |
| 88 | ax.xaxis.set_pane_color(white) |
| 89 | ax.yaxis.set_pane_color(white) |
| 90 | ax.zaxis.set_pane_color(white) |
| 91 | |
| 92 | ax.tick_params('x', labelbottom = False) |
| 93 | ax.tick_params('y', labelleft = False) |
| 94 | ax.tick_params('z', labelleft = False) |
| 95 | |
| 96 | |
| 97 | def get_pose2D(video_path, output_dir): |