查看: 4445|回复: 29

请问粒子碰撞的问题

[复制链接]

该用户从未签到

发表于 2009-1-9 17:33:01 | 显示全部楼层 |阅读模式
粒子碰撞检测通过什么实现,还有三种漫游方式通过什么实现

以下问题已解决:
海军说,节点名称可以用osg获得,怎么获得?我用osgviewer T72Tank.flt,然后按了三下s,出现了些数据,里面只显示节点数量,没有名字,而且switch 一行显示为0,这个我很不解,因为书上说,tank有一个名为sw1的开关节点。不解中?


我觉得自带的文档不够详细,难以理解各个类的作用,有什么其他的教材吗?快速入门也看了,海军也有了,是不是有msdn一般详细的文档?
在编译海军教程---第七课:搜索并控制开关节点和 DOF(自由度)节点时,发生

error LNK2019: 无法解析的外部符号 "public: class osg::Node * __thiscall findNodeVisitor::getFirst(void)" (?getFirst@findNodeVisitor@@QAEPAVNode@osg@@XZ),该符号在函数 _main 中被引用
error LNK2019: 无法解析的外部符号 "public: __thiscall findNodeVisitor::findNodeVisitor(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0findNodeVisitor@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z),该符号在函数 _main 中被引用


海军教程上这么写着:
// 添加视图的用户控制工具,即轨迹球漫游器
viewer.setCameraManipulator(new osgGA::TrackballManipulator);
在运行时按下h 键将触发帮助菜单。按下ESC 可以退出程序。
但我运行的时候按h键,并没弹出菜单。。。也不明白添加了轨迹漫游器是个什么东西,好像没什么变化,请大哥解惑。。。
viewer.addEventHandler(new osgViewer::HelpHandler(arguments.getApplicationUsage()));

关于海军教程的新问题
http://www.osgchina.org/projects ... ngAndTransforms.php
这一章中,有个函数是
viewer.addCameraManipulator(new osgGA::TrackballManipulator);
error C2039: “addCameraManipulator”: 不是“osgViewer::Viewer”的成员
但我似乎在文档里没找到,在include文件夹里搜索也没找到,请问这个函数是自己定义的,还是在2.9.3.zip编译后就没了,只有特定版本的源代码才有?

有两个小问题,
1.设置环境变量OSG_FILE_PATH时,指定了路径,比如...\data,但是在data目录下的子文件夹里的文件,是不是系统就不搜索了,我把cow.osg放进子文件夹,就读不到了,是不是有什么方法可以让系统搜索到?
2.为什么编译好之后的include文件夹里的文件,都是没有文件类型扩展名的,这些似乎应该是头文件,为什么会这样?
1.osg 如何安装啊?下了一个2.6.1的zip,解压后不知怎么办了。
2.osg都用vs编译吗?是不是vs比vc好?那么vs哪个版本最好?
谢谢大家能提供信息

继续求教,我比较愚笨
我现在下了
OpenSceneGraph-2.9.3.zip,
3rdParty_Win32Binaries_vc90sp1,
cmake2.6.3
用的是vs2008,
1.用cmake配置的时候还是有很多库没找到,就是在第三方开发库中也没有,这个问题不影响后面的操作吧?
2.cmake配置完了之后就会自动生成工程文件,然后就用vs编译.....我发现编译要花费很多时间,似乎是编译了很多工程,但我不知道编译之后得到了什么,产生了什么结果?能不能不编译,或者少编译呢

新问题:
用vs2008编译时出现warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
而且很多我该怎么办呢?
出现了很多警告,或者某个项目不成功,修改好了之后,难道还要重新编译....再等3个小时???快疯了
还有请问编译好了之后,有哪些文件我可以删除了?释放些空间,我的硬盘不够了....gua


[ 本帖最后由 fire 于 2009-5-4 18:10 编辑 ]

该用户从未签到

发表于 2009-1-9 17:50:22 | 显示全部楼层
1. OSG的安装是使用CMake工具的,这样可以很方便地在各种操作系统平台和开发环境中编译OSG,CMake的下载地址:
www.cmake.org
教程区的精华帖有一篇专门讲解如何使用CMake生成OSG的,您可以参考一下:
http://bbs.osgchina.org/viewthread.php?tid=94

2. 这里您可以先了解一下开发的概念,VS是Visual Studio的简称,对于OSG的编译来说,它指的也就是您所说的VC。除了VC6因为对标准库的支持太差而不建议使用以外,2003,2005,2008这几个版本都没有任何问题,使用CMake生成对应的工程文件即可。

该用户从未签到

 楼主| 发表于 2009-1-9 19:15:19 | 显示全部楼层
谢谢啦,可以问问用vs专业版好还是团队版好啊

