问题标签 [physx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
34 浏览

physx - 需要获得对象/身体的位置

我正在使用 c++ 在 Visual Studio 代码中使用 physx(Windows 中的最新版本)。目前正在研究 physx sdk 4.1 - 示例。我想获取对象/主体的输出并将其用于另一个程序。

我已经尝试过它的文档,但没有帮助。

我可以在使用 getlinearvelocity() 等函数进行调试时获得输出。虽然我想得到它并用于其他程序。

0 投票
0 回答
364 浏览

unity3d - Unity 如何确定光线投射命中的法线?

我想了解在 Unity 中获得正常光线投射命中的算法方法。我了解针对简单对撞机的光线投射背后的数学/理论,但是一旦完成,引擎实际上如何遍历网格并获得被击中的特定面?

假设这里有一些底层空间数据结构(八叉树/kd 树)在工作,什么组件(可能是碰撞器或网格过滤器?)存储它,我如何直接访问这个结构?

最后, raycasthit.normal 是懒惰地评估还是在每次 raycast 命中时自动计算?显然,这很重要,因为如果我只担心是否存在命中,我不希望一些复杂的算法不必要地确定复杂物体上投射的特定法线......

我似乎找不到关于此的长而详细的文档。

0 投票
1 回答
948 浏览

c++ - Physx - 与来函数的链接问题(函数中引用的__imp_PxCreateBasePhysics ...)

我正在尝试在我的游戏引擎中实现 PhysX,但在链接 PhysX 库时遇到了一些奇怪的问题。无论我做什么,它总是失败,但来自 Nvidia 的片段就像​​一个魅力。我将尝试描述我所做的,我希望有人能找到我所缺少的。

首先,我从Github下载了 PhysX 4.1 。然后我将buildtools设置更改为:

然后我使用bat脚本为静态链接运行时静态库生成Visual Studio 2017项目。然后我在调试发布版本中编译了项目。SnippestHelloWorld没有任何问题。到目前为止,一切都很好。所以我在Visual Studio 2017中创建了新项目并选择了x64处理器架构(如在 PhysX xml 配置中)。然后我以与SnippestHelloWorld中相同的方式包含头文件。这是一棵树:

我认为这些都是必需的头文件。然后我为链接添加了这个 lib 文件列表(在我看来,甚至其中一些是不必要的):

然后我创建了一个非常简单的 C++ 代码来测试它是否有效:

而且......它只是不起作用。当我尝试编译我的简单项目时,我总是从链接器收到此错误:

在此处输入图像描述

听起来可能很有趣,但我几乎尝试了所有方法。我知道哪一行会导致这个错误,因为如果我删除调用PxCreatePhysics它编译没有任何问题。只有这一行有一些奇怪的链接问题,我不明白。

我应该如何解决这个问题?我什至不知道在哪里寻找答案。我已经为正确的 CPU 架构和正确的运行时库编译了已编译的 PhysX 库,使用相同的 sompiler 和相同的机器,为什么 Nvidia 的示例有效而我的代码无效?

0 投票
1 回答
151 浏览

c++ - 有什么方法可以让 PhysX 4.1 CCT 使用自定义重力滑下斜坡?

默认情况下,PhysX 似乎将你脚上的“摩擦力”设置为无穷大,因此move当你站在倾斜的表面上时,用向下的力(如重力)呼唤不会导致你滑倒。

这与我想要的完全相反。我知道PxControllerNonWalkableMode::ePREVENT_CLIMBING_AND_FORCE_SLIDING,但这似乎没有使用任何重力或加速度,而且我没有使用内置slopeLimit值。还有setPreventVerticalSlidingAgainstCeiling(),所以地板上不存在类似的东西似乎有点奇怪。

那么,是否有任何内置方法可以禁用这种人为摩擦,并允许垂直滑动,就像 CCT 可以沿着墙壁和天花板滑动一样?如果没有,我怎么能生成一个遵循表面法线的新的向下运动矢量?我对与数学相关的任何事情都非常糟糕,因此(伪)代码示例将不胜感激。

0 投票
1 回答
205 浏览

c++ - 具有动态和静态刚体的 PhysX 碰撞过滤器

我正在开发一个视频游戏引擎,我正在实现 PhysX 3.4,特别是我目前正在研究 Colliders Filtering 并且我一直在使用一些对撞机和刚体测试 FilterShader() 函数(来自这个这个Nvidia 文档)。所以,如果两个对撞机都有一个动态刚体,函数给我两个的​​ pxFilterData,但如果其中一个是静态的,它只给我 1 个 pxFilterData,在下一次迭代中另一个。

当两者都是动态的时,是否可以同时接收它们?

0 投票
1 回答
32 浏览

game-physics - 如何在动态对象上使用三角形网格?

我不能在动态物体上使用三角形网格吗?我想要一个形状由三角形网格描述的物体,能够以动态的方式工作,而不是作为运动学或静态的,以便它远离撞击并服从重力。

我应该怎么做才能在动态对象上使用三角形网格?

0 投票
1 回答
55 浏览

c++ - 如何将 PhysX 库与 Xcode 链接

我是 C++ 新手。我不知道如何将 PhysX 源链接到我自己的代码。我不断收到“Px.h”或其他一些文件丢失。这些文件存在于它们相应的文件夹中,但 Xcode 找不到它们。我该怎么办?非常感谢您的帮助,我非常感激。

0 投票
1 回答
641 浏览

c++ - 你如何在 Nvidia PhysX 中编译独立的代码片段?

我开始通过试验程序附带的基本 Hello World 片段来测试 PhysX。

我的安装是在 Ubuntu 20.04 上。

据我了解源代码

位于

我试图编译它

但我有一个错误

显然,我应该在一个环境中编码。PhysX 的几乎所有指令都适用于使用 Visual Studio IDE 的 Windows。

我应该在哪里定义NDEBUG_DEBUG何时我的目标只是复制SnippetHelloWorld_64

换句话说,我如何在 PhysX 中试验 HelloWorld(通过 Linux 命令行)?

0 投票
1 回答
343 浏览

c# - Unity Android App Crash with physx::Gu::PersistentContactManifold::reduceBatchContacts

我正在使用 Unity 2019.3.15f1 构建投币游戏,主要特点是使用物理引擎模拟投币游戏桌。

游戏启动后,运行30秒到2分钟前会崩溃。

我有一个这样的崩溃日志:

在为 libunity 相关消息运行 addr2line 后,我得到了这个:

似乎告诉我问题出在 PhysX 引擎中。然后我找到了一个相关的帖子: https ://forum.unity.com/threads/debugging-unhandled-null-exception-in-editor-game-view.503475/

但是在物理设置中禁用 PCM(Persistant Contact Manifold)后,崩溃仍然存在。

有人对这个问题有任何线索吗?任何想法或猜测将不胜感激。

提前致谢。

我已经尝试过的:

  1. 减少刚体。
  2. 在时间设置中增加固定时间步长。
  3. 用盒子碰撞器替换网格碰撞器。
  4. 关闭/打开持久接触歧管。(通过选择旧版联系人生成)
  5. 升级到 Unity 2019.4.4f1
0 投票
0 回答
100 浏览

c++ - physx 多线程复制转换数据

我有一个场景,其中包含大量由 physx 移动的类似对象,我想使用 opengl 实例化来绘制所有这些。所以,我需要用每个对象的变换数据形成一个数组,并将其传递给 opengl 着色器。而且,目前,填充数组是我的应用程序的瓶颈,因为 physx 模拟使用 16 个线程,但创建数组只使用一个线程。

因此,我创建了 data_transfer_task 类,其中包含两个索引,启动和停止,并将此索引之间的 physx 对象的转换数据移动到数组。

我创建了另一个类 start_transfer_task,它根据线程数创建和调度任务。

我在调用模拟之前创建 start_transfer_task 实例,将 start_transfer_task 传递给模拟,并且我希望 start_transfer_task 应该在所有 physx 任务完成自己的工作之后运行,所以写入和读取 api 调用不要重叠,并且调用 fetchResults(block=true) 仅在哪里继续执行我的所有任务都完成了复制转换数据。

但是我收到了很多关于读写 api 调用重叠的警告。

而且,有时在启动我的应用程序后,我会收到一条奇怪的断言消息。

那么,我做错了什么?