使用MatGeoLib进行三维碰撞检测
3D collision detection with MatGeoLib?
我正在用C++为一些托管游戏服务器的专用服务器软件编写一个插件。
我四处寻找3D碰撞库,但很难找到任何有示例的库,但我决定使用MathGeoLib,因为它看起来很有前景,但它缺乏示例,我找不到任何示例。
所以我的问题是:我如何定义一个球体和一个立方体,一条线(点+方向),然后得到线遇到的第一次碰撞的位置XYZ?
文档只显示了类以及它们所具有的方法。但没有任何东西显示如何开始使用MathGeoLib。有没有在谷歌上找不到的教程?
我的项目背景信息:
我正在为圣安德烈斯多人游戏制作一个碰撞检测器,服务器没有关于游戏世界的任何信息,所以我决定提取碰撞文件和对象放置文件,并将它们转换为我的插件可用的格式。
对象有一个位置XYZ和四元数旋转XYZW,碰撞文件中有很多东西[项目成员正在为项目的.col文件编写解析器]。
项目目标是提供一种基于XY位置确定Z位置的机制,并提供一个光线跟踪器,该跟踪器"告诉"您在游戏世界中直线(StartPos、EndPos)的相交位置(击中XYZ)。
这就是为什么我需要知道如何使用MathGeoLib来实现这一点。我将把所有的对象碰撞加载到一个世界中,然后执行光线跟踪器函数。(6000x6000x1000区域中的对象数量约为30000)
查看
http://bulletphysics.org/wordpress/
Bullet是一个开源的物理引擎,附带了许多示例代码。特别是要使用动力学世界的rayTest()方法来投射光线并返回最近的碰撞点。总结一下,你需要;创建一个动力学世界,将球体和立方体数据加载到其中,然后调用rayTest(startPoint, endPoint, resultCallback);
假设您之前没有使用过bullet,请从"你好世界"示例代码开始,了解如何轻松创建动力学世界并向其中添加刚体。
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- 落砂模拟碰撞检测C++和SFML
- SFML 中的重力和碰撞检测
- 我的碰撞检测中的奇怪行为
- 如何使用qt缩放三维网格
- 三维数组中的C/C++DWORD到BYTE和BYTE到DWORD的转换
- 使用vtkImageReslice重新切片三维原始图像
- 特征:创建一个具有函数的三维阵列
- 如何为球形物体和三角形地形提供高效的碰撞检测和响应
- 扩充矩阵的行缩减-三维样条曲线计算
- 使用pcl transformcloud将三维点平移并旋转到原点
- 用C++从三维矢量中删除元素
- 如何访问CGAL三维三角测量中的面
- 如何在Openscenegraph中从二维鼠标点击的屏幕坐标点计算三维点(世界坐标)
- std::将三维数组复制到三维向量中
- 多维边界框碰撞检测
- 利用mfc子窗口进行二维碰撞检测
- 如何进行正确的二维网格到圆碰撞检测
- 使用MatGeoLib进行三维碰撞检测
- c++二维多边形碰撞检测