该用户从未签到

发表于 2009-1-9 19:54:04 | 显示全部楼层
作为个人来说,使用免费的Express版应该是最好的
我个人更喜欢使用非M$的东西,例如Windows下的mingw32或者Linux下的gcc。CMake的出现也使得我可以随意生成相关的工程文件。

该用户从未签到

发表于 2009-1-9 22:34:57 | 显示全部楼层
Express很鸡肋,,,,,你用了以后你会疯狂的~~~还是Team好~~~~~~~~~

该用户从未签到

 楼主| 发表于 2009-4-13 13:17:17 | 显示全部楼层
我想继续求教,我比较愚笨
我现在下了
OpenSceneGraph-2.9.3.zip,
3rdParty_Win32Binaries_vc90sp1,
cmake2.6.3
用的是vs2008,
1.用cmake配置的时候还是有很多库没找到,就是在第三方开发库中也没有,这个问题不影响后面的操作吧?
2.cmake配置完了之后就会自动生成工程文件,然后就用vs编译.....我发现编译要花费很多时间,似乎是编译了很多工程,但我不知道编译之后得到了什么,产生了什么结果?

该用户从未签到

发表于 2009-4-14 00:33:04 | 显示全部楼层
官方提供的也只是部分库,,没有完整的,,,不过,,也没有必要使用完整的库来编译,,,一般是用不了那么多的,,编译常用的就差不多了~~~~~~

编译之后你会得到LIB和DLL~~设置相关目录就可以开始你的OSG之旅了~~~

该用户从未签到

 楼主| 发表于 2009-4-14 08:26:30 | 显示全部楼层
多谢FlySky

该用户从未签到

 楼主| 发表于 2009-4-14 13:38:59 | 显示全部楼层

新问题

用vs2008编译时出现warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
而且很多我该怎么办呢?
出现了很多警告,或者某个项目不成功,修改好了之后,难道还要重新编译....再等3个小时???快疯了
还有请问编译好了之后,有哪些文件我可以删除了?释放些空间,我的硬盘不够了....

[ 本帖最后由 fire 于 2009-4-14 13:54 编辑 ]

该用户从未签到

发表于 2009-4-14 13:56:19 | 显示全部楼层
一个一个的修改,然后再编译,要有耐性,我也遇到过这种问题
祝你好运,好耐性!

该用户从未签到

发表于 2009-4-14 14:09:07 | 显示全部楼层
warning C4819不用理睬,这是Windows和Unix编码格式有区别导致的,不会造成编译和运行错误

该用户从未签到

 楼主| 发表于 2009-4-14 18:04:58 | 显示全部楼层
感谢各位抽空为我答复

该用户从未签到

 楼主| 发表于 2009-4-16 08:12:05 | 显示全部楼层

关于海军教程的新问题

http://www.osgchina.org/projects/osgcn/wikicn/Supportcn/Tutorials/FileLoadingAndTransforms.php
这一章中,有个函数是
viewer.addCameraManipulator(new osgGA::TrackballManipulator);
error C2039: “addCameraManipulator”: 不是“osgViewer::Viewer”的成员
但我似乎在文档里没找到,在include文件夹里搜索也没找到,请问这个函数是自己定义的,还是在2.9.3.zip编译后就没了,只有特定版本的源代码才有?

有两个小问题,
1.设置环境变量OSG_FILE_PATH时,指定了路径,比如...\data,但是在data目录下的子文件夹里的文件,是不是系统就不搜索了,我把cow.osg放进子文件夹,就读不到了,是不是有什么方法可以让系统搜索到?
2.为什么编译好之后的include文件夹里的文件,都是没有文件类型扩展名的,这些似乎应该是头文件,为什么会这样?

[ 本帖最后由 fire 于 2009-4-16 08:30 编辑 ]

该用户从未签到

发表于 2009-4-16 08:53:37 | 显示全部楼层
在OSG 2.x版本中已经改为setCameraManipulator了。

OSG_FILE_PATH的路径要指定绝对路径,子文件夹是可以找到的。

C++标准的头文件时没有扩展名的,类似M$那种带.h扩展名的严格来说不符合国际标准。

该用户从未签到

 楼主| 发表于 2009-4-17 09:27:36 | 显示全部楼层

关于轨迹球漫游器的问题

海军教程上这么写着:
// 添加视图的用户控制工具,即轨迹球漫游器
viewer.setCameraManipulator(new osgGA::TrackballManipulator);
在运行时按下h 键将触发帮助菜单。按下ESC 可以退出程序。
但我运行的时候按h键,并没弹出菜单。。。也不明白添加了轨迹漫游器是个什么东西,好像没什么变化,请大哥解惑。。。

