Woody Loader Library Advanced Computer Animation HW3 Motion
Woody Loader Library Advanced Computer Animation HW#3
Motion Data (Acclaim Format) ¡ *. ASF l ¡ Skeleton Information *. AMC l l Motion Data for a “*. ASF” …… A Sequence of “Full-body poses”
Woody Loader Library ¡ Woody. Loader. h ¡ Woody. Loader. lib
Header file (Woody. Loader. h) ¡ bool load. Woody ( Woody. Motion*, char* asf_file, char* amc_file ); ¡ class Woody. Motion; ¡ struct WD_Frame; ¡ struct WD_Cylinder; ¡ struct WD_Sphere; // full-body pose
“load. Woody()” Fucntion *. ASF load. Woody() *. AMC Woody. Motion class
Woody. Loader. lib *. ASF load. Woody() *. AMC Woody. Motion class #include “Woody. Loader. h“ Woody. Motion woody; int main() { load. Woody ( &woody, “aaa. asf”, “aaa. amc” ); : : return 0; }
Woody. Motion class ¡ class Woody. Motion l Includes a sequence of “WD_Frame”s. Woody. Motion WD_Frame 0 WD_Frame 1 WD_Frame 2 WD_Frame 3 WD_Frame … ……
Woody. Motion class Woody. Motion { public: int get. Joint. Num(); int get. Frame. Num(); WD_Frame* get. Frame( int index ); private: WD_Frame frame. List[ ]; }; // 0부터
Woody. Loader. h struct WD_Frame { WD_Cylinder WD_Sphere }; cylinder[24]; sphere[24]; 0 1 2 3 4 …… …… WD_Frame …… 23
Woody. Loader. h (WD_Sphere) struct WD_Sphere { float p[3]; float r; }; r (p[0], p[1], p[2])
Woody. Loader. h (WD_Cylinder) r (p 1[0], p 1[1], p 1[2]) struct WD_Cylinder { float p 1[3]; float p 2[3]; float r; }; (p 2[0], p 2[1], p 2[2])
Sample code Woody. Motion woody; int main() { load. Woody ( &woody, “aaa. asf”, “aaa. amc” ); : } void draw. One. Frame() { WD_Frame* f = woody. get. Frame( 10 ); for ( int i = 0; i < woody. get. Joint. Num(); i++ ) { draw. Sphere ( f->sphere[i]. p, f->sphere[i]. r ); draw. Cylinder ( f->cylinder[i]. p 1, f->cylinder[i]. p 2, f>cylinder[i]. r ); } }
Index of each sphere and cylinder struct WD_Frame { WD_Cylinder cylinder[24]; WD_Sphere sphere[24]; };
Example
- Slides: 14