查看: 1655|回复: 12

求大规模场景图形

[复制链接]

该用户从未签到

发表于 2012-5-7 09:48:38 | 显示全部楼层 |阅读模式
各位专家们,我真诚的求求你们了,可不可以奉献一份.ive或.osg的大规模场景图形,我是初学者,真的需要一个这样的图形......     593785702@qq.com

该用户从未签到

发表于 2012-5-7 12:12:22 | 显示全部楼层
我之前在osg-users发过一个用于测试阴影的CityEngine场景,如果您想用就拿去用吧:
http://www.box.com/s/s1bnf4eqenrc30opxzj4
http://www.box.com/s/ubu4186593fjc8tslntq
两个包,原始数据我这里已经没有了,不必再求

该用户从未签到

 楼主| 发表于 2012-5-7 16:46:36 | 显示全部楼层
怎么打不开这两个网页

该用户从未签到

 楼主| 发表于 2012-5-7 17:09:26 | 显示全部楼层
非常感谢您,可是这两个网页都打不开,真的没有其他资源了吗......

该用户从未签到

发表于 2012-5-7 21:46:46 | 显示全部楼层

该用户从未签到

 楼主| 发表于 2012-5-8 09:56:53 | 显示全部楼层
谢谢您,这个能打开,也可以下载,但是不能用...

该用户从未签到

 楼主| 发表于 2012-5-8 10:08:40 | 显示全部楼层
我只需要一个在VS2010的单文档中能打开的osg或ive格式的图形就行,像lz.osg那样的,只是想要场景大一些画面壮观一些,非常各位专家的支持~

该用户从未签到

发表于 2012-5-8 10:58:30 | 显示全部楼层
孤暗冰魂 发表于 2012-5-8 09:56
谢谢您,这个能打开,也可以下载,但是不能用...

为啥不能用呢? 我VS2008 表示可以使用。。

只是,即使摄像机拉近了,画面也不清晰。。很模糊。。不知道我是不是哪里弄错了。。

该用户从未签到

 楼主| 发表于 2012-5-8 17:43:34 | 显示全部楼层
你是不是用osgViewer打开的,你下载的是哪个文件~

该用户从未签到

发表于 2012-5-9 09:00:38 | 显示全部楼层
孤暗冰魂 发表于 2012-5-8 17:43
你是不是用osgViewer打开的,你下载的是哪个文件~

都可以打开了,程序中可以打开(可能需要注意中文路径的问题),osgViewer也可以打开。。。


该用户从未签到

 楼主| 发表于 2012-5-10 10:52:48 | 显示全部楼层
l917685120 发表于 2012-5-9 09:00
都可以打开了,程序中可以打开(可能需要注意中文路径的问题),osgViewer也可以打开。。。

你用的是master.ive那个文件吗,还是我下载错了......
可以再问您一个问题吗:就是在单文档中怎么调用漫游器,有两个类一个是漫游器的类,一个是打开场景图形的类,怎样把两个类中的变量联系起来,把漫游器加载到场景中。我还不是很懂,让您见笑了,谢谢啦~

该用户从未签到

发表于 2012-5-11 00:17:10 | 显示全部楼层
1>.确实是master.ive 那个文件。。不过,我这里也有些问题,我看不到场景里面那些建筑物。。只能看到大概轮廓。。我也不知道是啥情况

2>.OSG貌似只提供了一些比较基本的场景查看器,至于您说的漫游器之类的,这种一般都是视具体情况而定,都需要你自己写代码来控制摄像机的动作。。
然后您在给场景设置您自己编写的摄像机即可:viewer.setCameraManipulator(new CMyCamera);
如果,您不知道如何写一个摄像机操作类的话,请去看《OSG程序设计》,里面有教如何写一个自己的摄像机类。。


3>.一般给场景或者是某节点 添加 事件处理类的时候,
都会重载bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa)
{
//然后在这个方法中,您可以进行下面的操作
       osgViewer::Viewer* viewer = dynamic_cast<osgViewer::Viewer*>(&aa);
        m_camera =  dynamic_cast<CMyCamera*>(viewer->getCameraManipulator());//得到漫游器
//或者是像下面这样获得漫游器,就看你具体怎么写的啦,大概就这意思,也有可能有错
//osgGA::CameraManipulator* camera = dynamic_cast<osgGA::CameraManipulator*>(viewer->getCameraManipulator());

     //一般无论是你自己写的漫游器类,还是OSG提供的漫游器类都会提供一些公有的方法来控制摄像机的参数,这样的话,你在这里对m_camera进行操作,就把两个类联系起来了。。。
}



其他补充:

当然,如果您场景中有很多节点的数据都需要进行实时的交互的话,
您可以给这些节点设置一个名字:node->setName("name1");
然后再给整个场景添加一个事件处理器:viewer.addEventHandler(new CMyViewerhandler);

然后您在CMyViewerhandler这个类中可以通过查找节点的名字,得到所有需要交互的节点的信息,
然后在对这些节点进行处理。。。
不知道你对这个有兴趣没,如果有的话,再call我,我在仔细说吧,我感觉不太容易说的清楚。。。

其实,最主要的是,我也是一个新手,我上面讲的很有可能有错误的地方,还望见谅。

  

该用户从未签到

 楼主| 发表于 2012-5-11 09:45:03 | 显示全部楼层
出现“没有为osg80-osgGA.dll加载符号”之类的错误跟我编译的版本有关吗,比如我编译的是Rlease版本,是不是应该再编译一下Debug版本...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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