def get_trajectory(): ''' Send a POST request to this URL. Input: a JSON object as follows: { cameraPoseN: [0, ...], cameraPoseE: [0, ...], cameraPoseD: [0, ...], cameraPoseT: [0, ...], } Returns: a JSON object as follows: { interpolatedSpline: [...], } ''' parsed_json = request.get_json() if parsed_json is None: return abort(400) cameraPose_n_list = parsed_json['cameraPoseN'] cameraPose_e_list = parsed_json['cameraPoseE'] cameraPose_d_list = parsed_json['cameraPoseD'] cameraPose_t_list = parsed_json['cameraPoseT'] print "get_trajectory: Calling trajectoryAPI now..." P_cameraPose = c_[cameraPose_n_list, cameraPose_e_list, cameraPose_d_list] T_cameraPose = c_[cameraPose_t_list, cameraPose_t_list, cameraPose_t_list] print "P: ", P_cameraPose P_interpolatedSpline = trajectoryAPI.compute_easing_spline_trajectory( P_cameraPose, T_cameraPose) #print "get_trajectory: Response from trajectoryAPI", P_interpolatedSpline data = { 'interpolatedSpline': P_interpolatedSpline.tolist(), } return jsonify(data)
def get_trajectory(): ''' Send a POST request to this URL. Input: a JSON object as follows: { cameraPoseN: [0, ...], cameraPoseE: [0, ...], cameraPoseD: [0, ...], cameraPoseT: [0, ...], } Returns: a JSON object as follows: { interpolatedSpline: [...], } ''' parsed_json = request.get_json() if parsed_json is None: return abort(400) cameraPose_n_list = parsed_json['cameraPoseN'] cameraPose_e_list = parsed_json['cameraPoseE'] cameraPose_d_list = parsed_json['cameraPoseD'] cameraPose_t_list = parsed_json['cameraPoseT'] print "get_trajectory: Calling trajectoryAPI now..." P_cameraPose = c_[cameraPose_n_list, cameraPose_e_list, cameraPose_d_list] T_cameraPose = c_[cameraPose_t_list, cameraPose_t_list, cameraPose_t_list] print "P: ", P_cameraPose P_interpolatedSpline = trajectoryAPI.compute_easing_spline_trajectory(P_cameraPose, T_cameraPose) print "get_trajectory: Response from trajectoryAPI", P_interpolatedSpline data = { 'interpolatedSpline': P_interpolatedSpline.tolist(), } return jsonify(data)
def get_toric_trajectory(): ''' Send a POST request to this URL. Input: a JSON object as follows: { cameraPoseN: [0, ...], cameraPoseE: [0, ...], cameraPoseD: [0, ...], cameraPoseT: [0, ...], personA: [x, y, z, ...] personB: [x, y, z, ...] screenSpaceA : [x, y, ...] screenSpaceB : [x, y, ...] } Returns: a JSON object as follows: { interpolatedSpline: [...], } ''' parsed_json = request.get_json() if parsed_json is None: return abort(400) cameraPose_n_list = parsed_json['cameraPoseN'] #y cameraPose_e_list = parsed_json['cameraPoseE'] #x cameraPose_d_list = parsed_json['cameraPoseD'] #z cameraPose_t_list = parsed_json['cameraPoseT'] personA_list = parsed_json['personA'] personB_list = parsed_json['personB'] screenSpaceA_list = parsed_json['screenSpaceA'] screenSpaceB_list = parsed_json['screenSpaceB'] print "get_toric_trajectory: Calling trajectoryAPI now..." # toric interpolation # people positons PA_1 = toric.Vector3(personA_list[0],personA_list[1],personA_list[2]) PB_1 = toric.Vector3(personB_list[0],personB_list[1],personB_list[2]) PA_2 = toric.Vector3(personA_list[0],personA_list[1],personA_list[2]) # ending people positions: for the moment the positions are the same PB_2 = toric.Vector3(personB_list[0],personB_list[1],personB_list[2]) # camera positions C_1 = toric.Vector3(cameraPose_n_list[0], cameraPose_e_list[0], cameraPose_d_list[0]) C_2 = toric.Vector3(cameraPose_n_list[1], cameraPose_e_list[1], cameraPose_d_list[1]) # screen space positions SA_1 = toric.Vector2(screenSpaceA_list[0], screenSpaceA_list[1]) SB_1 = toric.Vector2(screenSpaceB_list[0], screenSpaceB_list[1]) SA_2 = toric.Vector2(screenSpaceA_list[2], screenSpaceA_list[3]) SB_2 = toric.Vector2(screenSpaceB_list[2], screenSpaceB_list[3]) interpolated = toricinterpolation.toric_position_interpolation(C_1, PA_1, PB_1, C_2, PA_2, PB_2) print C_1 print C_2 P_cameraPose = interpolated['F'] #orientInterpolated = toricinterpolation.toric_orientation_interpolation(P_cameraPose, SA_1, SB_1, SA_2, SB_2, PA_1, PB_1, PA_2, PB_2) print "P: ", P_cameraPose T_cameraPose = c_[interpolated['t'], interpolated['t'], interpolated['t']] P_positionSpline = trajectoryAPI.compute_easing_spline_trajectory(P_cameraPose, T_cameraPose) print "get_toric_trajectory (position): Response from trajectoryAPI", P_positionSpline #print "get_toric_trajectory (orientation): Response from trajectoryAPI", P_orientationSpline data = { 'positionSpline': P_positionSpline.tolist(), #'orientationSpline': P_orientationSpline.tolist(), } return jsonify(data)
def get_toric_trajectory(): ''' Send a POST request to this URL. Input: a JSON object as follows: { cameraPoseN: [0, ...], cameraPoseE: [0, ...], cameraPoseD: [0, ...], cameraPoseT: [0, ...], } Returns: a JSON object as follows: { interpolatedSpline: [...], } ''' parsed_json = request.get_json() if parsed_json is None: return abort(400) cameraPose_n_list = parsed_json['cameraPoseN'] #y cameraPose_e_list = parsed_json['cameraPoseE'] #x cameraPose_d_list = parsed_json['cameraPoseD'] #z cameraPose_t_list = parsed_json['cameraPoseT'] personA_list = parsed_json['personA'] personB_list = parsed_json['personB'] print "get_trajectory: Calling trajectoryAPI now..." # toric interpolation # starting people positons PA_1 = toric.Vector3(personA_list[0], personA_list[1], personA_list[2]) PB_1 = toric.Vector3(personB_list[0], personB_list[1], personB_list[2]) # ending people positions: for the moment the positions are the same PA_2 = toric.Vector3(personA_list[0], personA_list[1], personA_list[2]) PB_2 = toric.Vector3(personB_list[0], personB_list[1], personB_list[2]) # Starting camera position is *outside* of PA_1: C_1 = toric.Vector3(cameraPose_n_list[0], cameraPose_e_list[0], cameraPose_d_list[0]) C_2 = toric.Vector3(cameraPose_n_list[1], cameraPose_e_list[1], cameraPose_d_list[1]) interpolated = toricinterpolation.toric_interpolation( C_1, PA_1, PB_1, C_2, PA_2, PB_2) print C_1 print C_2 P_cameraPose_new = interpolated['F'] print "P: ", P_cameraPose_new P_cameraPose_new[:, 0] *= 1000.0 P_cameraPose_new[:, 1] *= 1000.0 P_cameraPose_new[:, 2] *= -1000.0 T_cameraPose_new = c_[interpolated['t'], interpolated['t'], interpolated['t']] # scale P_interpolatedSpline = trajectoryAPI.compute_easing_spline_trajectory( P_cameraPose_new, T_cameraPose_new) print "get_trajectory: Response from trajectoryAPI", P_interpolatedSpline data = { 'interpolatedSpline': P_interpolatedSpline.tolist(), } return jsonify(data)
def get_toric_trajectory(): ''' Send a POST request to this URL. Input: a JSON object as follows: { cameraPoseN: [0, ...], cameraPoseE: [0, ...], cameraPoseD: [0, ...], cameraPoseT: [0, ...], } Returns: a JSON object as follows: { interpolatedSpline: [...], } ''' parsed_json = request.get_json() if parsed_json is None: return abort(400) cameraPose_n_list = parsed_json['cameraPoseN'] #y cameraPose_e_list = parsed_json['cameraPoseE'] #x cameraPose_d_list = parsed_json['cameraPoseD'] #z cameraPose_t_list = parsed_json['cameraPoseT'] personA_list = parsed_json['personA'] personB_list = parsed_json['personB'] print "get_trajectory: Calling trajectoryAPI now..." # toric interpolation # starting people positons PA_1 = toric.Vector3(personA_list[0],personA_list[1],personA_list[2]) PB_1 = toric.Vector3(personB_list[0],personB_list[1],personB_list[2]) # ending people positions: for the moment the positions are the same PA_2 = toric.Vector3(personA_list[0],personA_list[1],personA_list[2]) PB_2 = toric.Vector3(personB_list[0],personB_list[1],personB_list[2]) # Starting camera position is *outside* of PA_1: C_1 = toric.Vector3(cameraPose_n_list[0], cameraPose_e_list[0], cameraPose_d_list[0]) C_2 = toric.Vector3(cameraPose_n_list[1], cameraPose_e_list[1], cameraPose_d_list[1]) interpolated = toricinterpolation.toric_interpolation(C_1, PA_1, PB_1, C_2, PA_2, PB_2) print C_1 print C_2 P_cameraPose_new = interpolated['F'] print "P: ", P_cameraPose_new P_cameraPose_new[:,0] *= 1000.0; P_cameraPose_new[:,1] *= 1000.0; P_cameraPose_new[:,2] *= -1000.0; T_cameraPose_new = c_[interpolated['t'], interpolated['t'], interpolated['t']] # scale P_interpolatedSpline = trajectoryAPI.compute_easing_spline_trajectory(P_cameraPose_new, T_cameraPose_new) print "get_trajectory: Response from trajectoryAPI", P_interpolatedSpline data = { 'interpolatedSpline': P_interpolatedSpline.tolist(), } return jsonify(data)
add_import_search_dir('../trajectories') import optimized_spherical_paths as osp import numpy as np PA = np.array([0, 0, 0]) PB = np.array([2, 0, 0]) C0 = np.array([0, 2, 0]) C1 = np.array([2, 2, 0]) params = { 'minDist': 1 } sigma, wA, sigmaAvg, sigmaA, sigmaB, t = osp.calculate_position_trajectory_as_optimized_blend_of_spherical_trajectories( PA, PB, C0, C1, osp.real_optimizer_unconstrained_at_endpoints, params) print "Parameterizing returned sigma trajectory over time..." P_cameraPose = sigma print "P: " print P_cameraPose T_cameraPose = c_[t, t, t] P_positionSpline = trajectoryAPI.compute_easing_spline_trajectory(P_cameraPose, T_cameraPose) print P_positionSpline
def get_optimized_blended_spherical_trajectory(): ''' Send a POST request to this URL. Input: a JSON object as follows: { cameraPoseN: [0, ...], cameraPoseE: [0, ...], cameraPoseD: [0, ...], cameraPoseT: [0, ...], personA: [x, y, z, ...], personB: [x, y, z, ...], screenSpaceA : [x, y, ...], screenSpaceB : [x, y, ...], params: { minDist: 1 } } Returns: a JSON object as follows: { positionSpline: [...], } ''' parsed_json = request.get_json() if parsed_json is None: return abort(400) cameraPose_n_list = parsed_json['cameraPoseN'] #y cameraPose_e_list = parsed_json['cameraPoseE'] #x cameraPose_d_list = parsed_json['cameraPoseD'] #z cameraPose_t_list = parsed_json['cameraPoseT'] screenSpaceA_list = parsed_json['screenSpaceA'] screenSpaceB_list = parsed_json['screenSpaceB'] PA = np.array(parsed_json['personA']) PB = np.array(parsed_json['personB']) C0 = np.array([cameraPose_n_list[0], cameraPose_e_list[0], cameraPose_d_list[0]]) C1 = np.array([cameraPose_n_list[1], cameraPose_e_list[1], cameraPose_d_list[1]]) params = parsed_json['params'] print "get_optimized_blended_spherical_trajectory: Calling optimizer now..." print " PA is", PA print " PB is", PB print " C0 is", C0 print " C1 is", C1 print " params is:", params sigma, wA, sigmaAvg, sigmaA, sigmaB, t = osp.calculate_position_trajectory_as_optimized_blend_of_spherical_trajectories( PA, PB, C0, C1, osp.real_optimizer_unconstrained_at_endpoints, params) print "Parameterizing returned sigma trajectory over time..." P_cameraPose = sigma print "P: ", P_cameraPose T_cameraPose = c_[t, t, t] P_positionSpline = trajectoryAPI.compute_easing_spline_trajectory(P_cameraPose, T_cameraPose) data = { 'positionSpline': P_positionSpline.tolist(), } return jsonify(data)
def get_optimized_blended_spherical_trajectory(): ''' Send a POST request to this URL. Input: a JSON object as follows: { cameraPoseN: [0, ...], cameraPoseE: [0, ...], cameraPoseD: [0, ...], cameraPoseT: [0, ...], personA: [x, y, z, ...], personB: [x, y, z, ...], screenSpaceA : [x, y, ...], screenSpaceB : [x, y, ...], params: { minDist: 1 } } Returns: a JSON object as follows: { positionSpline: [...], } ''' parsed_json = request.get_json() if parsed_json is None: return abort(400) cameraPose_n_list = parsed_json['cameraPoseN'] #y cameraPose_e_list = parsed_json['cameraPoseE'] #x cameraPose_d_list = parsed_json['cameraPoseD'] #z cameraPose_t_list = parsed_json['cameraPoseT'] screenSpaceA_list = parsed_json['screenSpaceA'] screenSpaceB_list = parsed_json['screenSpaceB'] PA = np.array(parsed_json['personA']) PB = np.array(parsed_json['personB']) C0 = np.array( [cameraPose_n_list[0], cameraPose_e_list[0], cameraPose_d_list[0]]) C1 = np.array( [cameraPose_n_list[1], cameraPose_e_list[1], cameraPose_d_list[1]]) params = parsed_json['params'] print "get_optimized_blended_spherical_trajectory: Calling optimizer now..." print " PA is", PA print " PB is", PB print " C0 is", C0 print " C1 is", C1 print " params is:", params sigma, wA, sigmaAvg, sigmaA, sigmaB, t = osp.calculate_position_trajectory_as_optimized_blend_of_spherical_trajectories( PA, PB, C0, C1, osp.real_optimizer_unconstrained_at_endpoints, params) print "Parameterizing returned sigma trajectory over time..." P_cameraPose = sigma print "P: ", P_cameraPose T_cameraPose = c_[t, t, t] P_positionSpline = trajectoryAPI.compute_easing_spline_trajectory( P_cameraPose, T_cameraPose) data = { 'positionSpline': P_positionSpline.tolist(), } return jsonify(data)
def get_toric_trajectory(): ''' Send a POST request to this URL. Input: a JSON object as follows: { cameraPoseN: [0, ...], cameraPoseE: [0, ...], cameraPoseD: [0, ...], cameraPoseT: [0, ...], personA: [x, y, z, ...] personB: [x, y, z, ...] screenSpaceA : [x, y, ...] screenSpaceB : [x, y, ...] } Returns: a JSON object as follows: { interpolatedSpline: [...], } ''' parsed_json = request.get_json() if parsed_json is None: return abort(400) cameraPose_n_list = parsed_json['cameraPoseN'] #y cameraPose_e_list = parsed_json['cameraPoseE'] #x cameraPose_d_list = parsed_json['cameraPoseD'] #z cameraPose_t_list = parsed_json['cameraPoseT'] personA_list = parsed_json['personA'] personB_list = parsed_json['personB'] screenSpaceA_list = parsed_json['screenSpaceA'] screenSpaceB_list = parsed_json['screenSpaceB'] print "get_toric_trajectory: Calling trajectoryAPI now..." # toric interpolation # people positons PA_1 = toric.Vector3(personA_list[0], personA_list[1], personA_list[2]) PB_1 = toric.Vector3(personB_list[0], personB_list[1], personB_list[2]) PA_2 = toric.Vector3( personA_list[0], personA_list[1], personA_list[2] ) # ending people positions: for the moment the positions are the same PB_2 = toric.Vector3(personB_list[0], personB_list[1], personB_list[2]) # camera positions C_1 = toric.Vector3(cameraPose_n_list[0], cameraPose_e_list[0], cameraPose_d_list[0]) C_2 = toric.Vector3(cameraPose_n_list[1], cameraPose_e_list[1], cameraPose_d_list[1]) # screen space positions SA_1 = toric.Vector2(screenSpaceA_list[0], screenSpaceA_list[1]) SB_1 = toric.Vector2(screenSpaceB_list[0], screenSpaceB_list[1]) SA_2 = toric.Vector2(screenSpaceA_list[2], screenSpaceA_list[3]) SB_2 = toric.Vector2(screenSpaceB_list[2], screenSpaceB_list[3]) interpolated = toricinterpolation.toric_position_interpolation( C_1, PA_1, PB_1, C_2, PA_2, PB_2) print C_1 print C_2 P_cameraPose = interpolated['F'] #orientInterpolated = toricinterpolation.toric_orientation_interpolation(P_cameraPose, SA_1, SB_1, SA_2, SB_2, PA_1, PB_1, PA_2, PB_2) print "P: ", P_cameraPose T_cameraPose = c_[interpolated['t'], interpolated['t'], interpolated['t']] P_positionSpline = trajectoryAPI.compute_easing_spline_trajectory( P_cameraPose, T_cameraPose) #print "get_toric_trajectory (position): Response from trajectoryAPI", P_positionSpline #print "get_toric_trajectory (orientation): Response from trajectoryAPI", P_orientationSpline data = { 'positionSpline': P_positionSpline.tolist(), #'orientationSpline': P_orientationSpline.tolist(), } return jsonify(data)