查看: 1281|回复: 1

固定相机视点的疑问

[复制链接]

该用户从未签到

发表于 2010-8-6 13:35:51 | 显示全部楼层 |阅读模式
#include <osg/NodeCallback>
#include <osg/PositionAttitudeTransform>
#include <osgViewer/Viewer>
#include <osg/MatrixTransform>
#include <osgDB/ReadFile>
#include <osgGA/TrackballManipulator>
int main()
{
osg::Node* groundNode = NULL;
osg::Node* tankNode = NULL;
osg::Group* root = new osg::Group();
osgViewer::Viewer viewer;
osg:ositionAttitudeTransform* tankXform ;
osg::Camera* manuallyPlaceCamera=new osg::Camera;
groundNode = osgDB::readNodeFile("\\Models\\JoeDirt\\JoeDirt.flt");
tankNode = osgDB::readNodeFile("\\Models\\T72-Tank\\T72-tank_des.flt");
// 创建绿色的天空布景。
osg::ClearNode* backdrop = new osg::ClearNode;
backdrop->setClearColor(osg::Vec4(0.0f,0.8f,0.0f,1.0f));
root->addChild(backdrop);
//添加地形模型
root->addChild(groundNode);
tankXform = new osg::PositionAttitudeTransform();
root->addChild(tankXform);
tankXform->addChild(tankNode);
tankXform->setPosition( osg::Vec3(10,10,8));
tankXform->setAttitude( osg:uat(osg:egreesToRadians(-45.0), osg::Vec3(0,0,1) ) );
osgGA::TrackballManipulator * Tman = new osgGA::TrackballManipulator();
viewer.setCameraManipulator(Tman);

osg::Matrixd myCameraMatrix;
osg::Matrixd cameraRotation;
osg::Matrixd cameraTrans;
cameraRotation.makeRotate(
osg::DegreesToRadians(-20.0), osg::Vec3(0,1,0), // 滚转角(Y轴)
osg::DegreesToRadians(-15.0), osg::Vec3(1,0,0) , // 俯仰角(X轴)
osg::DegreesToRadians( 10.0), osg::Vec3(0,0,1) ); // 航向角(Z轴)
// 相机位于坦克之后60个单元,之上7个单元。
cameraTrans.makeTranslate( 10,-50,15 );
myCameraMatrix = cameraRotation * cameraTrans;
viewer.setSceneData( root );
viewer.realize();
viewer.run();
while( !viewer.done() )
{
if (manuallyPlaceCamera)
{
osg::Matrixd i = myCameraMatrix.inverse(myCameraMatrix);
Tman->setByInverseMatrix( osg::Matrix(i.ptr() ) * osg::Matrix::rotate( -3.1415926/2.0, 1, 0, 0 ) );
}
viewer.frame();
}
}
帮忙看看,我想实现相机位于坦克之后60个单元,之上7个单元,但没什么效果,不知是哪里出错了

该用户从未签到

发表于 2010-8-7 02:11:22 | 显示全部楼层
viewer.run();
代码问题出在这句话上,,您的设置都会被覆盖,,注释下这句,,您的具体设置我没有仔细看,您可以调整
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表