问题标签 [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 回答
1690 浏览

c++ - Physx 3 的几个新手问题

今天,我尝试玩转 Physx 和 Physx 可视化调试器,和往常一样,新手有问题和疑问。我会尽量用我糟糕的英语技能来描述我的问题。

1)我设法创建了一个 physx 场景。添加了一个动态actor并对其进行了操作。我在 Visual Debugger 中看到它的动作。这是一个标准的 PxSphereGeometry 球。但是,当我在场景中添加第二个球时,第二个球是不可见的,但我可以看到发生了碰撞。这是代码,如果有人能指出我有什么问题,我将不胜感激:

在这个场景中,aSphereActor 与 aTrActor 发生碰撞,但我在 Visual Debugger 中看不到 aTrActor,但碰撞完全可见。

2) Nvidia 的文档非常非常差。对于像我这样的新手来说,找到它的方式是一种折磨。所以我想知道如何导入 3d 模型并将其添加到场景中。我知道有一个适用于 3ds max、maya 等的 Physx 插件。假设我有一个用这个插件导出的模型,我如何将它导入我的应用程序并将其添加到场景中?

3) 在创建场景期间

,我应该提供什么值来获得真正的重力,我们在地球上拥有的重力

4)我可以为演员分配质量,但我不知道质量是哪个测量单位。例如,如果我设置 aSphereActor->setMass(1); aSphereActor 会是 1 公斤、克还是什么?

非常感谢大家。我感谢您的帮助。

0 投票
0 回答
175 浏览

c++ - 如何在 PhysX 中“重用”注册对象?

我的问题是我想在场景中重用对象。

主要是我想在另一个位置使用注册的actor(在PhysX中)和它的数据,但不想在GPU上分配新的内存。

我无法弄清楚我必须设置哪些链接或指针才能达到我的目标。

有没有人有关于这个问题的提示?是否有可能复制 PxActor?

0 投票
1 回答
628 浏览

object - 在运行时在 PhysX 中查找对象的位置

我正在尝试根据玩家(盒子)当时的位置在世界上产生一个球。为此,我需要知道盒子的位置,当我按下按钮时,球将出现在盒子顶面的中心。

因此,为此我还需要能够获得该位置的 Y 轴,并且在网上搜索后我找不到任何帮助。

有人知道如何帮助我吗?

谢谢你。

0 投票
1 回答
1271 浏览

cuda - 创建 cuda 上下文管理器失败

我正在使用 PhysiX 实现流体模拟器。不幸的是,cuda 上下文管理器有问题,我无法识别它是什么。我有一个如下所示的 init 方法:

当我尝试运行我的应用程序时,mCudaContextManger从未正确创建。“创建 cuda 上下文管理器失败”正在控制台上写入,并且:

“....\LowLevel\software\src\PxsContext.cpp (1122) : 警告:GPU 操作失败。没有可用的 px::CudaContextManager. ....\SimulationController\src\particles\ScParticleSystemSim.cpp (73):警告:GPU 粒子系统创建失败。回退到 CPU 实现。”

我有带有最新驱动程序的 GeForce560Ti(我朋友笔记本电脑上的 GeForce460 上也出现错误)。Physix 设置为在 NVidia 控制面板中使用 GPU。

有人知道我们做错了什么以及如何让 GPU 工作吗?提前致谢!

0 投票
1 回答
492 浏览

c++ - 带有 MinGW 的 PhysX3 - 链接错误

我正在尝试使用 MinGW编译 PhysX示例,但出现以下错误:

我的编译命令:

现在我的问题是:这些方法存储在哪些 .lib 文件中?

0 投票
1 回答
1918 浏览

java - Java PhysX 绑定?

是否有任何类型的 Java 的 PhysX 绑定?我环顾四周,看到了这个:http: //jphysx.com/,但我得到了一些奇怪的俄语错误。即使是具有 Java 支持的普通旧的强大物理引擎也可以工作。

0 投票
1 回答
799 浏览

directx - 将 Ragdoll 映射到模型(DirectX 和 .X 文件 + PhysX)

我正在尝试使用我的老师提供的引擎来创建布娃娃。我们使用 DirectX 10、.X 格式的网格文件(使用 assimp 和教师设计的封闭解析器)和 Nvidia PhysX。

我有工作动画(网格变形 oke),现在我必须在 PhysX 中创建一个布娃娃图(参考 Nvidia 课程)。但是我在将我的 PhysX 布娃娃绑定到我的网格时遇到问题,所以当我处于“种子模式”时,我的布娃娃会跟随动画。

