Panda3D Manual: Loading and Animating the Panda Model (CXX)


This page is not in the table of contents.

Now that the scenery is in place, we will now load an animated panda. Update your code to look like this:

#include "pandaFramework.h"
#include "pandaSystem.h"

PandaFramework framework;

int main(int argc, char *argv[]) {
    //open a new window framework and set title
  framework.open_framework(argc, argv);
  framework.set_window_title("My Panda3D Window");
  
    //open the window
  WindowFramework *window = framework.open_window();
  NodePath cam = window->get_camera_group(); //get the camera and store it
 
    //load the environment model
  NodePath environ = window->load_model(framework.get_models(),"models/environment");
  environ.reparent_to(window->get_render());
  environ.set_scale(0.25,0.25,0.25);
  environ.set_pos(-8,42,0);

    //load our panda
  NodePath pandaActor = window->load_model(framework.get_models(),"panda-model");
  pandaActor.set_scale(0.005,0.005,0.005);
  pandaActor.reparent_to(window->get_render());
  
    //load the walk animation
  window->load_model(pandaActor,"panda-walk4");
  window->loop_animations(0);

    //do the main loop:
  ClockObject* clock; //create a clock object for time measurement
  clock=ClockObject::get_global_clock();
  Thread *current_thread = Thread::get_current_thread();
  while(framework.do_frame(current_thread)) {
    double time = clock->get_real_time(); //get the time in seconds
    double angledegrees = time * 6.0; //the angle of the camera in degrees
    double angleradians = angledegrees * (3.14 / 180.0); //in radians
    cam.set_pos(20*sin(angleradians),-20.0*cos(angleradians),3); //set the position
    cam.set_hpr(angledegrees, 0, 0); //set the hpr
  }

    //close the window framework
  framework.close_framework();
  return (0);
}


Different from Python, you have to load the animation file as a normal model and reparent it to render just as you would do with a normal model.

The command loop_animations(0) causes all animations to begin looping, since the walk animation is the only one at the moment. What that 0 is doing there is not necessary to know right now. The result is a panda walking in place, as if on a treadmill:

Tutorial3.jpg