[BACK]Return to tst2.py CVS log [TXT][DIR] Up to [Development] / performer / src / pyper / tests

File: [Development] / performer / src / pyper / tests / tst2.py (download)

Revision 1.1, Mon May 21 21:40:00 2001 UTC (16 years, 4 months ago) by flynnt
Branch: MAIN
CVS Tags: HEAD

Doing some cleanup and adding the pfgtk example and the python wrapper for
Performer (pyper).

from os import *
from libpyper import *
from libpyperbonus import *

pfInit();
pfFilePath
(
  "/home/sara/bram/PerformerCursus/pf_data:"
  "/home/sara/bram/saradist/data/models"
);
pfdInitConverter(".flt");
pfdInitConverter(".pfb");
pfdInitConverter(".obj");
pfdInitConverter(".iv");
pfdInitConverter(".dxf");
pfdInitConverter(".sv");
pfdInitConverter(".wrl");
pfConfig();

def make_v3interpolator() :
  interpol = pfVec3Interpolator();
  print interpol;
  interpol.SetInterpolationType(INTERPOLATE_SPLINE);
  interpol.SetCircular(1);
  p0 = pfVec3(); p0.set(-1,0,0);
  p1 = pfVec3(); p1.set(0,-1,0);
  p2 = pfVec3(); p2.set(1,0,0);
  p3 = pfVec3(); p3.set(0,1,0);

  interpol.AddEvent(0, p0);
  interpol.AddEvent(1, p1);
  interpol.AddEvent(2, p2);
  interpol.AddEvent(3, p3);
  interpol.AddEvent(4, p0);
  return interpol;

ipol1 = make_v3interpolator()
p = pfVec3()

ipol1.SetInterpolationType(INTERPOLATE_SPLINE)
ipol1.Evaluation(0.5, p)
print p

ipol1.SetInterpolationType(INTERPOLATE_LINEAR)
ipol1.Evaluation(0.5, p)
print p


def make_quatinterpolator() :
  interpol = pfQuatInterpolator();
  interpol.SetCircular(1);
  interpol.SetInterpolationType(INTERPOLATE_LINEAR);
#  interpol.SetInterpolationType(INTERPOLATE_SPLINE);
  q0 = pfQuat(); q0.makeRot( 0,0,0,1);
  q1 = pfQuat(); q1.makeRot(45,1,0,0);
  q2 = pfQuat(); q2.makeRot(45,0,1,0);
  q3 = pfQuat(); q3.makeRot(45,0,0,1);

  interpol.AddEvent(0, q0);
  interpol.AddEvent(1, q1);
  interpol.AddEvent(2, q0);
  interpol.AddEvent(3, q2);
  interpol.AddEvent(4, q0);
  interpol.AddEvent(5, q3);
  interpol.AddEvent(6, q0);
  return interpol;

ipol2 = make_quatinterpolator()
q = pfQuat()
ipol2.Evaluation(0.5, q)
print q



#
# Make a scene
#

pipe = pfGetPipe(0);
win  = pfPipeWindow(pipe);

win.setName("hello world");
win.setSize(400,400);
win.open();
pfuInitInput(win, PFUINPUT_X);

sun = pfLightSource();

dcs = pfDCS();
dcs.setName("esprit dcs");
scene = pfScene();
scene.addChild(dcs);
scene.addChild(sun);

nod = pfdLoadFile("esprit.flt");
dcs.addChild(nod)

chan = pfChannel(pipe);
chan.setScene(scene);

hpr = pfVec3();
hpr.set(0,0,0);
xyz = pfVec3();
xyz.set(0,-7,0);

chan.setView(xyz, hpr);
chan.setStatsMode(1,0);



#
# Event handler
#

def myeventhandler(node, event) :
  if (event.evtype == PYPER_EVENT_TICK) :
    q = ipol2.Evaluate(event.timestamp);
    m = pfMatrix();
    m.makeQuat(q);
    node.setMat(m);
  if (event.evtype == PYPER_EVENT_TOUCH) :
    print node, " was touched!";




handlers = RegisteredHandlers();
handlers.AddHandler(dcs, myeventhandler, PYPER_EVENT_TICK);

ev = PyperTouchEvent();
handlers.GenerateEvent(ev, dcs);



start = times()[4];
overallstart = start;

framecount = 1000;

for i in range(framecount):
  pfFrame();
  chan.drawStats();
  ev = PyperTickEvent();
  handlers.GenerateTickEvents(ev);
  handlers.Update();
  if ((i+1)%100 == 0) :
    now = times()[4];
    delta = now - start;
    fps = 100.0 / delta;
    print fps, "fps";
    start = now;
  del ev;

now=times()[4];
delta = now - overallstart;
fps = framecount / delta;

print "overall fps has been: ", fps;

pfExit();