问题标签 [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 投票
0 回答
241 浏览

unity3d - 盒子对撞机碰撞如何在数学上工作?

我想知道 Box Collider 在 Unity 中的工作原理。我已经阅读了所有的 Unity 文档和 PhysX 文档,但没有任何详细说明它们的工作原理(可能是因为它是机密 IP)。

盒子碰撞器如何知道它何时与另一个盒子碰撞器相交/重叠?

实际测量什么指标来了解碰撞何时发生?它是否查看盒子碰撞器中是否有一个点或顶点在另一个碰撞器的体积内?如果是这样,它如何知道一个顶点在另一个对撞机的体积内?

箱形对撞机是由什么制成的?是很多小物件放在一起还是一个大物件?

​</p>

提前感谢您的帮助

0 投票
1 回答
551 浏览

game-engine - 适用于 NVidia PhysX 3.4 的本机 C API

我正在浏览最近开源的 NVidia PhysX 3.4,我发现的只是 C++ 类 - 是仅 C 的标头版本还是包装 API?

0 投票
1 回答
448 浏览

c++ - 如何通过本地网络将 PvD(Physx Visual Debugger) 连接到另一台 PC

首先我想问这可能吗?(我觉得是因为它是通过 TCP/IP 网络套接字连接的)

我正在尝试设置我的 PvD,以便我可以看到正在另一台计算机上运行的 physx 场景的帧。

我尝试使用我自己的本地 IP 地址和相同的端口:5425(这是 physx 文档建议您使用的端口)。

当您为 PvD 创建一个套接字时,它需要一个 IP 地址、端口和一个 timoutInMs。

PxPvdTransport* transport = PxDefaultPvdSocketTransportCreate("LOCAL_IP", 5425, 10); (我已将超时更改为 10000(10 秒),但仍然无法连接)

难道是我的超时时间太小,我使用了错误的 IP 地址或错误的端口?

在这里,您还有 PvD 的文档https://docs.nvidia.com/gameworks/content/gameworkslibrary/physx/guide/3.3.4/Manual/VisualDebugger.html

我已经阅读了所有内容,但他们并没有真正具体说明是否可以做我想做的事情。或者如果我错过了该文档中的一些实用信息,我只是不擅长阅读

我不确定我是否涵盖了人们需要了解的有关我的问题的所有信息,但如果您需要更多信息,请告诉我,我很乐意提供更多信息。

0 投票
2 回答
3343 浏览

unity3d - 铰链关节的无损运动 - Unity

我在 Unity 中创建了一个简单的钟摆 - 带有刚体和铰链关节组件的游戏对象。我已将拖动角度拖动设置为 0。起始位置为 90 度,我希望钟摆从 90 度到 -90 度来回摆动。然而,情况并非如此——幅度衰减非常快,但对于小角度,钟摆看起来永远不会停止。

我的问题是:我应该如何配置铰链关节以实现对物理和抵抗运动的力​​的完全控制?我的目标是尽可能精确地进行物理模拟,即使是以性能为代价。

我已经尝试减少固定步骤的时间间隔并增加求解器迭代 - 这些都没有奏效。

为什么我需要它?我正计划为推车上的多个倒立摆设计一个控制系统。我有一个在 Matlab 中实现的摆锤的数学模型,我想在 Unity 中使用一个简单的模型来验证它(因为在这种情况下,我调整了所有参数、初始条件等,并且物理引擎正在为我计算一切)。如果事实证明支持 Unity 的物理引擎不够可靠,您还会推荐什么其他软件?

0 投票
1 回答
924 浏览

c++ - Nvidia PhysX - 如何制作 TriangleMesh?

所以我想把一个网格煮成一个 PxTriangleMesh。这是我的代码(实际上是从文档中复制粘贴的):

断言不会失败,但

返回状态“假”。我猜我的索引有问题,但是文档几乎没有提供关于他们希望我在那里填写什么的信息。我正在使用这个小 OBJ-loader:https ://github.com/Bly7/OBJ-Loader 。加载一个简单的立方体会返回 36 个顶点和 36 个索引,就像它应该做的那样。

加载 obj 时,我只是这样做:

我可以确认这对于顶点、uvs 和法线非常有效。'indices' 的定义如下:

  1. PhysX 是否希望我将其他数据填充到 triangles.data 中?
  2. 如果不是,为什么 cookTriangleMesh() 没有返回 true?
0 投票
1 回答
707 浏览

python - 无法从欧拉角创建 quat,偏航角超过 90 glm

这里有一些背景:我正在开发一个游戏引擎,我最近添加了一个物理引擎(在本例中为 physx)。问题是我的变换类使用欧拉角进行旋转,而物理引擎的变换类使用欧拉角。所以我刚刚实现了一个方法来将我的变换类更改为物理引擎变换并返回。它运行良好,但我发现了一个奇怪的错误。

我得到的行为:

当旋转的偏航(欧拉矢量的第二个元素)高于 90 度时,它不会使对象在 y 轴上再旋转并开始与俯仰和滚动搞乱(奇怪的摇晃从 0 跳到 180 和回来很多)。调试工具显示旋转不会超过 91,但会达到最大 90.0003 我确实将度数转换为弧度。 示例: 为了显示这个错误,我有一个带有 python 脚本旋转它的立方体:

引擎本身是用 cpp 编写的,但我有一个使用嵌入式 python 的脚本系统。TOEngine 只是我的模块,脚本本身只是每帧旋转立方体。立方体从 0 , 0 , 0 旋转开始,旋转很好,但停止,90 度偏航并开始摇晃。

这仅在启用物理系统时发生,因此我知道错误必须在使用 glm 将旋转从 euler 传输到 quat 并返回每一帧的方法中。

这是实际有问题的代码

避免奇怪的类型双关语 PxQuat 与 glm::quat 基本相同,PxVec3 与 glm::vec3 基本相同。我希望此代码通过将旋转从欧拉角角度更改为带有弧度的 quat(困​​难部分),在物理引擎变换类和我的变换类之间传输。

以及物理系统内部:

PreUpdate 在每帧更新之前运行 PostUpdate 在每帧更新之后运行。顾名思义,Update 方法(在上面的脚本中显示)在更新上运行...(在 PreUpdate 和 PostUpdate 之间)。立方体有一个刚体组件。我期望得到:一个旋转的立方体,当它达到 90 度偏航时不会停止旋转。

我知道这个有点复杂。我尽力解释了我认为问题在于将欧拉角更改为四元组的错误。

0 投票
2 回答
1861 浏览

unity3d - 统一不同屏幕尺寸下的不同物理行为

我正在开发一个 2D 自上而下的开放世界游戏,其中有一个可以通过键盘功能移动的角色。移动是由 Rigidbody.AddForce() 引起的。
问题是在不同的屏幕尺寸下移动速度是不一样的。

这是简单的代码:

角色的质量是一样的,漂浮的速度是一样的,但是,当我将游戏视图切换到全屏后,显然角色的移动速度更快。(这很奇怪,表明这不是性能问题。)
我尝试测试独立构建,那里一切都很好(但是在 android 构建中似乎有点慢。)但我需要有一个共同的速度在编辑器,因为我必须设计取决于时序的关卡,而时序取决于速度。

0 投票
0 回答
832 浏览

cmake - 使用 cmake 编译和运行 NVIDIA PhysX (version4) Kapla Demo 和示例代码的步骤是什么?

我正在尝试使用 NVIDIA PhysX SDK。但找不到如何实际运行以下内容,

卡普拉演示:

https://github.com/NVIDIAGameWorks/PhysX/tree/4.1/kaplademo

其他样品:

https://github.com/NVIDIAGameWorks/PhysX/tree/4.1/physx/samples

我按照这里的说明进行操作,

http://gameworksdocs.nvidia.com/PhysX/4.1/documentation/physxguide/Manual/BuildingWithPhysX.html

得到一个构建

最终得到了一个我无法做出正面或反面的文档层次结构。

如果我可以将 Kapla Demo 和其他示例与单个 CMake 脚本链接起来,那就太好了。非常感谢所有帮助。!

0 投票
1 回答
402 浏览

c++ - 如何链接和包含 PhysX 4.0 扩展库?

我将 PhysX 4.0 SDK 包含到我的 C++ opengl 项目中,但是我不能使用 PhysX Extensions 库中的任何东西,例如PxDefaultErrorCallback或者PxDefaultMemoryOutputStream因为我需要先包含 Extension 库。问题是我在自己编译的 PhysX SDK 的任何文件夹中都找不到PhysXExtensions32.libDLL 及其 DLL。

我可以找到一个名为 的静态库PhysXExtensions_static_32.lib,但是在链接该库时出现此错误:

有没有办法我可以得到扩展 libarayMultithreaded-Debug-DLL (/MDd)而不是 a Multithreaded (/MT)

0 投票
1 回答
811 浏览

unity3d - 默认求解器迭代是什么意思?

我正在尝试了解 Unity 物理引擎 (PhysX),有人可以解释一下默认求解器迭代默认求解器速度迭代到底是什么吗?

在此处输入图像描述

这来自 Unity 文档:

默认求解器迭代:定义 Unity 在每个物理帧上运行的求解器进程数。求解器是小型物理引擎任务,可确定许多物理交互,例如关节的运动或管理重叠刚体组件之间的接触。这会影响求解器输出的质量,建议在使用非默认 Time.fixedDeltaTime 或配置要求更高的情况下更改属性。通常,它用于减少由关节或接触引起的抖动。

请提供一些例子说明它是如何工作的,增加或减少它如何影响最终结果?