gpt4 book ai didi

c++ - 使用 MatGeoLib 进行 3D 碰撞检测?

转载 作者:行者123 更新时间:2023-11-28 07:28:22 25 4
gpt4 key购买 nike

我正在用 C++ 为一些托管游戏服务器的专用服务器软件编写插件。

我四处寻找 3D 碰撞库,但很难找到任何带有示例的库,但我决定使用 MathGeoLib,因为它看起来很有前途 - 但它缺少示例,我找不到任何示例。

所以我的问题是:我如何定义一个球体和一个立方体,一条线(点+方向),然后得到线遇到的第一次碰撞的位置 XYZ?

文档仅显示了类及其具有的方法。但没有显示如何开始使用 MathGeoLib。有没有在谷歌上找不到的教程?


我的项目背景信息:

我正在为 San Andreas Multiplayer 制作一个碰撞检测器,服务器没有关于游戏世界的任何信息,所以我决定提取碰撞文件和对象放置文件并将它们转换为我的插件可用的格式。

对象有一个位置 XYZ 和四元数旋转 XYZW 和碰撞文件,嗯,have lots of stuff in them [项目成员正在为项目的那些 .col 文件编写解析器]。

该项目的目标是提供一种机制来根据 XY 位置确定 Z 位置,并提供一个光线追踪器来告诉您线 (StartPos,EndPos) 在游戏世界中相交 (hit XYZ) 的位置。

这就是为什么我需要知道如何使用 MathGeoLib 完成此任务。我要将所有对象碰撞加载到一个世界中,然后执行光线追踪器功能。 (6000x6000x1000 区域内的对象数量约为 30,000 个)

最佳答案

查看

http://bulletphysics.org/wordpress/

Bullet 是一个开源物理引擎,并附带大量示例代码。特别是你想使用动态世界的 rayTest() 方法来转换光线并返回最近的碰撞点。总而言之,您需要;创建一个动态世界,将球体和立方体数据加载到其中,然后调用 rayTest(startPoint, endPoint, resultCallback);

假设您在开始“hello world”示例代码之前没有使用过 bullet 来了解如何轻松创建动态世界并向其中添加刚体。

关于c++ - 使用 MatGeoLib 进行 3D 碰撞检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18289867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com