该用户从未签到

发表于 2009-4-17 09:46:59 | 显示全部楼层
海军教程的写法可能不是完全准确,按H键弹出帮助菜单是通过
  1. viewer.addEventHandler(new osgViewer::HelpHandler(arguments.getApplicationUsage()));
复制代码
实现的

该用户从未签到

 楼主| 发表于 2009-4-17 20:54:07 | 显示全部楼层

海军的error LNK2019

在编译海军教程---第七课:搜索并控制开关节点和 DOF(自由度)节点时,发生

error LNK2019: 无法解析的外部符号 "public: class osg::Node * __thiscall findNodeVisitor::getFirst(void)" (?getFirst@findNodeVisitor@@QAEPAVNode@osg@@XZ),该符号在函数 _main 中被引用
error LNK2019: 无法解析的外部符号 "public: __thiscall findNodeVisitor::findNodeVisitor(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0findNodeVisitor@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z),该符号在函数 _main 中被引用

该用户从未签到

发表于 2009-4-17 22:59:34 | 显示全部楼层
检查一下有没有在工程中包含findNodeVisitor.h和findNodeVisitor.cpp两个文件

该用户从未签到

 楼主| 发表于 2009-4-18 08:52:06 | 显示全部楼层

回复 18楼 的帖子

我就一个cpp,控制台程序,在main之前定义了类findNodeVisitor,也不知道什么原因

该用户从未签到

发表于 2009-4-18 09:26:32 | 显示全部楼层
看看有没有为findNodeVisitor的构造函数和成员函数编写内容,原因很明显,就是编译器找不到构造函数和getFirst()函数的内容在哪里

该用户从未签到

 楼主| 发表于 2009-4-24 18:17:36 | 显示全部楼层

求教

我觉得自带的文档不够详细,难以理解各个类的作用,有什么其他的教材吗?快速入门也看了,海军也有了,是不是有msdn一般详细的文档?

该用户从未签到

发表于 2009-4-24 18:32:49 | 显示全部楼层
原帖由 fire 于 2009-4-24 18:17 发表
我觉得自带的文档不够详细,难以理解各个类的作用,有什么其他的教材吗?快速入门也看了,海军也有了,是不是有msdn一般详细的文档?


你可以看很多电子书《最长一帧》,,海军教程,,快速入门指南~~~~有兴趣的话,可以看《OSG编程入门指南》~~~~~

该用户从未签到

 楼主| 发表于 2009-4-25 08:25:09 | 显示全部楼层
海军说,节点名称可以用osg获得,怎么获得?我用osgviewer T72Tank.flt,然后按了三下s,出现了些数据,里面只显示节点数量,没有名字,而且switch 一行显示为0,这个我很不解,因为书上说,tank有一个名为sw1的开关节点。不解中?另外,那本编程入门,是邮购的吧,我在上海,方便购买吗?寄来的是纸质的还是光盘电子版的?编程入门和osg大全,有什么不同啊,各有什么侧重?

[ 本帖最后由 fire 于 2009-4-25 08:31 编辑 ]
  • TA的每日心情
    开心
    2019-11-11 10:36
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2009-4-25 20:10:35 | 显示全部楼层
    都不值什么钱,全买了吧

    该用户从未签到

    发表于 2009-4-26 01:50:19 | 显示全部楼层
    两本邮寄都非常方便~~~~~你说的那个好像是DOF节点吧????

    该用户从未签到

     楼主| 发表于 2009-4-26 08:41:11 | 显示全部楼层
    我搞不清楚,也许吧,有什么区别呀

    该用户从未签到

    发表于 2009-4-29 08:45:22 | 显示全部楼层
    我觉得fire同学不要急慢慢来,好好看OSG的例子,然后多练习,遇到难题就到论坛来讨论,就会慢慢熟悉OSG的结构了。

    该用户从未签到

     楼主| 发表于 2009-5-4 18:10:36 | 显示全部楼层
    粒子碰撞检测通过什么实现,还有三种漫游方式通过什么实现

    该用户从未签到

    发表于 2009-5-5 01:45:36 | 显示全部楼层
    粒子碰撞检测,,这是个比较棘手的问题,,OSG现成的粒子系统目前还不能进行这一步~~~你可以自己做一个关于球体的粒子系统来模拟~~~

    OSG五种漫游方式,,DriveManipulator,FlightManipulator,TerrainManipulator,TrackballManipulator,UFOManipulator,你自己看看源代码吧~~~~~

    该用户从未签到

    发表于 2009-5-5 09:37:00 | 显示全部楼层
    楼主可以另外开贴来询问新的问题,不必总是修改同一片帖子,这样大家难免会注意不到
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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

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

    联系我们

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