Panda3D Manual: Loading and Animating the Panda Model (C++)


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