﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-月下的博客-随笔分类-杂事</title><link>http://www.cppblog.com/cty41/category/13039.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 21 Mar 2016 15:05:15 GMT</lastBuildDate><pubDate>Mon, 21 Mar 2016 15:05:15 GMT</pubDate><ttl>60</ttl><item><title>聚焦观感</title><link>http://www.cppblog.com/cty41/archive/2016/03/21/213080.html</link><dc:creator>月下圆舞曲</dc:creator><author>月下圆舞曲</author><pubDate>Mon, 21 Mar 2016 05:57:00 GMT</pubDate><guid>http://www.cppblog.com/cty41/archive/2016/03/21/213080.html</guid><wfw:comment>http://www.cppblog.com/cty41/comments/213080.html</wfw:comment><comments>http://www.cppblog.com/cty41/archive/2016/03/21/213080.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cty41/comments/commentRss/213080.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cty41/services/trackbacks/213080.html</trackback:ping><description><![CDATA[<div>抽空看完了今年的最佳影片（<a href="https://movie.douban.com/subject/25954475/">聚焦</a>），讲的是记者揭露教会性侵儿童的过程，故事内容和我们算是八杆子打不到一块，但整个事态发展特别像是重新修正失败项目。</div><div></div><div>报社新调来的主编示意要深挖一个神父性侵的案件，逐渐发现问题越来越大，牵扯到了教会上层，但更可怕的是其实所有人都知道这事，许多人试图向报社反应，甚至连深挖的记者小组组长也经手过旧案，而受到教会压力后就放手了。于是所有人都不再作声了。</div><div>最后组长去找律师旧友做牧师人数确认的时候，律师愤怒地说：我只是在做我的工作，他们的脏事与我无关。</div><div></div><div>看到这里是不是觉得似曾相识？是否也骂过类似的话？（我的code写的没问题，策划的案子太渣了）</div><div></div><div>如果你也像剧中律师说过类似的话，一定要警觉。如果不能改变现状，及早走人。麻木不仁不仅会毁了产品，它更会从精神上摧毁你。</div><div></div><div></div><div></div><div></div><div>&nbsp;</div><div></div><div></div><div></div><img src ="http://www.cppblog.com/cty41/aggbug/213080.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cty41/" target="_blank">月下圆舞曲</a> 2016-03-21 13:57 <a href="http://www.cppblog.com/cty41/archive/2016/03/21/213080.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UE3状态机的坑</title><link>http://www.cppblog.com/cty41/archive/2016/03/04/212930.html</link><dc:creator>月下圆舞曲</dc:creator><author>月下圆舞曲</author><pubDate>Fri, 04 Mar 2016 13:28:00 GMT</pubDate><guid>http://www.cppblog.com/cty41/archive/2016/03/04/212930.html</guid><wfw:comment>http://www.cppblog.com/cty41/comments/212930.html</wfw:comment><comments>http://www.cppblog.com/cty41/archive/2016/03/04/212930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cty41/comments/commentRss/212930.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cty41/services/trackbacks/212930.html</trackback:ping><description><![CDATA[&nbsp; 现在的项目算是半个ue3项目移植，策划要求将原先的教程添加新步骤，第一个教程很快写完，但是却花了一下午的时间来查一个bug：<br />&nbsp; 当时看到的现象是怪物格挡次数少了一次（原先是3次），乍一看是个很普通的问题，仔细追了下代码，发现是由于格挡计次额外多了一次，所以在第二次判断就跳出了，但问题是额外的那一次自增操作的进入位置是xxxPawn里某个state的label又重入了一次，但是在这里加断点发现，堆栈没有更上层了（也就是说是直接从c++层调用过来的），于是就怀疑到是否是新加的代码误执行了PopState函数（popState的c++实现会调用gotolabel），最后发现才是某一个if中少加了新的判定，因此没有跳过这段pop。。<br />&nbsp; 这就是UE3状态机的一个暗藏逻辑，一个actor原先在state A中，A里有默认执行的Begin标签，那么在第一次进入这个state A时，会默认走一遍Begin的逻辑，但如果再pushState B(注意，不是gotostate B)，那么当将popState B的时候依然还是将state A的Begin标签再走一遍的。<br />&nbsp; 回头看这段思路，其实错误很简单，但是由于游戏原先教程并非是我们写的，使得我并不了解其实各种跳转的原因，切state的逻辑大量在c++层和脚本层穿插混合，使得整个调试过程中，即使花在定位问题的时间也是很多（如果可以看到堆栈，估计半小时就定位到问题了）<br />&nbsp; 除了吐槽FSM之外，我也在质疑自己的思考方式，遇到这种问题，花费半个人力日尝试去完全理解原作者的逻辑是否是最高效的方式呢？如果我当初选择直接按照旧代码的逻辑完全拷贝粘贴同样的代码，是否就能规避掉这个问题？<br />&nbsp;&nbsp;<br /><img src ="http://www.cppblog.com/cty41/aggbug/212930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cty41/" target="_blank">月下圆舞曲</a> 2016-03-04 21:28 <a href="http://www.cppblog.com/cty41/archive/2016/03/04/212930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重新回归</title><link>http://www.cppblog.com/cty41/archive/2016/03/04/212922.html</link><dc:creator>月下圆舞曲</dc:creator><author>月下圆舞曲</author><pubDate>Fri, 04 Mar 2016 05:57:00 GMT</pubDate><guid>http://www.cppblog.com/cty41/archive/2016/03/04/212922.html</guid><wfw:comment>http://www.cppblog.com/cty41/comments/212922.html</wfw:comment><comments>http://www.cppblog.com/cty41/archive/2016/03/04/212922.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/cty41/comments/commentRss/212922.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cty41/services/trackbacks/212922.html</trackback:ping><description><![CDATA[&nbsp; 这阵子回望，发现自己已经快工作了五年，期间迷茫过，也曾尝试奋力一搏，但和自己做游戏的理想相差甚远，博客也是从正式工作后就断了。如今想想，竟然没什么值得骄傲的作为。<br />&nbsp; 放平心态，仔细规划下面的五年，为了做出自己喜欢的游戏（咱这次就得具体化目标啦），再次努力。<img src ="http://www.cppblog.com/cty41/aggbug/212922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cty41/" target="_blank">月下圆舞曲</a> 2016-03-04 13:57 <a href="http://www.cppblog.com/cty41/archive/2016/03/04/212922.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VS断点的免费log</title><link>http://www.cppblog.com/cty41/archive/2011/12/29/163151.html</link><dc:creator>月下圆舞曲</dc:creator><author>月下圆舞曲</author><pubDate>Thu, 29 Dec 2011 14:57:00 GMT</pubDate><guid>http://www.cppblog.com/cty41/archive/2011/12/29/163151.html</guid><wfw:comment>http://www.cppblog.com/cty41/comments/163151.html</wfw:comment><comments>http://www.cppblog.com/cty41/archive/2011/12/29/163151.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cty41/comments/commentRss/163151.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cty41/services/trackbacks/163151.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;用vs也用了有将近3，4年了。。断点还真没掌握全，以前也就用用内存断点，昨天老大教了下断点print，相当的强大。。在代码上加了断点后右键断点选择When Hit，然后就是强大的print了！大致就是如果你想在执行到那一行代码的时候，print某个变量值，直接加{varname}，查看指针的值就是{*ptr}，类成员也可以：{obj.memA},这种print尤其是在对需要灵活查看的一些update函数上就非常有用，免得再往代码里加log了～<br />&nbsp;&nbsp;&nbsp;佩服vs强大的同时顺便再惭愧下。。<img src ="http://www.cppblog.com/cty41/aggbug/163151.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cty41/" target="_blank">月下圆舞曲</a> 2011-12-29 22:57 <a href="http://www.cppblog.com/cty41/archive/2011/12/29/163151.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对OGRE预编译头的一点小疑问</title><link>http://www.cppblog.com/cty41/archive/2011/01/21/139009.html</link><dc:creator>月下圆舞曲</dc:creator><author>月下圆舞曲</author><pubDate>Fri, 21 Jan 2011 04:37:00 GMT</pubDate><guid>http://www.cppblog.com/cty41/archive/2011/01/21/139009.html</guid><wfw:comment>http://www.cppblog.com/cty41/comments/139009.html</wfw:comment><comments>http://www.cppblog.com/cty41/archive/2011/01/21/139009.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/cty41/comments/commentRss/139009.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cty41/services/trackbacks/139009.html</trackback:ping><description><![CDATA[&nbsp; 前两天，给自个儿写的工程加个预编译头，没想到貌似简单的活就出错了。<br>&nbsp; 以前自己都是建立工程的时候加好，自己也没太在意，也就这么过了，这次给旧工程加，想想也就手动添加了个xxx.h，然后在project properties里改了下设置 use procompiled header，但这样就错了，于是自己也懒的想，就去ogre的工程（ogremain）里对了一遍，看看自己的设置也对，写法上，include也都写在每个cpp前了，也没二到在.h文件里include预编译头。后来网上查查，突然发现忘记添加预编译头对应的cpp文件了。。。一加世界清静了。。<br>------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br>&nbsp; 好吧。。我是二了。。不过回头想想，ogre是怎么做到这一点的呢，ogremain工程里只有一个OgreStableHeader.h，而没有cpp，我对编译这些不太清楚，但依稀觉得precompiled这东西就是先生成一个obj文件包含了我想include的头，而一个obj文件对应一个cpp单元，而没有cpp应该就是没有这个obj所以导致错误，但ogre是怎么做到的呢？求大家解答。
<img src ="http://www.cppblog.com/cty41/aggbug/139009.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cty41/" target="_blank">月下圆舞曲</a> 2011-01-21 12:37 <a href="http://www.cppblog.com/cty41/archive/2011/01/21/139009.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>月初怨语-.-</title><link>http://www.cppblog.com/cty41/archive/2010/07/06/119383.html</link><dc:creator>月下圆舞曲</dc:creator><author>月下圆舞曲</author><pubDate>Tue, 06 Jul 2010 00:13:00 GMT</pubDate><guid>http://www.cppblog.com/cty41/archive/2010/07/06/119383.html</guid><wfw:comment>http://www.cppblog.com/cty41/comments/119383.html</wfw:comment><comments>http://www.cppblog.com/cty41/archive/2010/07/06/119383.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cty41/comments/commentRss/119383.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cty41/services/trackbacks/119383.html</trackback:ping><description><![CDATA[&nbsp;将近要三周没好好写自己的程序了，胸中怒气值有点高...写个怨念文吧。<br>&nbsp; 开始帮兄弟架设个人网站，开始准备拿Wordpress给他弄个模板得了。那家伙非得弄定制的，害得我先学WordPress再学了网页前台编程,（我现在对网页编程人员真的是肃然起敬）。。。我实在没耐心是为了让菜单显示的更规整而来回调css，真挺让人抓狂的。弄了两周还没整好，唉，看来得暑假里慢慢给他弄了。。。<br>&nbsp; 这两天开始弄软件工程的大作业，真佩服咱学校这帮老师啊。。。分析设计个酒吧管理系统，必须要60到80页，需要画一堆图，贴一堆代码。。。最后得打印加刻盘。。我了个去的。。。要是说同学交的作业每份你都认真看的吧，我也没话说。但据上一届的说，老师都是不看的，直接点个页数，大概抽查下就完了。我就真想砸这帮人。。。。今天想想，自己和小时候真不能比了，现在虽然是嘴上骂骂，但实际行动上也不敢违背老师，人是越活越圆滑了。<br><br><br> <img src ="http://www.cppblog.com/cty41/aggbug/119383.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cty41/" target="_blank">月下圆舞曲</a> 2010-07-06 08:13 <a href="http://www.cppblog.com/cty41/archive/2010/07/06/119383.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初探Havok后，和Physx的一点点比较</title><link>http://www.cppblog.com/cty41/archive/2010/06/29/118913.html</link><dc:creator>月下圆舞曲</dc:creator><author>月下圆舞曲</author><pubDate>Tue, 29 Jun 2010 05:52:00 GMT</pubDate><guid>http://www.cppblog.com/cty41/archive/2010/06/29/118913.html</guid><wfw:comment>http://www.cppblog.com/cty41/comments/118913.html</wfw:comment><comments>http://www.cppblog.com/cty41/archive/2010/06/29/118913.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/cty41/comments/commentRss/118913.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cty41/services/trackbacks/118913.html</trackback:ping><description><![CDATA[&nbsp; 博客又好久不更新了，今天上课拿手机正好查Havok的内容，突然发现Havok自从08年5月后对商业用和非商业用的<img src="http://www.cppblog.com/CuteSoft_Client/CuteEditor/images/emcry.gif" align="absmiddle" border="0">游戏开发者是免费的，（以前我一直以为是收费的，甚至不开放给非商业开发者-。-！！被Physx迷惑了，5555）如果是商业用途，价格低于10美金（也就是国内单机游戏的价格），你甚至不用和Intel打招呼就能直接用。高于10美刀的话，也只需要问Intel要个免费授权即可～0～<br>----------------------------分割线----------------------------<br>恩恩恩，我知道，我的题目是比较；鉴于我是个物理引擎小白（只&#8220;看&#8221;过physx），所以不一定能保证准确性，但我尽力保证比较客观的去比较两者。<br>安装：havok提供两个压缩包，一个是SDK库，还有一个是提供给美工的Behaivor Tool。Physx是一个SDK包，不过之前必须装一个SystemSoftware（我记得Physx的GPU加速只支持英伟达自家的显卡）<br>Samples：Havok的实例写的还是挺工整的，附带了基本的注释，基本能保证你明白哪块代码干嘛用的.<br>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;The&nbsp;cache&nbsp;size&nbsp;in&nbsp;bytes&nbsp;is&nbsp;equal&nbsp;to&nbsp;m_buckets&nbsp;*&nbsp;m_slots&nbsp;*&nbsp;m_chunkSize</span><span style="color: #008000;"><br></span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hkaDefaultChunkCacheCinfo&nbsp;cacheCinfo;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cacheCinfo.m_numberOfCachePools&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cacheCinfo.m_cachePools.setSize(&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cacheCinfo.m_cachePools[</span><span style="color: #000000;">0</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cpCinfo[</span><span style="color: #000000;">0</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cacheCinfo.m_cachePools[</span><span style="color: #000000;">1</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cpCinfo[</span><span style="color: #000000;">1</span><span style="color: #000000;">];<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Create&nbsp;a&nbsp;cache&nbsp;only&nbsp;if&nbsp;the&nbsp;number&nbsp;of&nbsp;buckets&nbsp;is&nbsp;nonzero<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Some&nbsp;variants&nbsp;of&nbsp;this&nbsp;demo&nbsp;do&nbsp;not&nbsp;use&nbsp;a&nbsp;cache.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;N.B.&nbsp;This&nbsp;is&nbsp;the&nbsp;default&nbsp;chunk&nbsp;cache&nbsp;which&nbsp;is&nbsp;not&nbsp;threadsafe&nbsp;(but&nbsp;invokes&nbsp;no&nbsp;critical&nbsp;sections<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;so&nbsp;is&nbsp;fastest&nbsp;when&nbsp;used&nbsp;in&nbsp;a&nbsp;single&nbsp;threaded&nbsp;environment).&nbsp;For&nbsp;sharing&nbsp;a&nbsp;cache&nbsp;across<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;multiple&nbsp;threads,&nbsp;the&nbsp;Animation/Animation/Playback/Cache/Multithreaded/hkaMultithreadedChunkCache<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;class&nbsp;is&nbsp;provided&nbsp;-&nbsp;see&nbsp;also&nbsp;the&nbsp;Demo\StandAloneDemos\ConsoleExampleAnimationMT&nbsp;for&nbsp;an&nbsp;example&nbsp;use.</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m_cache&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(&nbsp;cpCinfo[</span><span style="color: #000000;">0</span><span style="color: #000000;">].m_buckets&nbsp;)&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;hkaDefaultChunkCache(&nbsp;cacheCinfo&nbsp;)&nbsp;:&nbsp;HK_NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
相比Physx的代码就差一些，解释性的注释很少。<br>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">_computeMostTouchedActor();<br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;NxVec3&nbsp;relativeVelocity;<br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(_mostTouchedActor&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;NULL&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">_mostTouchedActor</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">isDynamic())<br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;relativeVelocity&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;_bodyActor</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">getLinearVelocity();<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;{<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;relativeVelocity&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;_bodyActor</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">getLinearVelocity()&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;_mostTouchedActor</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">getLinearVelocity();<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;NxQuat&nbsp;rotation&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;_bodyActor</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">getGlobalOrientationQuat();<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;NxQuat&nbsp;global2Local;<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;_localVelocity&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;relativeVelocity;<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;rotation.inverseRotate(_localVelocity);<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">printf("Velocity:&nbsp;%2.3f&nbsp;%2.3f&nbsp;%2.3f\n",&nbsp;_localVelocity.x,&nbsp;_localVelocity.y,&nbsp;_localVelocity.z);</span></div>
文档和教程：API详细程度上粗看差不多，不过貌似Physx没有提供索引功能，而只有搜索；<br>教程上看，我个人更偏好Havok的教程，上面譬如车辆那部分，havok专门划了块Vehicle Kit来讲，里面把物理大概原理什么都讲了，而且带了很多解释图，我觉得这对初学者会很不错。<br><img alt=""  src="http://i965.photobucket.com/albums/ae134/cty41/ha2.jpg"><br><br>Physx的教程更多带的是实例的代码，里面的lesson就对应了一个小程序，不过觉得里面的解释相对havok较少，而且毕竟是word文档，看着比chm的累。。。<br><img alt=""  src="http://i965.photobucket.com/albums/ae134/cty41/phy2.jpg"><br>&nbsp; 我现在有这感觉，在国内而言Physx的名声比Havok要大。但似乎Havok更强大且更易用些。<br>&nbsp; 累了。。睡个午觉去<br><br><img src ="http://www.cppblog.com/cty41/aggbug/118913.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cty41/" target="_blank">月下圆舞曲</a> 2010-06-29 13:52 <a href="http://www.cppblog.com/cty41/archive/2010/06/29/118913.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>模仿学习的困局</title><link>http://www.cppblog.com/cty41/archive/2010/05/31/116772.html</link><dc:creator>月下圆舞曲</dc:creator><author>月下圆舞曲</author><pubDate>Mon, 31 May 2010 00:16:00 GMT</pubDate><guid>http://www.cppblog.com/cty41/archive/2010/05/31/116772.html</guid><wfw:comment>http://www.cppblog.com/cty41/comments/116772.html</wfw:comment><comments>http://www.cppblog.com/cty41/archive/2010/05/31/116772.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/cty41/comments/commentRss/116772.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cty41/services/trackbacks/116772.html</trackback:ping><description><![CDATA[&nbsp; 最近和发财想在毕业前自己再认真写出一款像样的引擎试试，由于之前咱俩用OGRE有快半年了，所以准备先照着OGRE来，RenderSystem的部分由我负责，发财同学负责底层内存分配和数学库。看ogre的代码有2天了，基本是抄抄减减，心里总是压抑的很。自己也安慰过自己，ogre写的很好，如果这些依着葫芦画瓢也能学到很多内容，但自己心里一直担心的是自身的创造力就在这模仿里慢慢死亡了。<br>&nbsp; 昨晚发财喝高了和我讨论String这些基本类型的命名是要加前缀Fa（我们引擎的缩写），还是不加了。我当然是坚持不加了，毕竟用namespcae了。发财却想加，这问题无足轻重，但发财的一句话让我思索到现在：咱要是抄的一模一样有毛意思啊。。。<br>&nbsp; 于是不管前头怎么看不到路，我决定把之前抄ogre的内容全部推倒，自己试着写个渲染系统设计，完全靠自己来一次。这无关乎到别的碎七八糟的东西，只是我不想毕业前最后的作品中没有自己的东西。<br>&nbsp; （写这文章的时候更坚定了这想法）<br>&nbsp;<br><br><img src ="http://www.cppblog.com/cty41/aggbug/116772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cty41/" target="_blank">月下圆舞曲</a> 2010-05-31 08:16 <a href="http://www.cppblog.com/cty41/archive/2010/05/31/116772.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>