osg 模型相对坐标的问题

  这两天着手学习OSG,因为看过一些VP的资料,所以看起来还好,不是很费力,但很多地方还是不得要领,今天想把这两天看的东西做个小的demo出来,结果撞了一下午的墙,主要还是在坐标系上出了问题。我的参考资料主要是《OpenSceneGraph 三维渲染引擎编程指南》 。好吧,下面是我的想法,我想在一个Terrain上添加一个cow,但是cow是浮在空中的,虽然我知道应该是地形的世界坐标出了问题,但是我想到了这样一个问题,在使用Vega prime 的时候,它的坐标是相对的,也即是说, 如果cow是Terrain的子节点,那么cow的坐标是相对与Terrain的,在OSG是否也是这样呢?进行了下验证,果然如我所料,虽然在这个过程中出了不少的问题,都是自己粗心,谨记谨记!上代码:

#include "stdafx.h"

#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
#include <osg/Node>
#include <osg/MatrixTransform>



void main()
{
	osgViewer::Viewer viewer;

	osg::ref_ptr<osg::Group> root = new osg::Group;

	osg::ref_ptr<osg::Node> cow = new osg::Node;

	osg::ref_ptr<osg::Node> terrain = new osg::Node;

	osg::ref_ptr<osg::MatrixTransform> cowPos = new osg::MatrixTransform;

	osg::ref_ptr<osg::MatrixTransform> terrainPos = new osg::MatrixTransform;

/*

	osg::Matrix t;
	t.makeTranslate(osg::Vec3(0,0,0));

	trans2->setMatrix(t);
	trans->setMatrix(t);
	terrain = osgDB::readNodeFile("LZ.OSG");
	trans2->addChild(terrain);*/
	osg::Matrix t1;
	t1.makeTranslate(osg::Vec3(0,0,200));
	cowPos->setMatrix(t1);

	osg::Matrix t2;
	t2.makeTranslate(osg::Vec3(0,0,0));
	cowPos->setMatrix(t1);
	
	terrain = osgDB::readNodeFile("LZ.OSG");
	cow = osgDB::readNodeFile("cow.osg");
	cowPos->addChild(cow);
	terrainPos->setMatrix(t2);
	terrainPos->addChild(terrain);

	terrainPos->addChild(cowPos);
	//root->addChild(trans);
	root->addChild(terrainPos);

	viewer.setSceneData(root.get());
	//viewer.addEventHandler(new UseEventHandler(trans));
	viewer.realize();
	viewer.run();
}

  补上场景树:

大概就是这么个意思,嘿嘿!

转载于:https://www.cnblogs.com/evilmusclepeople/archive/2012/07/02/2573652.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值