1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > PhysX 物理引擎研究(一)源码编译

PhysX 物理引擎研究(一)源码编译

时间:2023-12-07 20:09:51

相关推荐

PhysX 物理引擎研究(一)源码编译

前言

Unity 3D 中的物理引擎分为 2D 引擎和 3D 引擎两部分,其中 2D 引擎使用的Erin Catto写的是 Box2D,而 3D 引擎使用的的 NVIDIA 的PhysX,在 Unity Editor 中打开HelpAbout Unty可以看到"Physics powered by PhysX. (c) NVIDIA Corporation."的字样。

Unity 历史 PhysX 版本

年,Unity 1.0 就使用 PhysX 作为物理引擎

年,Unity 3.0 版本将 PhysX 版本从 2.6 升级到 2.8

年,Unity 5.0 版本将 PhysX 版本从 2.x 升级到 3.3

参考:UpgradeGuide5-Physics

Unity .3 版本开始,Unity 将 PhysX 版本从 3.3.1 升级到 3.4.2

主要提升了稳定性和性能,且增加了多世界支持

参考:UpgradeGuide3

Unity .1 又加入了Physics Debugger工具

用于可视化检查场景中几何图形的碰撞器,通过Window>Analysis>Physics Debugger打开

参考:Physics Debug Visualization

PhysX 简介

PhysX是 NVIDIA 旗下的物理加速技术,利用 GPU 的处理能力来执行复杂的物理效果计算,利用CUDA技术,由显示核心加速运算。

目前支持的平台有:Windows 、Linux 、Android ARM 、mac OS 和 iOS 。

Github 源码:在 NVIDIAGameWorks 官方的 Github 仓库中有两份源码:

PhysX 年 12 月份才开源的 4.0 版本, 年 3 月份更新至 4.1 版本(PhysX SDK 4.0 is available 和 Updated PhysX SDK 4.1 released)

PhysX-3.4 年 10 月份开源的 3.4 版本(Pre-release version of PhysX SDK 3.4 is now available on GitHub)

目前主流的已集成了PhysX的游戏引擎有:Unity 3D 、Unreal Engine 3/4 等。(数据来源 phyxinfo )

更多 PhysX 的资讯可以查看官方网站 和 physx 总览

下载 PhysX 源码

从 Github 上下载 PhysX 4.0 源码:

$ git clone /NVIDIAGameWorks/PhysX.git

工程有点大,大概 1.26G 左右,当然也可以直接下载 release 版本的压缩包:PhysX-4.0.0.zip ,然后解压

下载完毕,工程目录如下:

├─ PhysX│ ├─ externals│ ├─ kaplademo│ └─ physx│ └─ pxshared

下面是将 PhysX 引入我们自己的工程中的步骤,大致参考了 PhysXSetup.pdf 和

安装 DirectX SDK

假如只是想编译得到 SDK 的核心库,则不必安装此 SDK ,因为此 SDK 只在源码中的示例中被使用,即源码中提供的一个 demo 工程。符合要求的版本:Microsoft DirectX SDK 年 6 月份及之后的版本,直接下载 DirectX SDK 9.29.1962 June ,然后双击进行安装即可,似乎只能装在 C 盘,其他盘装不了。

然而,我在安装 DirectX 的过程中出现了Error Code:s1023导致安装失败。

原因分析:

DirectX 安装过程中会顺便安装Microsoft Visual C++ x86 Redistributable - 1010.0.30319组件,而电脑中已经存在比此版本更高的 C++ Redistributable ,我在控制面板看了一下,由于我安装了 VS 、VS 和 VS ,并且都安装了 C++ 支持相关的 SDK,因此我电脑中 C++ Redistributable 的版本也有很多个:

看起来简直是噩梦,但其实跨大版本是不会冲突的。

解决方案:

因此只需要先卸载Microsoft Visual C++ x86 Redistributable - 1010.0.40219即可,包括 x64 和 x86。然后,再重新安装 DirectX 。

其实回退版本影响并不大,当然,假如还希望安装被卸载掉的 C++ 组件,可以从 Microsoft Visual C++ Service Pack 1 Redistributable Package MFC Security Update 下载安装。

