PhysX
文章平均质量分 53
SuperKuku
在从事游戏开发的6年时间里面,涉及的内容包括运营平台、GM工具、MMORPG、FPS游戏。游戏都已经上线并且稳定运营中,单服务器的承载量在1万-5万之间。
展开
-
PhysX学习记录 二
首先是2.8.1 SDK下载,最近NVidia Develop官网发生了账号丢失问题。不能访问了,使用如下链接吧:http://download.csdn.net/detail/heartrude/4441402安装方面,一键安装即可,没有什么需要注意的。参考/SampleBoxes/src/NxBoxes.cpp和官方文档,就可以直接完成一个简单的,有着完整逻辑的PhysX案例了原创 2012-07-20 17:06:00 · 2041 阅读 · 0 评论 -
Physx Trigger
Physx Trigger1. Trigger启用启用Trigger必须要设置一个Trigger属性的Shape.设置了Trigger属性,就没有碰撞属性了2. DynamicActor注意由于Trigger Shape无法计算mass.所以如果只有单个Shape构成的动态Actor需要指定mass和inertia否则生成Actor会报错.NxActor::chec原创 2013-01-09 16:20:59 · 1211 阅读 · 0 评论 -
Physx范围伤害检测
区域判断使用Overlap来实现。 Overlap有两种模式1.列出所有范围内的Shape2.判断范围内使用有Shape#include #include "NxPhysics.h"#include "ErrorStream.h"#include "Utilities.h"#include "SamplesVRDSettings.h"#include "FileLo原创 2013-01-08 20:08:47 · 1401 阅读 · 0 评论 -
Physx减少碰撞检测的优化
首先说明这里的碰撞检测(Collision Detection)包括的内容:1. 接触 Collision2. 触发 Trigger3. 射线检测 Raycast4. 范围检测 Overlap检测过程:首先Physx本身并不是每次都遍历所有2v2组合,判断是否需要判断。而是自动把Shape根据区域进行了划分。每个shape只会与自己附近的Shape进行碰撞检测。原创 2013-01-08 18:12:03 · 3530 阅读 · 0 评论 -
Physx使用的问题
1.提示NxUserAllocator::_malloc_dbg重声明,重定义了这种问题的发生是由于我们的工程使用了_CRTDBG_MAP_ALLOC用来进行内存溢出检测。该定义宏会导致在crtdbg.h中定义如下宏#define malloc(s)_malloc_dbg(s, _NORMAL_BLOCK, __FILE__, __LINE__)该宏会把malloc(size_原创 2012-10-24 16:11:46 · 920 阅读 · 0 评论 -
Physx Unity3D同步模拟
对于同步,碰撞等效果需要引入物理引擎进行模拟的。就涉及到服务器和客户端同时模拟同步的问题。经过一定时间的测试,已经能够在客户端使用Unity3D 3.4.2服务器使用Phyxs 2.8.1的情况下,实现直线运动和碰撞上的同步。但是由于客户端和服务器帧率上存在的差别,所以对于碰撞,无法很好的同步,只能在碰撞后,服务器进行微调。现在罗列细节如下:1.主意物理帧率。Unity3D使用Ti原创 2012-09-17 10:33:09 · 5572 阅读 · 0 评论 -
PhysX学习记录 五 Actor对象
PhysX主要学习内容,当然是了解模拟对象Actor了。先上框架图。这个是SDK文档上面的。NxJoint组合NxActor。NxActor包含NxShape用来进行碰撞。NxShape由NxMaterial、Mesh组成。Actor有Static,dynamic的区别。一个可动,一个不动。在创建时,没有NxBodyDesc就是stati原创 2012-07-21 14:49:42 · 2421 阅读 · 0 评论 -
PhysX性能测试
PhysX 2.8.1 测试报告 一测试环境:CPU:Intel Xeon W3565 3.20G*4 Mem:4096M GraphicsCard:GeForce GTX 560 Drive:8.17.12.8562 CPU模拟OS:Win7 x64 PhysXSystem:9.11.0621测试描述:从后续的游戏开发考虑,使用PhysX影响最大的两个参数,子弹数量和车辆数量原创 2012-08-01 16:33:13 · 2439 阅读 · 0 评论 -
PhysX学习记录 八 Spherical Joint
swingLimit:该参数可以产生。是以Pi为单位的,以localAxis[0]为中心的锥形限制区域。不要以为是swingAxis为中心哦。我为这个误会苦恼了好久,最后看官方实例才发现这个问题。原创 2012-07-27 19:43:04 · 1046 阅读 · 0 评论 -
PhysX学习记录 一
制作一个需要进行大量物理运算的战斗类游戏,所以需要在服务器加入物理引擎。三大物理引擎Havok、PhysX、Bullet。由于我们客户端使用了UnReal,所以服务器默认选用了PhysX。PhysX从3.0开始大量优化CPU运算性能,构架规模变化,支持多线程。2.8.1之前支持物理加速卡。由于目前UnReal使用的时2.8版本的PhysX。所以先从2.8.1入手开始学习。后续就是主要的原创 2012-07-20 16:35:36 · 2101 阅读 · 2 评论 -
PhysX学习记录 九 Shape参数说明
由于形体创建时,使用的Actor坐标系。所以要注意Shape相对Actor中心的位置。正确的决定Actor Frame原点的位置对于形体的正确控制是非常必要的。Box Shape:dimensions: 参数给出的是1/2边长。(1/2 x, 1/2 y, 1/2 z)shape frame point: 在长方体中心Capsule Shape:Height原创 2012-07-28 19:57:51 · 1170 阅读 · 0 评论 -
PhysX学习记录 七 冲突检测
冲突碰撞是针对Shape的碰撞。Shape之间可能存在默认不碰撞检测的情况。相互碰撞检测方式如下图:Shape免冲突设置只要设置ShapeDesc.shapeFlags |= NX_TRIGGER_ENABLE就可以使得该Shape免予冲突检测。冲突检测优化冲突检测是很耗性能的。每次的遍历是很难实现的。所以有一些性能上的优化。首先能够冲突检测的pair是在一定的距离原创 2012-07-26 19:19:20 · 2791 阅读 · 0 评论 -
PhysX学习记录 六 Joint
如果没有joint,所有actor都只能进行简单易懂操作。有了joint才有了丰富多彩的关联移动方式。joint和contract(碰撞检测时产生的碰撞点)是physX系统两种约束之一。所有约束都是面对一个pair对象。两个actor称为一个pair。可以通过设置一个actor为NULL来与世界进行Joint。名次解释DOF degree of free: 自由度。最多6个自由度。3个原创 2012-07-26 18:38:01 · 1883 阅读 · 0 评论 -
PhysX学习记录 四 参数杂记
这里记录了在文档阅读过程中对于SDK得参数的理解。先给一份全的参数表,后续慢慢追加ParameterDefault ValueDescriptionNX_PENALTY_FORCE DEPRECATEDNX_SKIN_WIDTH:皮肤宽度。主要是刚体堆叠计算的问题。如果没有皮肤,原创 2012-07-21 14:31:03 · 2144 阅读 · 0 评论 -
PhysX学习记录 三
写完第一个Demo,心里有了一个直观的感受。现在需要通过阅读来深入了解一些内部细节了。1.对于NxCreatePhysicsSDK函数a.PhysX支持玩家自定义的内存分配方式。只要在NxCreatePhysicsSDK函数的第二个参数里面传入内存分配类指针即可。 class MyAllocator : public NxUserAllocator {原创 2012-07-20 17:55:19 · 1905 阅读 · 0 评论 -
Physx线程调研
在服务器运行过程中,发现Physx线程竟然增加到了8个。非常奇怪。然后我对Physx的线程进行了一次调研,以了解这些线程的功能和这些线程是否可控。1.Physx文档中涉及的线程有3种a.Simulator线程。如果设置了NX_SF_SIMULATE_SEPARATE_THREAD会使得每个sence在simulator和fetchresult之间开启一个线程进行物理模拟。我们称之为原创 2013-01-18 10:32:32 · 1065 阅读 · 0 评论