我在定位 PhysX 演员(偏移 + 方向)和动画本身(x 轴旋转工作正常,但 z 和 y 轴不工作)方面遇到问题。也许坐标系有问题,但我对这个问题视而不见。我希望有人能发现我的代码中的一些错误或指出我正确的方向。

以下是通常需要将 PhysX actor 定位到 Mesh Bone 的 PhysX 骨骼代码:http: //pastebin.com/QT8sxuUp

作为通知,我直接从 .x 文件(使用教师解析器课程)获得的偏移量和转换矩阵,我还使用 LH 坐标系导出了网格。

这是我屏幕上的结果: 图 1 图 2

0 投票
3 回答
9232 浏览

gpu - 与 CPU 上的物理引擎相比,GPU 上的 PhysX 有多快?

我有一个使用Bullet物理引擎编写的应用程序。我在具有 8 个内核的 Intel i7 2600K CPU 上运行它。应用程序必须处理数百万块物理工作,每一个都可以独立完成。它目前运行8 个进程,每个进程独立完成其总配额。总之,这项工作有很多简单的并行性

假设我可以获得最好的 NVIDIA 消费级显卡(比如 Titan),那么通过从 CPU 上的 Bullet 切换到GPU 上的Physx ,我可以看到物理引擎性能的大致改进是什么?也就是说,如果为 Physx 重写,这个应用程序的运行速度大约会快多少?

我找到了几篇比较 Bullet 和 Physx 之间结果质量的论文,但找不到关于性能比较的任何内容。

0 投票
2 回答
4451 浏览

c++ - 如何正确链接和包含库?

这是我第一次在 C++ (Visual Studio 2010) 中准备一个非常复杂的应用程序,并且我遇到了严重的链接问题,这让我非常头疼(也许是因为我从来没有得到它的全部内容)。

我正在使用以下方法实现流体流动模拟器: - NVidia PhysX (SDK 3.2.3) - glew (1.9) - freeglut (2.8.1) - gltools 库(OpenGL Superbible 5th 的插件)

我不知道如何正确设置发布/调试和 MD/MDd/MT/MTd 选项以使一切正常。

  • 我可以使用 MD/MDd/MT/MTd 以及 Relese/Release-Static/Debug/Debug-Static 解决方案配置来编译 freeglut
  • 我可以用 MD/MDd/MT/MTd 和 Relese/Debug 编译 gltools
  • PhysX 是预编译的 lib 和 dll 文件(我不知道编译过程中使用了哪些选项)
  • 同样是关于 glew

我尝试了很多配置,但总是遇到编译错误,例如

或者

我读到这都是关于以正确的方式设置提到的配置,但我实际上做不到。

什么应该是正确的配置(为什么?)以及我应该将哪些库与 lib 文件链接,哪些与 dll 链接?我是 C++ 的新手,所以请尽量解释清楚。

那是我的应用程序的“包含部分”(它非常相似,并且在我不小心破坏它之前就起作用了):

如果一切都设置好,我不确定是否需要最后一条车道(在谷歌的某个地方找到它并且它有效)。

如果您需要更多信息或更详细的错误日志以及某些配置,请告诉我,我会提供。

提前致谢!

编辑:

调试 /MDd

发布/MDd

发布/MTd

没有 d 的一切(/MD /MT):

它只是 lib 文件的一种配置。我可以以其他方式编译 gltools 和 freeglut,或者以其他方式设置 #define GLEW_STATIC 或 #define FREEGLUT_STATIC ......对于新手来说选择太多了。:)

多一个:

所有这些 PhysX pragma 都被评论了。

0 投票
1 回答
755 浏览

c++ - 使用 lambda 对 std::function 赋值的访问冲突

大家好,又来了。继续我之前的问题中的代码:这是一个糟糕的黑客攻击吗?memcpy 与虚拟类 我纠正了这一点,按照建议使用克隆方法,但我遇到了一个错误,在我尝试 memcpy 之前也发生了错误(阅读上面的问题)。

我要做的是创建一个捕获当前脚本并执行它的 lambda,然后将该 lambda 传递并存储在成员 InternalCallback 中的对象 (Trigger*) 中。
我在 lambda 分配中遇到访问冲突错误:http: //imgur.com/OKLMJpa 该错误仅在此代码的第 4 次迭代中发生:

这是触发器的代码

通过迭代,我的意思是这是 for 循环的一部分。我的系统是 Win 7 64 位,Intel i3,NVIDIA GTX 480,编译器 Visual Studio 2012 Express,使用 C++11 工具集。我真的没主意了。我测试了堆损坏,看起来不错,我更改了 lambda 中的捕获,没有更改任何内容,我跳过了第 4 个对象并且它可以工作。任何帮助将非常感激。

编辑:根据需要,这里是调用堆栈:http: //imgur.com/P7P3t4k