本文整理汇总了C++中osg::TransformRecPtr::editSFMatrix方法的典型用法代码示例。如果您正苦于以下问题:C++ TransformRecPtr::editSFMatrix方法的具体用法?C++ TransformRecPtr::editSFMatrix怎么用?C++ TransformRecPtr::editSFMatrix使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类osg::TransformRecPtr
的用法示例。
在下文中一共展示了TransformRecPtr::editSFMatrix方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: display
void display(void)
{
#if 0
Matrix m1, m2, m3;
Quaternion q1;
tball.getRotation().getValue(m3);
q1.setValue(m3);
m1.setRotate(q1);
m2.setTranslate( tball.getPosition() );
m1.mult( m2 );
if(move_obj == true)
{
scene_trans->editSFMatrix()->setValue( m1 );
}
else
{
cam_trans->editSFMatrix()->setValue( m1 );
}
#endif
cam_trans->editSFMatrix()->setValue(tball.getFullTrackballMatrix());
#if 0
fprintf(stderr, "%f %f %f\n",
cam_trans->getMatrix()[3][0],
cam_trans->getMatrix()[3][1],
cam_trans->getMatrix()[3][2]);
#endif
OSG::Real32 t = glutGet(GLUT_ELAPSED_TIME);
for(OSG::UInt32 i = 0; i < 6; ++i)
{
if(pAnimTrs[i] != NULL)
{
pAnimTrs[i]->editRotation().setValueAsAxisDeg(
0.f, 1.f, 0.f,
t / 50.f);
}
}
OSG::commitChanges();
// fprintf(stderr, "Frame start\n");
// fprintf(stderr, "============================================\n");
win->render(rentravact);
}
示例2: display
void display(void)
{
OSG::Matrix m1;
m1 = tball.getFullTrackballMatrix();
cam_trans->editSFMatrix()->setValue(m1);
OSG::commitChanges();
win->render(rentravact);
}
示例3: redraw
void redraw ( void )
{
OSG::Matrix m1, m2, m3;
OSG::Quaternion q1;
tball.getRotation().getValue(m3);
q1.setValue(m3);
m1.setRotate(q1);
m2.setTranslate( tball.getPosition() );
m1.mult( m2 );
cam_trans->editSFMatrix()->setValue( m1 );
OSG::Thread::getCurrentChangeList()->commitChanges();
win->render(ract);
}
示例4: display
void display(void)
{
OSG::Matrix m1, m2, m3;
OSG::Quaternion q1;
tball.getRotation().getValue(m3);
q1.setValue(m3);
m1.setRotate(q1);
// std::cout << "TBROT" << std::endl << tball.getRotation() << endl;
// std::cout << "M3" << std::endl << m3 << std::endl;
// std::cout << "Q1" << std::endl << q1 << std::endl;
// std::cout << "M1" << std::endl << m1 << std::endl;
// m1.setRotate( tball.getRotation() );
m2.setTranslate( tball.getPosition() );
//std::cout << "Pos: " << tball.getPosition() << ", Rot: " << tball.getRotation() << std::endl;
// std::cout << tball.getRotation() << std::endl;
m1.mult( m2 );
// std::cerr << m1 << std::endl;
m1 = tball.getFullTrackballMatrix();
if(move_obj == true)
{
scene_trans->editSFMatrix()->setValue( m1 );
}
else
{
cam_trans->editSFMatrix()->setValue( m1 );
}
OSG::commitChangesAndClear();
win->render(rentravact);
if(dumpImg == true)
{
vpFBO->setTravMask(oldTravMask);
pTexBuffer ->setReadBack (false);
vpFBO->getFrameBufferObject()->setPostProcessOnDeactivate(false);
pImg->write("/tmp/test.png");
dumpImg = false;
}
if(dumpImg_RB == true)
{
pRenBuffer->getImage()->write("/tmp/test1.png");
dumpImg_RB = false;
win->subPortByObj(vpFBO_RB);
vpFBO_RB = NULL;
pRenBuffer = NULL;
win->runFrameExit();
// OSG::FieldContainerFactory::the()->dump();
}
// win->render(renact);
// std::cerr << "------------- AR START --------------" << std::endl;
// Thread::getCurrentChangeList()->dump();
}
示例5: display
void display(void)
{
OSG::Time t;
// std::cout << glutGet(GLUT_WINDOW_WIDTH) << std::endl;
t=-OSG::getSystemTime();
if(animate && animPos.size()>1)
{
if(animLength>0)
animTime = frameCount * (animPos.size())/float(animLength);
OSG::UInt32 i=OSG::UInt32(animTime);
OSG::Real32 a=animTime-i;
OSG::Vec3f v;
OSG::Quaternion q;
if(i+1 < animPos.size())
{
v = animPos[i] + (animPos[i+1] - animPos[i]) * a;
q = OSG::Quaternion::slerp(animOri[i],animOri[i+1],a);
}
else
{
v = animPos[i];
q = animOri[i];
}
cam_trans->editMatrix().setTranslate(v[0],v[1],v[2]);
cam_trans->editMatrix().setRotate(q);
}
else
{
cam_trans->editSFMatrix()->setValue( tball.getFullTrackballMatrix() );
}
try
{
OSG::Thread::getCurrentChangeList()->commitChanges();
#if 0
clusterWindow->activate();
clusterWindow->frameInit();
clusterWindow->renderAllViewports(ract);
#endif
clusterWindow->renderNoFinish(ract);
#if 0
if(showInfo)
{
displayInfo(10,90);
/*
char text[1024];
sprintf(text,"FPS: %12.1f",1.0/frame_time);
showText(10,70,text);
sprintf(text,"Positions: %12d",sum_positions);
showText(10,50,text);
sprintf(text,"Triangles: %12d",sum_triangles);
showText(10,30,text);
sprintf(text,"Geometries: %12d",sum_geometries);
showText(10,10,text);
*/
}
#endif
#if 0
clusterWindow->swap();
clusterWindow->frameExit();
#endif
clusterWindow->frameFinish();
// clear changelist from prototypes
OSG::Thread::getCurrentChangeList()->clear();
}
catch(OSG_STDEXCEPTION_NAMESPACE::exception &e)
{
std::cout << e.what() << std::endl;
cleanup();
exit(0);
}
t+=OSG::getSystemTime();
frame_time = t;
if(animate && animPos.size()>1)
{
OSG::Vec3f v;
printf("Frame %8.3f %8.5f %8.3f\n",
animTime,
t,1/t);
frameCount++;
if(frameCount == animLength)
{
animTime = 0;
frameCount = 0;
if(animLoops > 0)
{
animLoops--;
if(!animLoops)
{
cleanup();
//.........这里部分代码省略.........