本文整理汇总了C++中DisplaySkeleton::LoadMotion方法的典型用法代码示例。如果您正苦于以下问题:C++ DisplaySkeleton::LoadMotion方法的具体用法?C++ DisplaySkeleton::LoadMotion怎么用?C++ DisplaySkeleton::LoadMotion使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DisplaySkeleton
的用法示例。
在下文中一共展示了DisplaySkeleton::LoadMotion方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: load_callback
void load_callback(Fl_Button *button, void *)
{
if(button == loadSkeleton_button)
if (lastSkeleton <= lastMotion) // cannot load new skeleton until motion is assigned to the current skeleton
{
char * filename = fl_file_chooser("Select filename","*.ASF","");
if(filename != NULL)
{
// Read skeleton from asf file
pSkeleton = new Skeleton(filename, MOCAP_SCALE);
lastSkeleton++;
// Set the rotations for all bones in their local coordinate system to 0
// Set root position to (0, 0, 0)
pSkeleton->setBasePosture();
displayer.LoadSkeleton(pSkeleton);
glwindow->redraw();
}
}
if(button == loadMotion_button)
{
if ((lastSkeleton >= 0) && (lastSkeleton >= lastMotion))
{
char * filename = fl_file_chooser("Select filename","*.AMC","");
if(filename != NULL)
{
// Read motion (.amc) file and create a motion
pMotion = new Motion(filename, MOCAP_SCALE, pSkeleton);
// backup the filename
strcpy(lastMotionFilename, filename);
// set sampled motion for display
displayer.LoadMotion(pMotion);
if (lastSkeleton > lastMotion)
lastMotion++;
UpdateMaxFrameNumber();
resetPostureAccordingFrameSlider();
frame_slider->value(currentFrameIndex);
frame_slider->maximum((double)maxFrames);
frame_slider->redraw();
glwindow->redraw();
Fl::flush();
}
} // if (lastSkeleton > lastMotion)
}
glwindow->redraw();
}
示例2: reload_callback
void reload_callback(Fl_Button *button, void *)
{
if (!displayer.GetNumSkeletons())
return;
// Read motion (.amc) file and create a motion
pMotion = new Motion(lastMotionFilename, MOCAP_SCALE, pSkeleton);
// Set sampled motion for display
displayer.LoadMotion(pMotion);
resetPostureAccordingFrameSlider();
UpdateMaxFrameNumber();
frame_slider->maximum((double)maxFrames);
frame_slider->value(currentFrameIndex);
frame_slider->redraw();
Fl::flush();
glwindow->redraw();
}
示例3: main
int main(int argc, char **argv)
{
// Initialize form, sliders and buttons
form = make_window();
performanceCounter.StartCounter(); // init
saveFileTimeCounter.StartCounter(); // init
groundPlane_button->value(groundPlane);
fog_button->value(useFog);
worldAxes_button->value(renderWorldAxes);
frame_slider->value(1);
if (saveScreenToFile == SAVE_CONTINUOUS)
record_button->value(1); // ON
else
record_button->value(0); // OFF
// just do some timing, no special purpose
// because the first data is always not trustable according to experience
performanceCounter.StopCounter();
performanceCounter.GetElapsedTime();
saveFileTimeCounter.StopCounter();
saveFileTimeCounter.GetElapsedTime();
performanceCounter.StartCounter();
// show form, and do initial draw of model
form->show();
glwindow->show(); // glwindow is initialized when the form is built
performanceCounter.StopCounter();
if (argc > 2)
{
char *filename;
filename = argv[1];
if(filename != NULL)
{
//Read skeleton from asf file
pSkeleton = new Skeleton(filename, MOCAP_SCALE);
//Set the rotations for all bones in their local coordinate system to 0
//Set root position to (0, 0, 0)
pSkeleton->setBasePosture();
displayer.LoadSkeleton(pSkeleton);
lastSkeleton++;
}
if (displayer.GetNumSkeletons())
{
filename = argv[2];
if(filename != NULL)
{
//Read motion (.amc) file and create a motion
pMotion = new Motion(filename, MOCAP_SCALE,pSkeleton);
//set sampled motion for display
displayer.LoadMotion(pMotion);
lastMotion++;
//Tell skeleton to perform the first pose ( first posture )
pSkeleton->setPosture(*(displayer.GetSkeletonMotion(0)->GetPosture(0)));
// Set skeleton to perform the first pose ( first posture )
int currentFrames = displayer.GetSkeletonMotion(0)->GetNumFrames();
if (currentFrames > maxFrames)
{
maxFrames = currentFrames;
frame_slider->maximum((double)maxFrames);
}
frame_slider->maximum((double)maxFrames);
currentFrameIndex=0;
} // if(filename != NULL)
}
else
printf("Load a skeleton first.\n");
framesIncrementDoublePrecision = 1.0; // Current frame and frame increment
playButton = ON;
repeatButton = OFF;
groundPlane = ON;
glwindow->redraw();
} // if (argc > 2)
Fl::add_idle(idle);
return Fl::run();
}
示例4: main
//.........这里部分代码省略.........
eye = Vector3(-5, 1, -5);
focus= Vector3(0, 1, 0);
up = Vector3(0, 1, 0);
// init scene objects
numObjects = 0;
boneIndex=-1;
objsPerBone=0;
// spheres
numSpheres=0;
spheres[numSpheres] = new Sphere(Vector3(0, -1000, 0), 1000, Vector3(0.5, 0.5, 0.5), MAT_DIFFUSE);
objects[numObjects++] = spheres[numSpheres++];
spheres[numSpheres] = new Sphere(Vector3(-1.5, 2, 3), 0.2, Vector3(0, 0, 1), MAT_DIFFUSE);
objects[numObjects++] = spheres[numSpheres++];
//cylinders
numCylinders=0;
Matrix3 rot = getRotationMatrix(90, 1, 0, 0);
cylinders[numCylinders]= new Cylinder(Vector3(-1.5, 0.5, 3), 0.2, 1.5, rot, Vector3(0, 0, 1), MAT_DIFFUSE);
objects[numObjects++] = cylinders[numCylinders++];
cylinders[numCylinders]= new Cylinder(Vector3(-1.5, 2, 3), 0.005, 2, rot, Vector3(0.8, 0.8, 0.8), MAT_DIFFUSE);
objects[numObjects++] = cylinders[numCylinders++];
// dumbells
float l = 0.35;
Vector3 pos = Vector3(-3, 0.07, 3);
rot = getRotationMatrix(120, 0, 1, 0);
spheres[numSpheres] = new Sphere(pos, 0.07, Vector3(0.2, 0.2, 0.2), MAT_DIFFUSE);
objects[numObjects++] = spheres[numSpheres++];
spheres[numSpheres] = new Sphere(pos+(rot*Vector3(0, 0, l)), 0.07, Vector3(0.2, 0.2, 0.2), MAT_DIFFUSE);
objects[numObjects++] = spheres[numSpheres++];
cylinders[numCylinders]= new Cylinder(pos, 0.02, l, rot, Vector3(0.2, 0.2, 0.2), MAT_DIFFUSE);
objects[numObjects++] = cylinders[numCylinders++];
pos = Vector3(-3.5, 0.07, 3.4);
rot = getRotationMatrix(170, 0, 1, 0);
spheres[numSpheres] = new Sphere(pos, 0.07, Vector3(0.2, 0.2, 0.2), MAT_DIFFUSE);
objects[numObjects++] = spheres[numSpheres++];
spheres[numSpheres] = new Sphere(pos+(rot*Vector3(0, 0, l)), 0.07, Vector3(0.2, 0.2, 0.2), MAT_DIFFUSE);
objects[numObjects++] = spheres[numSpheres++];
cylinders[numCylinders]= new Cylinder(pos, 0.02, l, rot, Vector3(0.2, 0.2, 0.2), MAT_DIFFUSE);
objects[numObjects++] = cylinders[numCylinders++];
//triangles
numTriangles=0;
Vector3 ah = Vector3( 2, 3, 5); Vector3 al = Vector3( 2, 0, 5);
Vector3 bh = Vector3(-5, 3, 5); Vector3 bl = Vector3(-5, 0, 5);
Vector3 ch = Vector3( 2, 3, -2); Vector3 cl = Vector3( 2, 0, -2);
Vector3 dh = Vector3(-5, 3, -2); Vector3 dl = Vector3(-5, 0, -2);
triangles[numTriangles] = new Triangle(ah, bh, al, Vector3(0, 0, 1), 0, 0, 1, 0, 0, 1);
objects[numObjects++] = triangles[numTriangles++];
triangles[numTriangles] = new Triangle(bh, al, bl, Vector3(0, 0, 1), 1, 0, 0, 1, 1, 1);
objects[numObjects++] = triangles[numTriangles++];
triangles[numTriangles] = new Triangle(bh, dh, bl, Vector3(0.5, 0.5, 0.5),MAT_REFLECT);
objects[numObjects++] = triangles[numTriangles++];
triangles[numTriangles] = new Triangle(dh, bl, dl, Vector3(0.5, 0.5, 0.5),MAT_REFLECT);
objects[numObjects++] = triangles[numTriangles++];
triangles[numTriangles] = new Triangle(ch, ah, cl, Vector3(1, 0, 1), 0, 0, 1, 0, 0, 1);
objects[numObjects++] = triangles[numTriangles++];
triangles[numTriangles] = new Triangle(ah, cl, al, Vector3(1, 0, 1), 1, 0, 0, 1, 1, 1);
objects[numObjects++] = triangles[numTriangles++];
triangles[numTriangles] = new Triangle(dh, ch, dl, Vector3(1, 1, 0), 0, 0, 1, 0, 0, 1);
objects[numObjects++] = triangles[numTriangles++];
triangles[numTriangles] = new Triangle(ch, dl, cl, Vector3(1, 1, 0), 1, 0, 0, 1, 1, 1);
objects[numObjects++] = triangles[numTriangles++];
triangles[numTriangles] = new Triangle(ah, bh, ch, Vector3(0.75, 0.75, 0.75),MAT_DIFFUSE);
objects[numObjects++] = triangles[numTriangles++];
triangles[numTriangles] = new Triangle(bh, ch, dh, Vector3(0.75, 0.75, 0.75),MAT_DIFFUSE);
objects[numObjects++] = triangles[numTriangles++];
// lights
numLights=0;
lights[numLights++] = new Light(Vector3(1, 2, -1), Vector3(0.5, 0.5, 0.5),
Vector3(1.0f, 0.0f, 0.0f), Vector3(0.0f, 0.0f, 1.0f), 1, 1, 0.05f);
lights[numLights++] = new Light(Vector3(-1, 2.9, -1), Vector3(0.5, 0.5, 0.5),
Vector3(1.0f, 0.0f, 0.0f), Vector3(0.0f, 0.0f, 1.0f), 1, 1, 0.05f);
// GLUT functions
glutInit(&argc, argv);
glutInitWindowSize(windowWidth,windowHeight);
glutInitWindowPosition(100, 100);
glutCreateWindow("CS 180, Final Project");
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutIdleFunc(idle);
// load up Kim's skeleton stuff
string skeletonFilename("01.asf");
string motionFilename("01_02.amc");
skeleton = new Skeleton(skeletonFilename.c_str(), MOCAP_SCALE);
skeleton->setBasePosture();
displayer.LoadSkeleton(skeleton);
motion = new Motion(motionFilename.c_str(), MOCAP_SCALE, skeleton);
displayer.LoadMotion(motion);
skeleton->setPosture(*(displayer.GetSkeletonMotion(0)->GetPosture(0)));
// load up the next motion capture frame
SetSkeletonsToSpecifiedFrame(currentFrameIndex);
glutMainLoop();
return 0;
}