增溶剂的英文翻译英语怎么说-chicken是什么意思
2023年4月1日发(作者:语音会议系统)
havok物理引擎快速⼊门指南翻译
花了2天时间完成了这个翻译,需要有C++基础,是通过haovk引擎做物理动画的基础.
到intel官⽅⽹站注册⼀个帐号可以免费获取havokSDK,这是SDK中的⼀个⽂档的翻译.
havok
⽬录
PC指南
1.1简介
1.2评估清单
1.2.1havok常规
1.2.2havok物理
1.2.3havok动画
1.3开始havok
1.3.1从havok物理和动画的PC⼆进制版本开始
1.3.2简单应⽤
1.3.3组建⼀个Demo(演⽰)
1.3.4Demo命令⾏参数
1.3.5Demo控制
1.4⼿把⼿演⽰
1.5组建havok
1.5.1havok库
1.5.2havok库链接顺序
1.5.3havok头⽂件包含规范
1.5.4链接havok
1.5.5调试havok库
1.5.6⽂件命名约定
1.6设置VisualDebugger(可视化调试器)
1.6.1Windows/LinuxVDB安装
1.6.2WindowsVDB注意事项
1.1简介
欢迎阅读havokPC指南.这个⽂档包括了在PC上使⽤Havok的的信息.
他解释所有关于HavokDemos的配置和运⾏需要的东西,也包括所有PC上的特⾊。以及怎么优化的使⽤HavokSDK.
1.2评估清单
这个清单的意义在于收集当第⼀次尝试评估和整合havok运⾏时产品时要做的事情,⾼级的产品特⾊和控制台/平台具体的讨论在相关的演⽰
和⽂档中.所有的项⽬被列出并且被推荐去尝试,除⾮另有说明,另外,尽可能按顺序尝试每⼀个项⽬,因为后来的项⽬⼀般建⽴在早期的项⽬之
上.
stepbystepdemos,是⼀系列最⼩化的基于控制台的演⽰,每⼀个设计演⽰⼀个具体的特⾊.Demo的详细内容能够在下⾯的StepbyStep
Demo章节找到.
1.2.1Havok常规
所有的Havok产品依赖于最根本的常规库的基础设施.⼀个最重要的好处是他提供⼀个⾼性能的平台不依赖于机器抽象.更多的常规库的具
体特⾊包括反射小学语文免费教学课件 ,序列化,线程,容器,内存管理,和数学⽀持。
浏览和编译Demo/StandAloneDemos/StepByStep中的MemoryUtilInitStepbyStep演⽰.
通过你的内存系统查看Havok的内存的分配和释放。看看Havok基础库和⾃定内存的SDK⽂档
实现你⾃⼰的错误处理机制.这⾥⼀个⼩的努⼒的投⼊将为将来节省很多时间。可查看SDK⽂档关于创建⼀个⾃定义错误处理。
浏览和编译SerializeStepByStepdemo
写⼀个demo使⽤serialize去储存和载⼊⼀个对象。
1.2.2Havok物理
组建和运⾏Havok物理演⽰和控制台例⼦。
浏览并编译Physics和PhysicsVdbStepbyStepdemos
在游戏运⾏时创建⼀个简单(⽐如盒⼦形状)固定的/静态的刚体
连接HavokVisualDebugger(VDB)去观察这个简单的固定的对象
在游戏中创建⼀些简单的动态刚体,他们和简单的固定的对象以及他们⾃⼰之间相互碰撞.
添加VDB⽤户摄像头到游戏中.(这看起来很琐碎的⼯作,但是他会为你的将来节省很多时间.).查看SDK⽂档的VisualDebugger
GameSide,DebugDisplay和HK_UPDATE_CAMERA.
在游戏渲染器中同步动态的对象.使⽤游戏和VDB确认他们的⼀致性.在VDB可视窗⼝中实验,查看形状,接触点,模拟岛,broadphase
AABBs,惯性张量,统计等等.
创建更多复杂的固定的物理⼏何形状,如多边形汤或者⾼度图.
可选的
安装HavokContentTools(HCT)⽤于建模
1.2.3havok动画
查看上⾯\"Havok常规\"中的所有内容
使⽤HCT去创建⾻骼,动画和⽪肤(可选的).浏览HavokPreviewTool中的所有元素.
从HCT中序列化HavokAnimation数据到游戏中运⾏.
使⽤VDB可视化⾻骼造型(不必担⼼蒙⽪和游戏渲染)
通过转换最终的⾓⾊造型到游戏蒙⽪.
1.3开始Havok
1.3.1从HavokPhysics和HavokAnimationPC⼆进制版开始.
如果你已经成功安装这个版本,你将看到⼀下的⽬录结构
hkXXX
-Build
-Demos
-Docs
-Lib
-Source
-Tools
这个XXX是指定的版本号(如.2010_1_0_r1表⽰2010.1.0发布的的后选1号版本).另外你能看到组建编号,当你运⾏demos或者在任
何头⽂件的底部.
1.3.1.1运⾏Demos
在Demo/Demos⽂件夹中你能找到主要的可执⾏的demo.这个可执⾏的demo包括500多个demo,我们使⽤这些demo演⽰和测试
Havok.如果你运⾏他,你将看到⼀个菜单画⾯,你能在Democontr落雁泓李白原文 ol中找到控制和导航菜单.
Demos分类为APIdemos,特⾊demos和⽰例os说明怎么使⽤API.他们通常⾮常简单和易⽤的.他们的代码被设
计为可以复制和粘贴到你的应⽤程序中.特⾊Demo被设计成展⽰特定的功能.(⽐如vehicleSDK或者charactercontrller).最后,⽰例
demo汇集多⽅⾯的特⾊,以显⽰在更复杂的场景中使⽤Havok.我们建议你花时间运⾏每⼀个demos以查看HavokPhysics和Havok
Animation提供的⼴泛的特⾊集合.
注意:
得到完全视觉和听觉的⾼品质的⽰例demo,保证你已经安装了MicrosoftDirectX2010.7或者更⾼
1.3.2简单应⽤
Havokdemo框架包括以系列的有⽤的demo,以演⽰SDK的各个部分(可在以下的howtobuildedemos中查看相关的信息).这些
demos是被设计来参考的,当你读通这个⽂档的时候,但是,你可能会喜欢创建⼀个和Havokdemo框架⽆关的简单的主要的应⽤程序.
在Havok版本中(在Demo/StandAloneDemos⽂件夹中)包含的样本展⽰了配置和和运⾏Havok的最⼩量的代码.
为了组建这些:
确定你的Havokkeycode(s)是在Source/Common/Base/KeyCode.h.
选择⼀个你希望组建和运⾏的项⽬或者这平台的makefile和编译器.
组建和运⾏demo-为指定的平台配置,看下⾯
更多关于怎么链接和组建你⾃⼰的项⽬,请查看Havok库链接顺序和Havok头⽂件包含规范章节.
1.3.2.1简单控制台应⽤程序
这个应⽤程序创建了⼀个场景,包括⼀个在⼀个盒⼦上下落的圆球,并且这个场景模拟5分钟.这个简单的应⽤程序也做了设置HavokVisual
Debugger的最⼩的初始化⼯作.
当你运⾏这个简单的控制台程序的时候,他将初始化适当的平台,然后开始关于⼀个球掉落在⼀个盒⼦上的的模拟,然后停下.球下落的每⼀秒
中的位置都显⽰在屏幕上.
图1.1:显⽰⼀个简单的控制台应⽤程序
1.3.2.2链接VisualDebugger
尽管这个应⽤程序没有图像输出他已经初始化和打开了⼀个通道和HavokVisualDebugger通信.这个visualdebugger在⽤户⼿册⾥⾯
有详细的描述.但基本上他能使模拟成为⼀个能跨越⽹络的流.连接到⼀个客户端程序也能显⽰和模拟.这个visualdebugger客户端在
,并且他有全部的说明怎么设置Visualdebugger到你⾃⼰的的应⽤程序中,这个说明在
能够在下⾯的颗组词一年级 PlatformSpecific章节找到.
在这个应⽤程序中.⼀个visualdebugger服务器被创建并且他能够使⽤来连接.(运⾏他然后单击Network>
windows使⽤运⾏这个程序的机器的IP.客户端能够运⾏在其他任何的⽹络上的电脑.包括
和linux运⾏这个程序的PC.
表格1.1:VisualDebuggerIP地址
注意:当你连接初身陷囹圄 始化它时,他需要占⽤30秒来显⽰可视化画⾯.如果服务器端的⽹络接⼝已经初始化,请查看他.
运⾏visualdebugger可⽤的应⽤程序
打开⼀个控制台,输⼊ping
你将看到⼀个⽬标机器的回复.
图1.2:SimpleConsoleApp在VisualDebuugger上的显⽰
1.3.3组建Demos
注意在Havokdemos能够编译和运⾏之前,他们必须被配置为匹配你安装的Havok的产品.更多的信息请在⽂档⽬录中的参考Havok
⽂档.
在你已经完成配置之后,检查你想要使⽤的编译器和你的havok版本库的所使⽤的编译器相同,这个信息能够在Docs/PackageDetails⽬录中
找到.他包含⼀个⽂本⽂件,为每⼀个HavokSDK包描述的的编译器,编译器版本等等.使⽤他去组建
1.3.3.1从Win32组建
使⽤MicrosaftVisualStudio打开你的版本的Demo/Demos⼦⽂件夹中的Demo项⽬.
确定你的Havokkeycode(s)在Source/Common/Base/KeyCode.h.
选择Win32-ReleaseMultithreadedDll作为激活的配置
组建和运⾏
可执⾏的Demos_win32-net_9-0_debug_multithrea_将在Demo/Demos中创建.
(这个例⼦中的\"net_9-0\"对应VisualStudio2008).
DirectX
如果你只组建Demos项⽬.那么你不需要安装MicrosoftDirectXSDK(你能够安全的跳过这节).如果你需要重建整个Havok版本.你需
要安装DirectXSDK(为了组建hkgGraphics库)
默认情况下爱.Havokdemos使⽤Microsoft的DirectX来渲染,在某些⽰例demo中也使⽤了DirectX声⾳.(⽐如布料拉扯和爆炸试验).
如果你硬件安装了DirectXSDK,你也应该按照如下内容修改的IDE选项.⼊股你没有DirectXSDK,下载并且安装最新的版本(version
11.0),当SDK已经安装你需要修改你的IDE选项.⽐如,
在VisualStudio(2005和更⾼)到Tools>Options..>ProjectsandSolutions>VC++Directories>ShowDirectories这⾥你需
要增加⼀个路径为你安装DirectX的的路径.⽐如Include⽂件/\"C:DXSDKinclude”和Library⽂件\"C:DXSDKlib”(默认的
DirectX安装路径)
下⾯的⼀些在WindowsVista下VisualStudio2问题的近义词 008相关的选项
图1.3:设置DirectX的库选项
图1.4设置DirectX的包含选项.
注意:
另外,你能够在OpenGl中运⾏demo,需要传递\"-ogl\"作为命令⾏参数给demo.在这个情况下.你能也能剥离DirectX依赖,从Demo的源代
码中,从⽽不需要安装DirectX.我们强烈推荐使⽤DirectX,因为他是最简单的.
1.3.4Demo命令⾏参数
命令⾏参数能够使⽤标准的命令⾏⽅式或者使⽤⽂件(如下)被传递到HavokDemo框架.使⽤\"-?\"在命令⾏后⾯能显⽰命令
⾏参数的全部列表,⼀部分最有⽤的选项如下:
1.3.4.1使⽤⽂件
多⽤于不便于使⽤命令⾏参数的平台或这从⼀个控制台上的CD运⾏.⽂件必须在demos可执⾏程序的同⼀⽂件夹
下.⽂件的格式⾮常简单,本质上是⼀个命令⾏参数的副本,如
;------
;thisisacomment
;runthevisualdebuggerserverandthepyramiddemo
-d-gPyramid
;runinfullscreenmodeandlocktosixtyFPS
-f-l60
1.3.4.2Win32渲染器选项
\"-r\"参数指定使⽤哪个渲染器,对于控制台只能⽤\"-rnone\",他禁⽤渲染器.但是在Win32你可以选择下⾯任何的DirectX种类:\"d3d8\",
\"d3d9\",\"d3d9s\",或者\"ogl\"⽤于OpenGL模式.默认情况下Win32⽤户使⽤shaderversionofDirectX9版本.\"d3d9s\"是shader-
onlyversionoftheDirectX9版本.
1.3.5Demo控制
控制demo,我们使⽤抽象⽤户界⾯类.这个类返回关于虚拟⿏标,⽅向键,摇杆和⼀系列的数字键.
控制台控制器没有实现拾取.
以下的表格显⽰了各个平台指定的的控制如何映射到我们的虚拟⽤户输⼊设备的.
当你玩demos时按下Pause控制键,你就能看到⼀个对应你的平台的控制键的选项的菜单.当按下暂定后,显⽰的信息,允许你选择这些选项.,再
按暂停键,将返回demo
如果你不确定你的平台上的哪个控制(键)对应显⽰在屏幕菜单中的哪个控制图标.你可以从demo的主菜单选择common-gamepad.将显
⽰控制图标.使⽤正确的的控制,对应的图标将会⾼亮显⽰
1.4StepByStepDemos
有些时候去查看需要哪些\"⽀持\"的代码才能让Havok在应⽤程序中⼯作可能会⽐较困难.为了尝试和演⽰基础的Havok整合具体需要什
么,demos套件现在包含了\"StepByStep”demos.这些demos被设计的尽可能的简单的显⽰⼀步⼀步的添加指定的特⾊到你的应⽤程序
需要做什么.这些demos都是控制台demos(他们没有图形组件),所有的需要的代码在⼀个简单⽂件⾥⾯,⼊⼝是\'main\'函数
StepByStepDemos能在⽬录Demo/StandAloneDemos/StepByStep中找到.每个demo有他⾃⼰的⽂件夹,包括⼀个项⽬⽂件或者
makefile对应⽀持的平台.包含demo代码.这些demo像主HavokDemos程序同样的编译⽅法
“MemoryUtilInit\"Demo有⼀个解释,就是去整合Havok到你的应⽤程序需要什么的基本结构.
#include
#include
#include
#include
hkBase.h包含⽤于访问基础的Havok常规库特⾊.hkMemoryInitUtil提供了⼀个⽅法.这个⽅法使我们更容易设置内存分配.
hkMallocAllocator是hkMallocAllocator接⼝的⼀个实现,使⽤平台标准的内存分配.⼀般是C标准库malloc.因为Havoks内存分配实现对
Havok的性能有极⼤的优化-还需要分配他们⾃⼰的内存池.
最后cstdio的包含在havok中不在需要.对于需要调⽤C标准库函数如printf的demo.
staticvoidHK_CALLerrorReport(constchar*msg,void*userContext)
{
usingnamespacestd;
printf(\"%s\",msg);
}
当Havok由hkBaseSystem::init启动时,他需要⼀个函数⽤来报告任何的错误.这⾥因为例⼦只是⼀个控制台应⽤程序,任何的错误能通过
printf显⽰在终端,根据不同的程序和平台,有时候更适合吧错误写到log⽂件中.
intHK_CALLmain(intargc,constchar**argv)
{
//Perfromplatformspecificinitializationforthisdemo-youshouldalreadyhavesomethingsimilarinyourowncode.
PlatformInit();
hkMallocAllocatorbaseMalloc;
hkMemoryRouter*memoryRouter=hkMemoryInitUtil::initDefault(&baseMalloc,hk语言翻译器 MemorySystem::FrameInfo(0));
hkBaseSystem::init(memoryRouter,errorReport);
{
HK_WARN_ALWAYS(0x417ffd72,\"Helloworld!\");
}
hkBaseSystem::quit();
hkMemoryInitUtil::quit();
return0;
}
这是应⽤程序的主⼊⼝.使⽤hkMemoryInitUtil通常你需要⼀个分配器,这个分配器提供低级的内存分配.hkMemoryInitUtil::initDefault将
包装这个分配器到硕果累累 其他有良好性能和其他特⾊的分配器中.在这个例⼦中⼀个,hkMallocAlloctor的实例将⽤于底层的分配器.
⼀旦内存系统被配置.整个havok就能被启动.hkBaseSystem::init⽤来启动.使⽤前⾯创建的memoryRouter.还有前⾯说的errorReport
函数
#include
包含的⽂件公开了你的购买havok产品许可正的关键信息.这些是⽤做内部检查许可证的有效性,如果产品许可证⽆效,那么产
品将不会运⾏.
//We’fthesesowedon’tgettheusual
//productinitializationfortheproducts.
#undefHK_FEATURE_PRODUCT_AI
#undefHK_FEATURE_PRODUCT_ANIMATION
#undefHK_FEATURE_PRODUCT_CLOTH
#undefHK_FEATURE_PRODUCT_DESTRUCTION
#undefHK_FEATURE_PRODUCT_BEHAVIOR
#undefHK_FEATURE_PRODUCT_PHYSICS
//Alsowe’renotusinganyserialization/versioningsowedon’tneedanyofthese.
#defineHK_EXCLUDE_FEATURE_SerializeDeprecatedPre700
#defineHK_EXCLUDE_FEATURE_RegisterVersionPatches
#defineHK_EXCLUDE_FEATURE_RegisterReflectedClasses
#defineHK_EXCLUDE_FEATURE_MemoryTracker
//Thisincludegeneratesaninitializationfunctionbasedontheproducts
//andtheexcludedfeatures.
#include
这个部分关掉了程序中我们不会⽤到的产品.
⽤不定义相关的HK_FEATURE_PRODUCT宏.
接下来的指定特⾊被排除,
使⽤相关的HK_EXCLUDE_FEATURE宏.最后包含来使⽤上⾯定义/和不定义的的符号的顺序来编译适合的库.
1.5组建Havok
1.5.1havok库
当你组建你的应⽤并不需要所有的havok库.这些表格显⽰在版本中的每⼀个库的详细的依赖和需求.
1.5.2Havok库链接顺序
⼀个包含havok库的全部⽴标和他们的依赖在Docs/.
1.5.3HavokHeader包含规范
任何的库,他有⼀些头⽂件需要被包含在每⼀个⽂件中.按照惯例,这个⽂件命名来和库名相同.通常的规范是在包含库中的其他的任何⽂件之
前包含这个库头⽂件.
//Includethehkbaseheaderbeforeanyotherhkbaseincludes.
#include
#include
//morehkbaseh短诗100首 eaders
相似的:
//IncludethehkpDynamicsheaderbeforeanyotherhkpDynamicsincludes.
#include
#include
//morehkpDynamicsheaders
注意,很多库的的头⽂件包含了其他的库的⽂件,⽐如hkpDyamics.h包含了hkBase.h.
所以,例如如果⼀个⽂件已经被包含在上⾯的块中,那么只要简化的写为
#include
#include
#include
1.5.4链接Havok
HavokSDK有4个组建配置:Release,Debug,FullD便的拼音 ebug和Hybrid.这些库能够在HavokSDK⽂件夹/lib/Platform/Configuration
下找到
Release
Release组建配置是⼀个完全优化的havok组建.他没有包含调试断⾔.因为没有断⾔.Havok可能会崩溃,如果使⽤不当.这⾥没有错误
检查.因为这个原因.推荐所有开发情况下使⽤Havok的Debug或者FullDebug配置.包含在Release的符号组建在于性能开销⽆关的平台
上.
Debug
Debug组建配置是⼀个完全优化的havok组建.他包含了调试断⾔和符号.Havok的断⾔将捕捉会导致崩溃的错误.断⾔提供给⽤户出
问题的⽂件和⾏号.还提供⼀个简要的说明出了什么问题.然后程序停⽌执⾏.这运⾏⽤户看到所有的调⽤栈.作为⼀个编译器已经完全优化的
代码.单步步进Havok代码容易出错.推荐哪些每天⼯作在和系统相关的的Hvaok产品的开发者使⽤HavokDebug库来连接.对于开发者⽽
⾔,任何错误的出现都能够通过断⾔明确的捕捉到.⽐如在Release库中⼀个错误可能导致随后的⼀连串的崩溃.这将很难诊断.
FullDebug
FullDebug配置没有优化.包括断⾔和调试符号.如果⽤户想要调试到Havok代码内部.这个组建配置是⾮常有⽤的.推荐那些直接使
⽤HavokSDK接⼝来写代码的开发者使⽤FullDebug库.
Hybird
Hybird组建是FullDebug链接针对ReleaseCruntime库的.这个主要的⽤于调试写来建模的havok插件(⽐如:Autodesk
3DSMax,Softimage(XSI)orMaya),作为建模者使⽤的releaseCruntimelibrary.
在⼀些平台,编译器会硬编码Havok的源⽂件的路径到Havok库中,在这些平台上.当程序执⾏停在Havokcode内部时,可能不能定位当前的
调⽤栈到对应的源码,⼀些调试器允许⽤户⼿动的定位磁盘上对应的代码.有些则不⾏.所以,在本地重新组建Havok库,在吧新版的组建的库
放到你的源码控制系中是⼗分有优势的.这可以保证源码⽂件的路径是关于龙的成语 正确的.当程序停在havok库内部时,调试器能够正确的打开对应的⽂
件.注意:⼀些Havok内部库不能重建.
Debug和FullDebug库将显⽰调试进信息/⽇志/警告到TTY.也可能需要外部依赖平台指定的调试库.Release库将不依赖任何的调
试库.
在PC,也有Release,Debug和FullDebug的DLL库.这些库被设计成连接到任何依赖的DLL版本.
1.5.4.1
在HavokSDK的存储数据中的被⽤在运⾏时模拟的许多类.⽐如物理对象,⾓⾊动画.等等.
hkSerialize包含了存储这个数据和载⼊的功能.
Havok的序列化类必须要注册到serialization设施才能使⽤.做到这些,需要添加以下代码.将检查在Keycode.h中的关键代码去诊断哪个
Havok产品被使⽤以及注册相应的Havok类.
//RegisterHavokclasses.
#include
#defineHK_CLASSES_FILE
#include
这个代码⽚段是默认配置Havok序列化并运⾏的⽅法.他也可以增加⽤户⾃⼰创建的类只注册⼀部Havok类.更多的信息,可以参考Havok
通⽤⼿册TypeRegistation章节
1.5.5调试Havok库
根据你的许可证,Havok提供了很多必须的源码去调试库.
但是,调试的时候.MicrosoftVisualStudio可能会提⽰你定位原始的源来代替⾃动打开相关的源.这是因为发布给客户的⽤户编译的Havok
库的源⽂件的⼆进制是不⼀致的.⽇期,组建时间和法律样本被添加到版本源中.虽然⾏号是匹配的.为了避免这个,需要导航到Microsoft
VisualStudio每个源⽂件,到>Debugging>General去掉\"Requiresourcefilestoexactlymatchtheoriginal
version\"前⾯的勾.
1.5.6⽂件命名约定
havoke的使⽤扩展到
.h:C++声明
.inl:被列⼊.h⽂件的C++内联函数和⽅法定义
.cppC++定义
.cxx被列⼊.cpp⽂件的源⽂件.⽐如超级宏⽂件(),和在编译时选择的实现().
1.6配置VisualDebugger(VDB)
1.6.1Windows/LinuxVDB安装
你的游戏的IP地址是visualdebugger游戏运⾏在的机器的IP.这可以运⾏你的游戏和visualdebugger程序在相同的机器,虽然这是不推荐
的,⾄少你要有个多核的机器.使⽤\"localhost\"或者\"127.0.0.1\"做为IP地址连接到你的游戏运⾏的机器.如果你想要连接到远程PC,过程是⼀
样的,你会使⽤机器的名字或者IP.以windows为例,你能在命令⾏的提⽰符后输⼊\"ipconfig/all\"命名来获取这个信息.
1.6.2WindowsVDB注意事项
这个平台⽬前还没有问题.
我⾃⼰的看法:
上古5⽬前要实现良好的动作效果.havok是⼀个可⾏的的突破⼝.⽐如hkx⽂件到底给havok物理引擎传递了什么数据.hkx⽂件是否能够被⼆
次开发等等.这些都需要先熟悉havok物理引擎.
更多推荐
debugger是什么意思ugger在线翻译读音例
发布评论