更多 C++ Redistributable 版本可以在这里下载: Visual C++ Redistributable Packages and Related Registry Entries 。

SDK 编译源码

根据 官方文档 readme_windows 指出的编译要求:

CMake 3.12 或以上版本

Python 2.7.6 版本

这里我使用的是 CMake 3.13.0-r3 和 Python 2.7.9 ,具体编译步骤如下:

进入工程的 physx 目录,运行generate_projects.bat来生成 VS 解决方案,可以进入编译选择界面:

E:\C++\libs\PhysX-4.0.0\physx>exit /b 0Preset parameter required, available presets:(0) android <--- Android-19, armeabi-v7a with NEON PhysX SDK(1) vc12win32 <--- VC12 Win32 PhysX general settings(2) vc12win64 <--- VC12 Win64 PhysX general settings(3) vc14win32 <--- VC14 Win32 PhysX general settings(4) vc14win64 <--- VC14 Win64 PhysX general settings(5) vc15win32 <--- VC15 Win32 PhysX general settings(6) vc15win64 <--- VC15 Win64 PhysX general settingsEnter preset number:

除了第一个 android 版本外,其余的都是 windows 平台下使用的,vc 版本对于 VS 编译器版本大致关系如下:

Visual Studio : vc12 Visual Studio : vc14 Visual Studio : vc15

这里我选择 6 ,则生成的工程用 VS 打开,编译生成用 64 位的库。

工程生成成功后,在physx/compiler目录下会多出一个vc15win64的目录:

假如当前已安装了 VS ,直接双击打开PhysXSDK.sln文件 。

编译全部:

然后依次选择菜单:调试>开始执行

结果出现 3 个错误:

58>------ 已启动生成: 项目: ALL_BUILD, 配置: debug x64 ------58>Building Custom Rule E:/C++/libs/PhysX-4.0.0/physx/compiler/public/CMakeLists.txt58>CMake does not need to re-run because E:/C++/libs/PhysX-4.0.0/physx/compiler/vc15win64/CMakeFiles/generate.stamp is up-to-date.========== 生成: 成功 55 个,失败 3 个,最新 0 个,跳过 0 个 ==========

查看输出日志,3 个错误分别是:

29>已完成生成项目“SamplePlatform.vcxproj”的操作 - 失败。...30>已完成生成项目“SampleRenderer.vcxproj”的操作 - 失败。...44>已完成生成项目“Samples.vcxproj”的操作 - 失败。...

而导致失败的原因是:

: fatal error C1083: 无法打开包括文件: “d3dx9.h”: No such file or directory

这是因为源码中的 demo 依赖 DirectX SDK ,解决步骤如下:

解决方案资源管理器中分别选择报错的三个工程:SamplePlatformSampleRendererSamples右键>属性

设置 include 目录

C/C++>常规>附加头文件,进入编辑状态然后添加 DirectX SDK 安装目录中的 include 目录:C:\Program Files (x86)\Microsoft DirectX SDK (June )\Include

设置 lib 目录

库管理器>常规>附加库目录Samples不是静态链接库,因此是链接>常规>附加库目录),进入编辑状态,添加目录 DirectX SDK 安装目录中的 Lib目录:C:\Program Files (x86)\Microsoft DirectX SDK (June )\Lib

完成上述配置后,重新生成,输出如下表示编译完成了:

59>------ 已跳过全部重新生成: 项目: INSTALL, 配置: release x64 ------59>没有为此解决方案配置选中要生成的项目 ========== 全部重新生成: 成功 58 个,失败 0 个,跳过 1 个 ==========

运行示例

physx\bin\win.x86_64.vc141.mt\debug目录下会生成很多.exe文件,这些都是官方提供的示例,可以直接双击运行。例如 Samples_64.exe 运行结果:

参考

Building with PhysX — NVIDIA PhysX SDK 4.0 Documentation

NVIDIA® PhysX® SDK for Windows ReadMe

PhysX SDK 4.0在Win7下的编译生成

安装DirectX SDK时出现Error Code:s1023 的解决方案

在VS中创建一个Physx工程

Unite - PhysX 3 in Unity 5

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。