-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathobstacle.hpp
executable file
·92 lines (75 loc) · 3.24 KB
/
obstacle.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*
Copyright ©2013 The Regents of the University of California
(Regents). All Rights Reserved. Permission to use, copy, modify, and
distribute this software and its documentation for educational,
research, and not-for-profit purposes, without fee and without a
signed licensing agreement, is hereby granted, provided that the
above copyright notice, this paragraph and the following two
paragraphs appear in all copies, modifications, and
distributions. Contact The Office of Technology Licensing, UC
Berkeley, 2150 Shattuck Avenue, Suite 510, Berkeley, CA 94720-1620,
(510) 643-7201, for commercial licensing opportunities.
IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT,
INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
DOCUMENTATION, EVEN IF REGENTS HAS BEEN ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.
REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
FOR A PARTICULAR PURPOSE. THE SOFTWARE AND ACCOMPANYING
DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS
IS". REGENTS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT,
UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*/
#ifndef OBSTACLE_HPP
#define OBSTACLE_HPP
#include "mesh.hpp"
#include "spline.hpp"
#include "util.hpp"
#include <unsupported/Eigen/CXX11/Tensor>
#include <Eigen/Eigen>
#include <opencv2/core/eigen.hpp>
#include "tensor.h"
#include "smpl.h"
// A class which holds both moving and static meshes.
// Note that moving meshes MUST retain their structure across frames with only
// positions changing.
struct Obstacle {
public:
double start_time, end_time;
bool activated;
// Gets the last-returned mesh or its transformation
Mesh& get_mesh();
const Mesh& get_mesh() const;
// Gets the state of the mesh at a given time, and updates the internal
// meshes
Mesh& get_mesh(double time_sec);
// lerp with previous mesh at time t - dt
void blend_with_previous (double t, double dt, double blend);
void smpl_blend_with_previous (double t, double dt, double blend);
const Motion *transform_spline;
// Create smpl model
SMPL* smpl;
// Get SMPL mesh from shape, pose parameters
Mesh& get_smpl_mesh(double time_sec);
// motion parameters for smpl
// notice that smpl shares the same data structure
const Motion *smpl_motion;
// smpl related
bool gender;
// Shape parameters for smpl
Eigen::MatrixXf betas;
// A mesh containing the original, untransformed object
Mesh base_mesh;
// A mesh containing the correct mesh structure
Mesh curr_state_mesh;
Obstacle (): start_time(0), end_time(infinity), activated(false) {}
};
// // Default arguments imply it's a static obstacle
// // An obstacle mesh may have multiple parts, so when you read one in,
// // you get a vector of obstacles back, each representing one part.
// std::vector<Obstacle> make_obstacle
// (std::string filename, Transformation overall_transform = identity(),
// std::vector<Transformation> global_transforms = std::vector<Transformation>(),
// double fps = 1, double start_time = 0, double pause_time = 0);
#endif