﻿<?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++博客-Richard He-文章分类-OGRE</title><link>http://www.cppblog.com/richardhe/category/7539.html</link><description>学无止境!永远学下去!</description><language>zh-cn</language><lastBuildDate>Mon, 04 Aug 2008 10:21:16 GMT</lastBuildDate><pubDate>Mon, 04 Aug 2008 10:21:16 GMT</pubDate><ttl>60</ttl><item><title>用Ogre实现画中画 [ 截图 ] </title><link>http://www.cppblog.com/richardhe/articles/57983.html</link><dc:creator>RichardHe</dc:creator><author>RichardHe</author><pubDate>Mon, 04 Aug 2008 09:22:00 GMT</pubDate><guid>http://www.cppblog.com/richardhe/articles/57983.html</guid><wfw:comment>http://www.cppblog.com/richardhe/comments/57983.html</wfw:comment><comments>http://www.cppblog.com/richardhe/articles/57983.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/richardhe/comments/commentRss/57983.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/richardhe/services/trackbacks/57983.html</trackback:ping><description><![CDATA[在玩一些3D游戏的时候，经常会有画中画的功能，比如&#8220;跑跑卡丁车&#8221;、&#8220;杀手十三&#8221;等等，于是想自己动手试验一下。<br><br>普
通情况下，我们使用单一的摄像机，实现第一人称或者第三人称，有时我们用多个摄像机在单一的窗口中切换视角，比如从第一人称切换到第三人称视角（游戏中屡
见不鲜），而画中画将会同时展现第一人称和第三人称（或者第三人称与第三人称），也就是说同时存在不同的观察点，这就需要多窗口多摄像机分别进行渲染。<br><br>用Ogre实现画中画功能是件比较容易的事情，首先，搭建一个普通的场景，关于这方面的工作<a  href="http://www.ogre3d.org/wiki">www.ogre3d.org/wiki</a>里有详细的教程，不赘述了。<br><br>下面进入关键部分。<br><br>在Ogre里摄像机Camera和视口Viewport是一一对应的关系，普通情况下包含一个摄像机对应一个视口，我们只要添加摄像机和与之对应的视口就OK了！<br><br>我的窗口类里是这样配置Ogre的，基本和教程示例里的一样。<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;BaseApplication::setup(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;mRoot&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Root();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;设置资源</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;setupResources();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;配置渲染窗口</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;carryOn&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;configure();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">carryOn)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;创建场景管理器</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;chooseSceneManager();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;创建摄像机</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;createCamera();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;创建视口</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;createViewports();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;设置缺省&nbsp;mipmap&nbsp;等级</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;TextureManager::getSingleton().setDefaultNumMipmaps(</span><span style="color: #000000;">5</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;创建所有资源监听器（为了加载屏幕）</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;createResourceListener();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;加载资源</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;loadResources();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;创建场景</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;createScene();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;创建帧监听器</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;createFrameListener();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>}</span></div>
<p><br>其中，<span style="color: #000000;">createCamera();<font color="#008000"> <span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;创建摄像机</span></font>&nbsp;&nbsp; 和 </span><span style="color: #000000;">createViewports(); <span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;创建视口 <span style="color: #000000;"><span>是我们需要关心的。<br></span></span><br><span style="color: #000000;">createCamera()：</span></span></span><span style="color: #000000;"><span style="color: #008000;"></span></span></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; font-family: Verdana; background-color: #eeeeee;"><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;BaseApplication::createCamera(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">)<br>{<br>&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;主窗口摄像机</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;mCamera_1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mSceneMgr</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">createCamera(</span><span style="color: #000000;">"</span><span style="color: #000000;">Cam_1</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;mCamera_1</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">setPosition(Vector3(</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">300</span><span style="color: #000000;">));<br>&nbsp;mCamera_1</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">lookAt(Vector3(</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">-</span><span style="color: #000000;">300</span><span style="color: #000000;">));<br>&nbsp;mCamera_1</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">setNearClipDistance(</span><span style="color: #000000;">5</span><span style="color: #000000;">);<br><br>&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;画中画摄像机</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;mCamera_2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mSceneMgr</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">createCamera(</span><span style="color: #000000;">"</span><span style="color: #000000;">Cam_2</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;mCamera_2</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">setPosition(Vector3(</span><span style="color: #000000;">100</span><span style="color: #000000;">,</span><span style="color: #000000;">100</span><span style="color: #000000;">,</span><span style="color: #000000;">300</span><span style="color: #000000;">));<br>&nbsp;mCamera_2</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">lookAt(Vector3(</span><span style="color: #000000;">-</span><span style="color: #000000;">100</span><span style="color: #000000;">,</span><span style="color: #000000;">-</span><span style="color: #000000;">100</span><span style="color: #000000;">,</span><span style="color: #000000;">-</span><span style="color: #000000;">300</span><span style="color: #000000;">));<br>&nbsp;mCamera_2</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">setNearClipDistance(</span><span style="color: #000000;">5</span><span style="color: #000000;">);<br>}</span></div>
<p><br><span style="color: #000000;">createViewports()：<br></span></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; font-family: Verdana; background-color: #eeeeee;"><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;BaseApplication::createViewports(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;主窗口</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;Viewport</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;vp_1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mWindow</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">addViewport( mCamera_1 );<br>&nbsp;&nbsp;&nbsp;&nbsp;vp_1</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">setBackgroundColour( ColourValue(</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">) );<br>&nbsp;&nbsp;&nbsp;&nbsp;mCamera_1</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">setAspectRatio(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Real( vp_1</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">getActualWidth() )&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;Real( vp_1</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">getActualHeight() ) );<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;画中画</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;Viewport</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;vp_2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;mWindow</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">addViewport( mCamera_2, </span><span style="color: #000000;">1</span><span style="color: #000000;">, </span><span style="color: #000000;">0.7</span><span style="color: #000000;">, </span><span style="color: #000000;">0.05</span><span style="color: #000000;">, </span><span style="color: #000000;">0.25</span><span style="color: #000000;">, </span><span style="color: #000000;">0.25 </span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;vp_2</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">setBackgroundColour( ColourValue(</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">0</span><span style="color: #000000;">) );<br>&nbsp;&nbsp;&nbsp;&nbsp;vp_2</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">setOverlaysEnabled(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;mCamera_2</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">setAspectRatio(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Real( vp_2</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">getActualWidth() )&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;Real(vp_2</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">getActualHeight() ) );<br>}</span></div>
<p><span style="color: #000000;"><br>在</span><span style="color: #000000;">addViewport中我们控制画中画视口在主窗口中的位置和大小（注意这里是0～1的取值范围，类似于贴图坐标）<br><br></span>这样就实现了下图所示效果的一半了。<br><br><img  src="http://www.cppblog.com/images/cppblog_com/hitmaen/viv.JPG" alt="" border="0"><br><br>是不是很酷？如果进一步设计成，当触发某一事件时将画中画窗口动态的弹出，那就更酷了！有兴趣的可以试一试：P<br><br>如图所示，我另外还利用了CEGUI给画中画窗口加了个边框，并且带了一个combobox用来控制更多摄像机之间的切换，CEGUI是用脚本来定义界面的，实现也比较简单。有关CEGUI部分的介绍，在ogre wiki上有更详细的教程。<br><br>#end<br>&nbsp;</p>
<p class="postfoot">
posted on 2007-05-22 10:59 <a  href="http://www.cppblog.com/hitmaen/">hitmaen</a> 阅读(762) <a  href="http://www.cppblog.com/hitmaen/archive/2007/05/22/24589.html#Post">评论(2)</a> &nbsp;<a  href="http://www.cppblog.com/hitmaen/admin/EditPosts.aspx?postid=24589">编辑</a>&nbsp;<a  href="http://www.cppblog.com/hitmaen/AddToFavorite.aspx?id=24589">收藏</a> <a  href="http://www.cppblog.com/hitmaen/services/trackbacks/24589.aspx">引用</a>  所属分类: <a  href="http://www.cppblog.com/hitmaen/category/4273.html">Ogre</a>
</p>
<img  src="http://www.cppblog.com/hitmaen/aggbug/24589.html?webview=1" width="1" height="1">
<!--
<rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:description
rdf:about="http://www.cppblog.com/hitmaen/archive/2007/05/22/24589.html"
dc:identifier="http://www.cppblog.com/hitmaen/archive/2007/05/22/24589.html"
dc:title="[ 试验 ] 用ogre实现画中画 [ 截图 ]"
trackback:ping="http://www.cppblog.com/hitmaen/services/trackbacks/24589.aspx" />
</rdf:rdf>
-->
<script type="text/javascript">
//<![cdata[
sys.webforms.pagerequestmanager._initialize('ajaxholder$scriptmanager1', document.getElementById('Form1'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tAjaxHolder$UpdatePanel1'], [], [], 90);
//]]&gt;
</script>
<a name="pagedcomment"></a>
<a name="评论">
</a>
<h3><a name="评论">评论</a></h3>
<a name="评论">
</a>
<h4>
<a name="评论">				</a><a  href="http://www.cppblog.com/hitmaen/archive/2007/05/22/24589.html#24604" title="permalink: re: [ 试验 ] 用Ogre实现画中画 [ 截图 ]">#</a>&nbsp;<a name="24604"></a>re: [ 试验 ] 用Ogre实现画中画 [ 截图 ]
<span>
2007-05-22 16:14
</span>
<a  href="http://www.cppblog.com/wlwlxj/" id="AjaxHolder_Comments_CommentList_ctl00_NameLink" target="_blank">万连文</a>
</h4>
<p>
鹰眼，小地图？？&nbsp;&nbsp;<a  href="http://www.cppblog.com/hitmaen/archive/2007/05/22/24589.html#post" onclick="'return" SetReplyAuhor("万连文")'>回复</a>&nbsp;&nbsp;<a  href="http://www.cppblog.com/comment?author=%e4%b8%87%e8%bf%9e%e6%96%87" title="查看该作者发表过的评论" target="_blank">更多评论</a>
&nbsp;&nbsp;
</p>
<h4>
<a  href="http://www.cppblog.com/hitmaen/archive/2007/05/22/24589.html#24623" title="permalink: re: [ 试验 ] 用Ogre实现画中画 [ 截图 ]">#</a>&nbsp;<a name="24623"></a>re: [ 试验 ] 用Ogre实现画中画 [ 截图 ]<a name="Post"></a>
<span>
2007-05-22 19:05
</span>
<a  href="http://www.cppblog.com/hitmaen/" id="AjaxHolder_Comments_CommentList_ctl01_NameLink" target="_blank">hitmaen</a>
</h4>
@万连文
<br>鹰眼是什么？不是指小地图，玩一玩跑跑卡丁车就明白我说的画中画是什么了&nbsp;&nbsp;<a  href="http://www.cppblog.com/hitmaen/archive/2007/05/22/24589.html#post" onclick="'return" SetReplyAuhor("hitmaen")'>回复</a>&nbsp;&nbsp;<a  href="http://www.cppblog.com/comment?author=hitmaen" title="查看该作者发表过的评论" target="_blank">更多评论</a>
&nbsp; <br><img src ="http://www.cppblog.com/richardhe/aggbug/57983.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/richardhe/" target="_blank">RichardHe</a> 2008-08-04 17:22 <a href="http://www.cppblog.com/richardhe/articles/57983.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Overlay中文显示</title><link>http://www.cppblog.com/richardhe/articles/57981.html</link><dc:creator>RichardHe</dc:creator><author>RichardHe</author><pubDate>Mon, 04 Aug 2008 09:02:00 GMT</pubDate><guid>http://www.cppblog.com/richardhe/articles/57981.html</guid><wfw:comment>http://www.cppblog.com/richardhe/comments/57981.html</wfw:comment><comments>http://www.cppblog.com/richardhe/articles/57981.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/richardhe/comments/commentRss/57981.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/richardhe/services/trackbacks/57981.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: '微软雅黑','sans-serif';">近日很多朋友咨询<span lang="EN-US">Overlay</span>中文显示问题，回答的多了想索性再写个文档算了，放在网上共享，于是就有了本篇。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: '微软雅黑','sans-serif';">在<span lang="EN-US">Ogre1.2.5</span>版本中，通过与<span lang="EN-US">Ogre</span>官方论坛的开发者讨论实现了<span lang="EN-US">Overlay</span>的中文显示，当初的实现非常的怪异，具体的实现可以参见<span lang="EN-US">Ogre</span>官方论坛。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="text-indent: 21pt;"><span style="font-family: '微软雅黑','sans-serif';">随着<span lang="EN-US">Ogre</span>的更新，现在<span lang="EN-US">Ogre</span>已经发布了<span lang="EN-US">1.4.7</span>，<span lang="EN-US">1.4</span>系列版本有一个重要的改进，就是加入了<span lang="EN-US">UTFString</span>，这为<span lang="EN-US">Ogre</span>中文显示予以很大的帮助。为了便于演示，我直接使用<span lang="EN-US">Ogre</span>自带的<span lang="EN-US">Overlay</span>，也就是大家熟悉的<span lang="EN-US">DebugOverlay</span>，测试工程我选择<span lang="EN-US">Demo_ParticleFX</span>，选择其他的也没有关系。现在编译它，运行后得到下图：<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype></span><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';"><img  src="http://images.cnblogs.com/cnblogs_com/gogoplayer/Ogre/overlay_eng.JPG" alt="" width="808" border="0" height="634"><br>
图的最左下角显示的就是英文<span lang="EN-US">DebugOverlay</span>，接下来我们的任务就是把它编程中文的，<span lang="EN-US">^_^</span>。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="text-indent: 21pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US">Overlay</span><span style="font-family: '微软雅黑','sans-serif';">中文化操作步骤如下<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoListParagraph" style="margin-left: 42pt; text-indent: -21pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>1.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: '微软雅黑','sans-serif';">打开<span lang="EN-US">OgreSDK\media\packs\</span></span><span lang="EN-US"> </span><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US">OgreCore.zip</span><span style="font-family: '微软雅黑','sans-serif';">。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoListParagraph" style="margin-left: 42pt; text-indent: -21pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>2.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: '微软雅黑','sans-serif';">打开<span lang="EN-US">C:\WINDOWS\Fonts</span>，把<span lang="EN-US">simhei.ttf</span>添加到<span lang="EN-US">OgreCore.zip</span>，（什么，没有<span lang="EN-US">simhei.ttf</span>这个文件，那就还其他的中文<span lang="EN-US">ttf</span>字体吧）。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoListParagraph" style="margin-left: 42pt; text-indent: -21pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>3.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: '微软雅黑','sans-serif';">打开<span lang="EN-US">OgreCore.zip</span>中的<span lang="EN-US">Ogre.fontdef</span>，里面有<span lang="EN-US">BlueHighway</span>这个字体定义块，在他的下面添加我们的<span lang="EN-US">SimHei</span>，<span lang="EN-US">code_points</span>里面的一大堆数字看不明白没关系，随后文章会解释。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US">SimHei<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US">{<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>type <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>truetype<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>source <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>simhei.ttf<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>size <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>16<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>resolution <span>&nbsp; </span>96<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>code_points
33-166 24403-24403 21069-21069 24103-24103 36895-36895 29575-29575
24179-24179 22343-22343 26368-26368 39640-39640 20302-20302 19977-19977
35282-35282 24418-24418 25968-25968 37327-37327 25209-25209 27425-27425
<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 42pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US">}<o:p></o:p></span></p>
<p class="MsoListParagraph" style="margin-left: 42pt; text-indent: -21pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>4.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: '微软雅黑','sans-serif';">打开<span lang="EN-US">OgreCore.zip</span>中的<span lang="EN-US">OgreDebugPanel.overlay</span>，把<span lang="EN-US">BlueHighway</span>全部替换成<span lang="EN-US">SimHei</span>，我们要使用中文字体了，嘿嘿。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoListParagraph" style="margin-left: 42pt; text-indent: -21pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>5.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: '微软雅黑','sans-serif';">修改完成后，确保所做的修改已经保存到<span lang="EN-US">OgreCore.zip</span>。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoListParagraph" style="margin-left: 42pt; text-indent: -21pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>6.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: '微软雅黑','sans-serif';">进入<span lang="EN-US">Ogre</span>解决方案，打开文件<span lang="EN-US">ExampleFrameListener.h</span>，把<span lang="EN-US">54-59</span>行的代码替换如下：<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">static</span> String currFps = <span style="color: #a31515;">"Current FPS: "</span>;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">static</span> String avgFps = <span style="color: #a31515;">"Average FPS: "</span>;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">static</span> String bestFps = <span style="color: #a31515;">"Best FPS: "</span>;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">static</span> String worstFps = <span style="color: #a31515;">"Worst FPS: "</span>;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">static</span> String tris = <span style="color: #a31515;">"Triangle Count: "</span>;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-align: left;" align="left"><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">static</span> String batches = <span style="color: #a31515;">"Batch Count: "</span>;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">static</span> DisplayString currFps = L<span style="color: #a31515;">"</span></span><span style="font-size: 9pt; color: #a31515; font-family: '微软雅黑','sans-serif';">当前帧速率<span lang="EN-US">: "</span></span><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US">;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">static</span> DisplayString avgFps = L<span style="color: #a31515;">"</span></span><span style="font-size: 9pt; color: #a31515; font-family: '微软雅黑','sans-serif';">平均帧速率<span lang="EN-US">: "</span></span><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US">;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">static</span> DisplayString bestFps = L<span style="color: #a31515;">"</span></span><span style="font-size: 9pt; color: #a31515; font-family: '微软雅黑','sans-serif';">最高帧速率<span lang="EN-US">: "</span></span><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US">;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">static</span> DisplayString worstFps = L<span style="color: #a31515;">"</span></span><span style="font-size: 9pt; color: #a31515; font-family: '微软雅黑','sans-serif';">最低帧速率<span lang="EN-US">: "</span></span><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US">;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">static</span> DisplayString tris = L<span style="color: #a31515;">"</span></span><span style="font-size: 9pt; color: #a31515; font-family: '微软雅黑','sans-serif';">三角形数量<span lang="EN-US">: "</span></span><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US">;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: blue;">static</span> DisplayString batches = L<span style="color: #a31515;">"</span></span><span style="font-size: 9pt; color: #a31515; font-family: '微软雅黑','sans-serif';">批次<span lang="EN-US">: "</span></span><span style="font-size: 9pt; font-family: '微软雅黑','sans-serif';" lang="EN-US">;</span><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoListParagraph" style="margin-left: 42pt; text-indent: -21pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><span>7.<span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: '微软雅黑','sans-serif';">最后重新编译工程，下面是我运行的截图，是不是已经显示中文了，<span lang="EN-US">^_^</span>。<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin-left: 21pt; text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US"><span><img  src="http://images.cnblogs.com/cnblogs_com/gogoplayer/Ogre/overlay_chinese.JPG" alt="" width="808" border="0" height="634"><br>
</span></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-size: 10.5pt; font-family: '微软雅黑','sans-serif';">现在再来看看<span lang="EN-US">SimHei</span>中的<span lang="EN-US">code_points</span>是如何生成的，这个可以参考我上次写的这篇文章<span lang="EN-US"><a  href="http://www.cnblogs.com/gogoplayer/archive/2008/05/09/1189795.html">http://www.cnblogs.com/gogoplayer/archive/2008/05/09/1189795.html</a></span>，至此，实现<span lang="EN-US">Overlay</span>中文显示。</span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';">转载请注明出处：<span lang="EN-US"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';">作者：<span lang="EN-US">gogoplayer<o:p></o:p></span></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US">E-mail : gogoplayer@163.com<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: left;" align="left"><span style="font-family: '微软雅黑','sans-serif';" lang="EN-US">QQ : 78939328<o:p></o:p></span></p>
<span style="font-size: 10.5pt; font-family: 'calibri','sans-serif';" lang="EN-US"><a  href="http://www.gogoplayer.com.cn/"><span style="font-family: '微软雅黑','sans-serif';">http://www.gogoplayer.com.cn</span></a></span><img src ="http://www.cppblog.com/richardhe/aggbug/57981.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/richardhe/" target="_blank">RichardHe</a> 2008-08-04 17:02 <a href="http://www.cppblog.com/richardhe/articles/57981.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ogre命令行工具包使用说明</title><link>http://www.cppblog.com/richardhe/articles/57669.html</link><dc:creator>RichardHe</dc:creator><author>RichardHe</author><pubDate>Thu, 31 Jul 2008 12:12:00 GMT</pubDate><guid>http://www.cppblog.com/richardhe/articles/57669.html</guid><wfw:comment>http://www.cppblog.com/richardhe/comments/57669.html</wfw:comment><comments>http://www.cppblog.com/richardhe/articles/57669.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/richardhe/comments/commentRss/57669.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/richardhe/services/trackbacks/57669.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="font-size: 22pt;" lang="EN-US"><font face="Times New Roman">Ogre</font></span><span style="font-size: 22pt; font-family: 宋体;">命令行工具包使用说明</span><span style="font-size: 22pt;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><font size="2"><span style="font-family: 宋体;">本文档由</span><font face="Times New Roman"> </font><span style="font-family: 宋体;">自由骑士笃志</span><font face="Times New Roman"> </font><span style="font-family: 宋体;">翻译整理</span><span lang="EN-US"><font face="Times New Roman">,</font></span><span style="font-family: 宋体;">版权属于</span><span lang="EN-US"><font face="Times New Roman">OgreTeam</font></span><span style="font-family: 宋体;">。转载请包含本行信息。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="left"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">这个工具包包含了一些对</span><span lang="EN-US"><font face="Times New Roman">Ogre</font></span><span style="font-family: 宋体;">资源文件进行操作的预处理命令行工具。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">它包括</span><span lang="EN-US"><font face="Times New Roman">OgreXMLConveter, OgreMeshUpgrade, OgreMaterialUpgrade</font></span><span style="font-family: 宋体;">和</span><span lang="EN-US"><font face="Times New Roman">MeshMagick</font></span><span style="font-family: 宋体;">。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">您可以在<a  href="http://downloads.sourceforge.net/ogre/OgreCommandLineTools_v1.4.7.msi">这里</a>获得其</span><span lang="EN-US"><font face="Times New Roman">WindowsV<st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">1.4.7</st1:chsdate></font></span><span style="font-family: 宋体;">版本的下载</span><span lang="EN-US"><font face="Times New Roman">,</font></span><span style="font-family: 宋体;">或者在<a  href="http://downloads.sourceforge.net/ogre/OgreEihortToolsOSX_1.4.0.zip?downloads">这里</a>获取其</span><span lang="EN-US"><font face="Times New Roman">MacOSXV1.4.0</font></span><span style="font-family: 宋体;">版本的下载。以上两个版本均是</span><st1:chsdate year="2008" month="3" day="6" islunardate="False" isrocdate="False" w:st="on"><span lang="EN-US"><font face="Times New Roman">2008</font></span><span style="font-family: 宋体;">年</span><span lang="EN-US"><font face="Times New Roman">3</font></span><span style="font-family: 宋体;">月</span><span lang="EN-US"><font face="Times New Roman">6</font></span><span style="font-family: 宋体;">日</span></st1:chsdate><span style="font-family: 宋体;">的版本，即译者进行翻译的版本，若需要更多信息和更新的版本，可以访问</span><span lang="EN-US"><font face="Times New Roman"><a  href="http://www.ogre3d.org/">Ogre</a></font></span><span style="font-family: 宋体;"><a  href="javascript:void(0);/*1210036509359*/">官方</a>。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;"></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体;"></span><span lang="EN-US"><font size="4">.[OgreXMLConveter]</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">OgreXML</font></span><span style="font-family: 宋体;">转换器能够将</span><span lang="EN-US"><font face="Times New Roman"> .mesh </font></span><span style="font-family: 宋体;">模型网格文件</span><font face="Times New Roman"> </font><span style="font-family: 宋体;">和</span><span lang="EN-US"><font face="Times New Roman"> .skeleton </font></span><span style="font-family: 宋体;">骨骼文件</span><font face="Times New Roman"> </font><span style="font-family: 宋体;">由</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="font-family: 宋体;">格式转换为二进制格式，同时可以将其二进制格式转换回</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="font-family: 宋体;">格式。它同时也允许你在将</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="font-family: 宋体;">格式转换为二进制格式时设置</span><span lang="EN-US"><font face="Times New Roman">LOD</font></span><span style="font-family: 宋体;">层级信息。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">如果你的</span><span lang="EN-US"><font face="Times New Roman">Ogre</font></span><span style="font-family: 宋体;">脚本资源中原本使用的就是</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="font-family: 宋体;">格式文件的话，那么本工具则是</span><span lang="EN-US"><font face="Times New Roman">Ogre</font></span><span style="font-family: 宋体;">运行时必须的。所以你能够在</span><span lang="EN-US"><font face="Times New Roman">OgreSource</font></span><span style="font-family: 宋体;">包的</span><span lang="EN-US"><font face="Times New Roman">Tools/XMLConverter</font></span><span style="font-family: 宋体;">中找到它。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><strong><span style="font-family: 宋体;">使用方法</span></strong><span style="font-family: 宋体;">：</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">OgreXMLConverter </font></span><span style="font-family: 宋体;">操作选项</span><font face="Times New Roman"> </font><span style="font-family: 宋体;">源文件路径</span><font face="Times New Roman"> </font><span style="font-family: 宋体;">目标文件路径</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体;"><font size="3">有用的操作选项包括：</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-i<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp;</span>= <span>&nbsp;</span></font></span><span style="font-family: 宋体;">控制与命令行。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-l<span>&nbsp; </span>nLODNum<span>&nbsp; </span>= </font></span><span style="font-family: 宋体;">指定总</span><span lang="EN-US"><font face="Times New Roman">LOD</font></span><span style="font-family: 宋体;">层级</span><span lang="EN-US"><font face="Times New Roman"> ( </font></span><span style="font-family: 宋体;">该项仅在</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="font-family: 宋体;">格式转换为</span><span lang="EN-US"><font face="Times New Roman">Mesh</font></span><span style="font-family: 宋体;">格式时有效</span><span lang="EN-US"><font face="Times New Roman"> )</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-d<span>&nbsp; </span>nLODDis<span>&nbsp; </span>= </font></span><span style="font-family: 宋体;">指定</span><span lang="EN-US"><font face="Times New Roman">LOD</font></span><span style="font-family: 宋体;">层级间的距离增幅</span><span lang="EN-US"><font face="Times New Roman"> ( </font></span><span style="font-family: 宋体;">该项仅在</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="font-family: 宋体;">格式转换为</span><span lang="EN-US"><font face="Times New Roman">Mesh</font></span><span style="font-family: 宋体;">格式时有效</span><span lang="EN-US"><font face="Times New Roman"> )</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-p<span>&nbsp; </span>nLODPer<span>&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">指定每两级</span><span lang="EN-US"><font face="Times New Roman">LOD</font></span><span style="font-family: 宋体;">层之间三角面减少百分比</span><span lang="EN-US"><font face="Times New Roman"> ( </font></span><span style="font-family: 宋体;">该项仅在</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="font-family: 宋体;">格式转换为</span><span lang="EN-US"><font face="Times New Roman">Mesh</font></span><span style="font-family: 宋体;">格式时有效</span><span lang="EN-US"><font face="Times New Roman"> )</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-f<span>&nbsp; </span>nLODNum<span>&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">指定两级</span><span lang="EN-US"><font face="Times New Roman">LOD</font></span><span style="font-family: 宋体;">层之间的固定顶点减少量</span><span lang="EN-US"><font face="Times New Roman"> ( </font></span><span style="font-family: 宋体;">该项仅在</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="font-family: 宋体;">格式转换为</span><span lang="EN-US"><font face="Times New Roman">Mesh</font></span><span style="font-family: 宋体;">格式时有效</span><span lang="EN-US"><font face="Times New Roman"> )</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-e<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">关闭模版阴影的</span><span lang="EN-US"><font face="Times New Roman">edge</font></span><span style="font-family: 宋体;">表</span><span lang="EN-US"><font face="Times New Roman"> ( </font></span><span style="font-family: 宋体;">当使用模版阴影时该项才有效</span><span lang="EN-US"><font face="Times New Roman"> )</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-r<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">关闭</span><span lang="EN-US"><font face="Times New Roman">Ogre</font></span><span style="font-family: 宋体;">推荐的顶点缓冲区格式。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-t<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">为法线贴图生成切线信息</span><span lang="EN-US"><font face="Times New Roman"> ( </font></span><span style="font-family: 宋体;">当使用法线贴图时该项才有效</span><span lang="EN-US"><font face="Times New Roman"> )</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-o<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">关闭冗余关键桢和运动轨迹的剔除</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-d3d<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">优先使用</span><span lang="EN-US"><font face="Times New Roman">D3D</font></span><span style="font-family: 宋体;">进行颜色格式的填充</span><span lang="EN-US"><font face="Times New Roman"> ( </font></span><span style="font-family: 宋体;">在</span><span lang="EN-US"><font face="Times New Roman">Windows</font></span><span style="font-family: 宋体;">平台中默认该项开启</span><span lang="EN-US"><font face="Times New Roman"> )</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-gl<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">优先使用</span><span lang="EN-US"><font face="Times New Roman">GL</font></span><span style="font-family: 宋体;">进行颜色格式的填充</span><span lang="EN-US"><font face="Times New Roman"> ( </font></span><span style="font-family: 宋体;">在非</span><span lang="EN-US"><font face="Times New Roman">Windows</font></span><span style="font-family: 宋体;">平台中默认该项开启</span><span lang="EN-US"><font face="Times New Roman"> )</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-E endian<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">设置</span><span lang="EN-US"><font face="Times New Roman">endian</font></span><span style="font-family: 宋体;">模式，可以选择</span><span lang="EN-US"><font face="Times New Roman">big, little </font></span><span style="font-family: 宋体;">或</span><font face="Times New Roman"> <span lang="EN-US">native ( </span></font><span style="font-family: 宋体;">默认为</span><span lang="EN-US"><font face="Times New Roman">native )</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-q<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">轻量模式，减少输出。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-log filename<span>&nbsp;&nbsp; </span>=<span>&nbsp; </span>Log</font></span><span style="font-family: 宋体;">文件名称。（默认为</span><span lang="EN-US"><font face="Times New Roman">OgreXMLConverter.log</font></span><span style="font-family: 宋体;">）</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;"></span></font><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="4">.[OgreMeshUpgrade]</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">这个工具能够将你的任何老版本的</span><span lang="EN-US"><font face="Times New Roman"> .mesh </font></span><span style="font-family: 宋体;">文件更新到当前版本的</span><span lang="EN-US"><font face="Times New Roman"> .mesh </font></span><span style="font-family: 宋体;">文件。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">你可以在</span><span lang="EN-US"><font face="Times New Roman">Ogre.log</font></span><span style="font-family: 宋体;">文件中得到</span><span lang="EN-US"><font face="Times New Roman">.mesh</font></span><span style="font-family: 宋体;">文件的版本信息。一般来说，</span><span lang="EN-US"><font face="Times New Roman">Ogre</font></span><span style="font-family: 宋体;">可以运行老版本的</span><span lang="EN-US"><font face="Times New Roman">.mesh</font></span><span style="font-family: 宋体;">文件，但是性能上会有一些差别。如果你更新了</span><span lang="EN-US"><font face="Times New Roman">Ogre</font></span><span style="font-family: 宋体;">的其他部分，你尽量应当将</span><span lang="EN-US"><font face="Times New Roman">.mesh</font></span><span style="font-family: 宋体;">文件更新为同样的版本。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><strong><span style="font-family: 宋体;">使用方法</span></strong><span style="font-family: 宋体;">：</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">OgreMeshUpgrate </font></span><span style="font-family: 宋体;">操作选项</span><font face="Times New Roman"> </font><span style="font-family: 宋体;">源文件路径</span><font face="Times New Roman"> </font><span style="font-family: 宋体;">目标文件路径</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体;"><font size="3">有用的操作选项包括：</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-i<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">控制与命令行。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-l<span>&nbsp; </span>nLODNum<span>&nbsp; </span>= </font></span><span style="font-family: 宋体;">指定总</span><span lang="EN-US"><font face="Times New Roman">LOD</font></span><span style="font-family: 宋体;">层级</span><span lang="EN-US"><font face="Times New Roman"> ( </font></span><span style="font-family: 宋体;">该项仅在</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="font-family: 宋体;">格式转换为</span><span lang="EN-US"><font face="Times New Roman">Mesh</font></span><span style="font-family: 宋体;">格式时有效</span><span lang="EN-US"><font face="Times New Roman"> )</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-d<span>&nbsp; </span>nLODDis<span>&nbsp; </span>= </font></span><span style="font-family: 宋体;">指定</span><span lang="EN-US"><font face="Times New Roman">LOD</font></span><span style="font-family: 宋体;">层级间的距离增幅</span><span lang="EN-US"><font face="Times New Roman"> ( </font></span><span style="font-family: 宋体;">该项仅在</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="font-family: 宋体;">格式转换为</span><span lang="EN-US"><font face="Times New Roman">Mesh</font></span><span style="font-family: 宋体;">格式时有效</span><span lang="EN-US"><font face="Times New Roman"> )</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-p<span>&nbsp; </span>nLODPer<span>&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">指定每两级</span><span lang="EN-US"><font face="Times New Roman">LOD</font></span><span style="font-family: 宋体;">层之间三角面减少百分比</span><span lang="EN-US"><font face="Times New Roman"> ( </font></span><span style="font-family: 宋体;">该项仅在</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="font-family: 宋体;">格式转换为</span><span lang="EN-US"><font face="Times New Roman">Mesh</font></span><span style="font-family: 宋体;">格式时有效</span><span lang="EN-US"><font face="Times New Roman"> )</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-f<span>&nbsp; </span>nLODNum<span>&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">指定两级</span><span lang="EN-US"><font face="Times New Roman">LOD</font></span><span style="font-family: 宋体;">层之间的固定顶点减少量</span><span lang="EN-US"><font face="Times New Roman"> ( </font></span><span style="font-family: 宋体;">该项仅在</span><span lang="EN-US"><font face="Times New Roman">XML</font></span><span style="font-family: 宋体;">格式转换为</span><span lang="EN-US"><font face="Times New Roman">Mesh</font></span><span style="font-family: 宋体;">格式时有效</span><span lang="EN-US"><font face="Times New Roman"> )</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-e<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">关闭模版阴影的</span><span lang="EN-US"><font face="Times New Roman">edge</font></span><span style="font-family: 宋体;">表</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-r<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">关闭</span><span lang="EN-US"><font face="Times New Roman">Ogre</font></span><span style="font-family: 宋体;">推荐的顶点缓冲区格式。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-t<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">为法线贴图生成切线信息</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-d3d<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">转换为</span><span lang="EN-US"><font face="Times New Roman">D3D</font></span><span style="font-family: 宋体;">颜色格式</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-gl<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">转换为</span><span lang="EN-US"><font face="Times New Roman">GL</font></span><span style="font-family: 宋体;">颜色格式</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-srcd3d<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">老版本的</span><span lang="EN-US"><font face="Times New Roman">mesh</font></span><span style="font-family: 宋体;">文件为</span><span lang="EN-US"><font face="Times New Roman">D3D</font></span><span style="font-family: 宋体;">颜色格式</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-srcgl<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">老版本的</span><span lang="EN-US"><font face="Times New Roman">mesh</font></span><span style="font-family: 宋体;">文件为</span><span lang="EN-US"><font face="Times New Roman">GL</font></span><span style="font-family: 宋体;">颜色格式</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">-E endian<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>=<span>&nbsp; </span></font></span><span style="font-family: 宋体;">设置</span><span lang="EN-US"><font face="Times New Roman">endian</font></span><span style="font-family: 宋体;">模式，可以选择</span><span lang="EN-US"><font face="Times New Roman">big, little </font></span><span style="font-family: 宋体;">或</span><span lang="EN-US"><font face="Times New Roman"> native ( </font></span><span style="font-family: 宋体;">默认为</span><span lang="EN-US"><font face="Times New Roman">native )</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><font size="3"><span style="font-family: 宋体;">注意：</span><span lang="EN-US"><o:p></o:p></span></font></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">这个工具现在允许你自定义重组你的</span><span lang="EN-US"><font face="Times New Roman">mesh</font></span><span style="font-family: 宋体;">网格文件的顶点格式。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">如果你想更新</span><st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"><span lang="EN-US"><font face="Times New Roman">0.15.0</font></span></st1:chsdate><span style="font-family: 宋体;">之前的任意一个版本的</span><span lang="EN-US"><font face="Times New Roman">mesh</font></span><span style="font-family: 宋体;">，那么在该程序运行时会问你是否希望进行顶点格式的重组，你输入</span><span lang="EN-US"><font face="Times New Roman">&#8217;y&#8217;</font></span><span style="font-family: 宋体;">就可以了。在</span><span lang="EN-US"><font face="Times New Roman">0.15.0</font></span><span style="font-family: 宋体;">版本之后的</span><span lang="EN-US"><font face="Times New Roman">mesh</font></span><span style="font-family: 宋体;">在更新时会允许你对该</span><span lang="EN-US"><font face="Times New Roman">mesh</font></span><span style="font-family: 宋体;">做更多的操作：例如，你可以对每个独立模型节点的顶点指定不同的顶点结构，你既可以自定义顶点结构，也可以使用</span><span lang="EN-US"><font face="Times New Roman">&#8217;automatic&#8217;</font></span><span style="font-family: 宋体;">自动模式。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="4"><span lang="EN-US"><o:p></o:p></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="4"><span lang="EN-US"><o:p>.</o:p></span><span lang="EN-US">[OgreMaterialUpgrade]</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">这个工具能够将你的任何老版本的</span><span lang="EN-US"><font face="Times New Roman"> .material </font></span><span style="font-family: 宋体;">材质文件更新到当前版本的</span><span lang="EN-US"><font face="Times New Roman"> .material </font></span><span style="font-family: 宋体;">材质文件。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">值得注意的是这个自动更新是不会加入一些新的脚本语法功能的，这么说你可能不好理解。（例子：</span><font face="Times New Roman"> <span lang="EN-US">&#8220;scene_blend add&#8221;</span></font><span style="font-family: 宋体;">这句可能会被更新为</span><span lang="EN-US"><font face="Times New Roman">&#8221;scene_blend one one&#8221;</font></span><span style="font-family: 宋体;">，因为</span><span lang="EN-US"><font face="Times New Roman">&#8221;add&#8221;</font></span><span style="font-family: 宋体;">的底层实际上就是</span><span lang="EN-US"><font face="Times New Roman">&#8221;scene_blend one one&#8221;</font></span><span style="font-family: 宋体;">，自动更新会将一些高级语法更新为比较直接底层的语法）</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">另外，这个工具仅对</span><st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on"><span lang="EN-US"><font face="Times New Roman">0.13.0</font></span></st1:chsdate><span style="font-family: 宋体;">版本以下的材质脚本更新有效，对</span><span lang="EN-US"><font face="Times New Roman">0.13.0</font></span><span style="font-family: 宋体;">版本以后的材质脚本是没有必要进行更新的。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><font size="3"><span style="font-family: 宋体;">使用方法：</span><span lang="EN-US"><o:p></o:p></span></font></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">OgreMaterialUpgrade </font></span><span style="font-family: 宋体;">源文件路径</span><font face="Times New Roman"> </font><span style="font-family: 宋体;">目标文件路径</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="4"><span lang="EN-US"><o:p>&nbsp;.</o:p></span><span lang="EN-US">[MeshMagick]</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="3" face="Times New Roman">Copyright 2007 by Daniel Wickert</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">这个工具是对</span><span lang="EN-US"><font face="Times New Roman">mesh</font></span><span style="font-family: 宋体;">文件和</span><span lang="EN-US"><font face="Times New Roman">skeleton</font></span><span style="font-family: 宋体;">文件进行一些处理的工具。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体;"><font size="3">大致包括以下功能：</font></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">Info<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>= </font></span><span style="font-family: 宋体;">输出</span><span lang="EN-US"><font face="Times New Roman">mesh</font></span><span style="font-family: 宋体;">的信息。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">Meshmerge<span>&nbsp;&nbsp; </span>= </font></span><span style="font-family: 宋体;">将多个</span><span lang="EN-US"><font face="Times New Roman">mesh</font></span><span style="font-family: 宋体;">合并为一个</span><span lang="EN-US"><font face="Times New Roman">mesh</font></span><span style="font-family: 宋体;">文件</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">rename <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>= </font></span><span style="font-family: 宋体;">重命名</span><span lang="EN-US"><font face="Times New Roman">mesh</font></span><span style="font-family: 宋体;">和</span><span lang="EN-US"><font face="Times New Roman">skeleton</font></span><span style="font-family: 宋体;">的不同元件</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">transform<span>&nbsp;&nbsp;&nbsp;&nbsp; </span>= </font></span><span style="font-family: 宋体;">旋转，缩放一个</span><span lang="EN-US"><font face="Times New Roman">mesh</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><font size="3"><span style="font-family: 宋体;">使用方式：</span><span lang="EN-US"><o:p></o:p></span></font></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">MeshMagick &#8211;help=</font></span><span style="font-family: 宋体;">工具名</span><font face="Times New Roman"> </font><span style="font-family: 宋体;">可以获得更多相关信息。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="3">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="4"><span lang="EN-US"><o:p>.</o:p></span><span lang="EN-US">[</span><font face="Arial"><span style="font-family: 宋体;">译者笃志补充说明</span><span lang="EN-US">]</span></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">1</font></span><span style="font-family: 宋体;">：除</span><span lang="EN-US"><font face="Times New Roman">MeshMagick</font></span><span style="font-family: 宋体;">该工具外，其他三种工具，使用方式都可以是：将源资源文件拖拽到工具的</span><span lang="EN-US"><font face="Times New Roman">exe</font></span><span style="font-family: 宋体;">图标上。因为更新程序会将源文件覆盖，所以推荐做下备份后再更新。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">2</font></span><span style="font-family: 宋体;">：您可以写批处理文件对其进行使用。格式即为上面的使用方式。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">举例：新建一个文本文件</span><span lang="EN-US"><font face="Times New Roman">test.txt </font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 31.5pt;"><font size="3"><span style="font-family: 宋体;">编辑内容为</span><span lang="EN-US"><font face="Times New Roman"> OgreMeshUpgrate &#8211;d3d &#8211;l 4 &#8211;d 500 &#8211;p 30 E:\Ogre\Media\TestSrc.xml F:\Temp\TestDest.mesh</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 31.5pt;"><font size="3"><span style="font-family: 宋体;">修改文本后缀名为</span><span lang="EN-US"><font face="Times New Roman">test.bat</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 31.5pt;"><font size="3"><span style="font-family: 宋体;">将该批处理文件与</span><span lang="EN-US"><font face="Times New Roman">OgreMeshUpgrate.exe</font></span><span style="font-family: 宋体;">放置同一目录下，运行</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 31.5pt;"><font size="3"><span style="font-family: 宋体;">则会自动将</span><span lang="EN-US"><font face="Times New Roman">E:\Ogre\Media\TestSrc.xml</font></span><span style="font-family: 宋体;">文件转换为</span><span lang="EN-US"><font face="Times New Roman">F:\Temp\TestDest.mesh</font></span><span style="font-family: 宋体;">文件，同时开启了</span><span lang="EN-US"><font face="Times New Roman">4</font></span><span style="font-family: 宋体;">层</span><span lang="EN-US"><font face="Times New Roman">Lod</font></span><span style="font-family: 宋体;">，</span><span lang="EN-US"><font face="Times New Roman">Lod</font></span><span style="font-family: 宋体;">间距为</span><span lang="EN-US"><font face="Times New Roman">500</font></span><span style="font-family: 宋体;">象素，每一级间面数差距为</span><span lang="EN-US"><font face="Times New Roman">30%</font></span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">3</font></span><span style="font-family: 宋体;">：</span><span lang="EN-US"><font face="Times New Roman">OgreMeshUpgrate</font></span><span style="font-family: 宋体;">工具推荐使用</span><span lang="EN-US"><font face="Times New Roman">automatic</font></span><span style="font-family: 宋体;">自动模式顶点格式，效率会比较高，并且省去不少麻烦。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US"><font face="Times New Roman">4</font></span><span style="font-family: 宋体;">：</span><span lang="EN-US"><font face="Times New Roman">MeshMagick</font></span><span style="font-family: 宋体;">工具不推荐使用。本身功能有限，而且长期无人维护，对新的</span><span lang="EN-US"><font face="Times New Roman">mesh</font></span><span style="font-family: 宋体;">支持不好。</span></font></p><img src ="http://www.cppblog.com/richardhe/aggbug/57669.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/richardhe/" target="_blank">RichardHe</a> 2008-07-31 20:12 <a href="http://www.cppblog.com/richardhe/articles/57669.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ogre中的碰撞检测(转)</title><link>http://www.cppblog.com/richardhe/articles/56945.html</link><dc:creator>RichardHe</dc:creator><author>RichardHe</author><pubDate>Wed, 23 Jul 2008 07:28:00 GMT</pubDate><guid>http://www.cppblog.com/richardhe/articles/56945.html</guid><wfw:comment>http://www.cppblog.com/richardhe/comments/56945.html</wfw:comment><comments>http://www.cppblog.com/richardhe/articles/56945.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/richardhe/comments/commentRss/56945.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/richardhe/services/trackbacks/56945.html</trackback:ping><description><![CDATA[<div id="blog_text" class="cnt">
<p>原创  韩举<br>
<a  href="http://www.hjpdiy.com/">http://www.hjpdiy.com</a></p>
<p>Ogre采用树桩管理场景中的各种"元素"(摄像机、灯光、物体等)，所有的东西都挂在"树"上，不在"树"上的东西不会被渲染。<br>
Ogre::SceneManager就是"树"的管理者，Ogre::SceneNode是从SceneManager中创建的（当然BSP和8*树的管理也和这两个类有关，这暂时不讨论）。</p>
<p>AABB(轴对齐包围盒)</p>
<p>这个东西是碰撞检测的基础（怎么总想起JJYY呢），和它类似的还有OBB(有向包围盒)，由于OBB创建复杂，所以Ogre采用了AABB。</p>
<p>最简单的碰撞检测：</p>
<p>通<br>
过Ogre::SceneNode::_getWorldAABB()可以取得这个叶子节点的AABB(Ogre::AxisAlignedBox)，<br>
Ogre::AxisAlignedBox封装了对AABB的支持，该类的成员函数Ogre::AxisAlignedBox::intersects<br>
()可以判断一个AABB和"球体、点、面以及其他面"的相交情况（碰撞情况）。</p>
<p>&nbsp;&nbsp;&nbsp;  m_SphereNode树的叶子，挂了一个"球"<br>
&nbsp;&nbsp;&nbsp;  m_CubeNode树的叶子，挂了一个"正方体"</p>
<p>&nbsp;&nbsp;&nbsp;  AxisAlignedBox spbox=m_SphereNode-&gt;_getWorldAABB();<br>
AxisAlignedBox cbbox=m_CubeNode-&gt;_getWorldAABB();<br>
if(spbox.intersects(cbbox))<br>
{<br>
&nbsp;&nbsp;&nbsp;&nbsp;  //相交</p>
<p>}</p>
<p>区域查询：</p>
<p>简单的讲就是，查询某一区域中有什么东西，分为AABB、球体、面查询。</p>
<p>&nbsp;&nbsp;  //创建一个球体查询，这里的100是m_SphereNode挂着的那个球体的半径<br>
&nbsp;&nbsp;  SphereSceneQuery * pQuery=m_SceneMgr-&gt;createSphereQuery(Sphere(m_SphereNode-&gt;getPosition(),100));<br>
&nbsp;&nbsp;  //执行这个查询<br>
&nbsp;&nbsp;  SceneQueryResult QResult=pQuery-&gt;execute();<br>
&nbsp;&nbsp;  //遍历查询列表找出范围内的物体<br>
&nbsp;&nbsp;  for (std::list&lt;MovableObject*&gt;::iterator iter = QResult.movables.begin(); iter != QResult.movables.end();++iter)<br>
&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;  MovableObject* pObject=static_cast&lt;MovableObject*&gt;(*iter);<br>
&nbsp;&nbsp;&nbsp;  if(pObject)<br>
&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;  if(pObject-&gt;getMovableType()=="Entity")<br>
&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  Entity* ent = static_cast&lt;Entity*&gt;(pObject);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //这里简化了操作，由于只有一个"球体"和一个"正方体"，<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //所以只判断了球体和正方体的相交</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  if(ent-&gt;getName()=="cube")<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //改变位置防止物体重叠<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  vtl=-vtl;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  m_SphereNode-&gt;translate(vtl);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  break;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;  }</p>
<p>相交查询</p>
<p>遍历所有的对象，找到一对一对的相交物体（废话呀，相交当然至少两个物体）。</p>
<p>&nbsp;&nbsp;&nbsp;  //创建相交检测<br>
&nbsp;&nbsp;&nbsp;  IntersectionSceneQuery* pISQuery=m_SceneMgr-&gt;createIntersectionQuery();<br>
&nbsp;&nbsp;&nbsp;  //执行查询<br>
&nbsp;&nbsp;&nbsp;  IntersectionSceneQueryResult QResult=pISQuery-&gt;execute();<br>
&nbsp;&nbsp;&nbsp;  //遍历查询列表找出两个相交的物体<br>
&nbsp;&nbsp;&nbsp;  for (SceneQueryMovableIntersectionList::iterator iter = QResult.movables2movables.begin();<br>
&nbsp;&nbsp;&nbsp;&nbsp;  iter != QResult.movables2movables.end();++iter)<br>
&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;  <br>
&nbsp;&nbsp;&nbsp;&nbsp;  SceneQueryMovableObjectPair pObject=static_cast&lt;SceneQueryMovableObjectPair&gt;(*iter);<br>
&nbsp;&nbsp;&nbsp;&nbsp;  //if(pObject)<br>
&nbsp;&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  String strFirst=pObject.first-&gt;getName();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  String strSecond=pObject.second-&gt;getName();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //下面加入你自己的两个物体相交判断代码，或者简单的用AABB的判断方法，<br>
&nbsp;&nbsp;&nbsp;&nbsp;  }<br>
&nbsp;&nbsp;&nbsp;  }</p>
</div><img src ="http://www.cppblog.com/richardhe/aggbug/56945.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/richardhe/" target="_blank">RichardHe</a> 2008-07-23 15:28 <a href="http://www.cppblog.com/richardhe/articles/56945.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ogre 的 四元数quaternion</title><link>http://www.cppblog.com/richardhe/articles/56944.html</link><dc:creator>RichardHe</dc:creator><author>RichardHe</author><pubDate>Wed, 23 Jul 2008 07:26:00 GMT</pubDate><guid>http://www.cppblog.com/richardhe/articles/56944.html</guid><wfw:comment>http://www.cppblog.com/richardhe/comments/56944.html</wfw:comment><comments>http://www.cppblog.com/richardhe/articles/56944.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/richardhe/comments/commentRss/56944.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/richardhe/services/trackbacks/56944.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font face="Times New Roman"><font size="2"><font color="#000000"><span>quaternion是</span><span>一个标量和一个</span><span>3D</span><span>向量的组合。q={ w,x,y,z},Ogre中一个默认的quaternion</span></font></font><font size="2"><font color="#0000ff"><span><span> ={1,0,0,0} ,一般用于空间一点的旋转,假设空间一点叫p,将要旋转角度是<span>&#945;,旋转轴是(x,y,z),那么:</span></span></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><font color="#0000ff" face="Times New Roman"><span><span><span>p={0,x0,y0,z0}</span></span></span></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><font color="#0000ff"><font face="Times New Roman"><span>q= {cos(</span><span>&#945;</span><span>/ 2) , sina(</span><span>&#945;</span><span>/ 2) <strong>N</strong>x,  sin(</span><span>&#945;</span><span>/ 2)<strong>N</strong>y,  sin(</span><span>&#945;</span><span>/ 2)<strong>N</strong>z }  (<font color="#000000"><span><strong>N</strong></span><span>为单位向量)</span></font></span></font></font></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: 14px; color: #363636; text-indent: 2em; line-height: 23px;"><span><font size="3"><font face="Times New Roman">p结果 =q*p*q<sup><font size="2" color="#0000ff">-1  </font></sup></font></font></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: 14px; color: #363636; text-indent: 2em; line-height: 23px;"><span><font size="3"><font color="#000000"><font size="2"><font face="Times New Roman">在数学上，<span>quaternion</span><span>表示复数</span><span>w+xi+yj+zk</span><span>，其中</span><span>i,j,k</span><span>都是虚数单位,而复数乘法<span>(</span><span>叉乘</span><span>)</span><span>的几何意义实际上就是对复数进行旋转。这也是OGRE为什么要用quaternion的原因(比Matrix更快捷更节省空间),对最简单的二维复数</span><span>p= x + yi</span><span>来说，和另一个</span><span>q = ( con</span><span>&#945;，</span><span>sin</span><span>&#945;</span><span>)</span><span>相乘，则表示把</span><span>p</span><span>沿逆时针方向旋转&#945;：</span><span><font size="2" color="#000080"><font color="#0000ff">p&#8217; = pq</font>  ,这是2D旋转.</font></span></span></font></font></font></font></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: 14px; color: #363636; text-indent: 2em; line-height: 23px;"><span><font size="3"><font color="#000000"><font size="2" color="#000080" face="Times New Roman"><span><span>如果要表示3D旋转,就需要3D复数了,于是就有了"四元数",q=w+ix+jy+kz (i,j,k都是虚数)</span></span></font></font></font></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><span style="font-size: 14px; color: #363636; text-indent: 2em; line-height: 23px;"><span><font size="3"><font color="#000000"><font size="2" color="#000080"><span><span><font color="#000000" face="Times New Roman">其中j,j,k关系如下:</font></span></span></font></font></font></span></span>
</p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;"> </p>
<p><font face="Times New Roman"><span style="font-weight: bold;">&nbsp;&nbsp; i</span><sup style="font-weight: bold;">2</sup><span style="font-weight: bold;"> = j</span><sup style="font-weight: bold;">2</sup><span style="font-weight: bold;"> = k</span><sup style="font-weight: bold;">2</sup><span style="font-weight: bold;"> = -1</span><br style="font-weight: bold;">
<span style="font-weight: bold;">&nbsp;&nbsp;  i * j = k = -j * i</span><br style="font-weight: bold;">
<span style="font-weight: bold;">&nbsp;&nbsp;  j * k = i = -k * j</span><br style="font-weight: bold;">
<span style="font-weight: bold;">&nbsp;&nbsp;  k * i = j = -i * k</span></font></p>
<p><br>
<font face="Times New Roman">四元数加法:<br>
</font><font face="Times New Roman">q<sub>1</sub> + q<sub>2</sub> = (w<sub>1</sub>+w<sub>2</sub>) + (x<sub>1</sub>+x<sub>2</sub>) i + (y<sub>1</sub>+y<sub>2</sub>) j + (z<sub>1</sub>+z<sub>2</sub>) k<br>
</font><font face="Times New Roman">四元数乘法:<br>
</font><font face="Times New Roman"><span style="font-weight: bold;">q<sub>1</sub> * q<sub>2</sub> =</span><br style="font-weight: bold;">
</font><font face="Times New Roman"><span style="font-weight: bold;">(w<sub>1</sub>*w<sub>2</sub> - x<sub>1</sub>*x<sub>2</sub> - y<sub>1</sub>*y<sub>2</sub> - z<sub>1</sub>*z<sub>2</sub>) +</span><br style="font-weight: bold;">
<span style="font-weight: bold;">(w</span><span style="font-weight: bold;"><sub>1</sub></span><span style="font-weight: bold;">*x</span><sub><span style="font-weight: bold;">2</span></sub><span style="font-weight: bold;"> + x</span><span style="font-weight: bold;"><sub>1</sub></span><span style="font-weight: bold;">*w</span><sub><span style="font-weight: bold;">2</span></sub><span style="font-weight: bold;"> + y</span><span style="font-weight: bold;"><sub>1</sub></span><span style="font-weight: bold;">*z</span><sub><span style="font-weight: bold;">2</span></sub><span style="font-weight: bold;"> - z</span><span style="font-weight: bold;"><sub>1</sub></span><span style="font-weight: bold;">*y</span><sub><span style="font-weight: bold;">2</span></sub><span style="font-weight: bold;">) i +</span><br style="font-weight: bold;">
<span style="font-weight: bold;">(w</span><span style="font-weight: bold;"><sub>1</sub></span><span style="font-weight: bold;">*y</span><sub><span style="font-weight: bold;">2</span></sub><span style="font-weight: bold;"> - x</span><span style="font-weight: bold;"><sub>1</sub></span><span style="font-weight: bold;">*z</span><sub><span style="font-weight: bold;">2</span></sub><span style="font-weight: bold;"> + y</span><span style="font-weight: bold;"><sub>1</sub></span><span style="font-weight: bold;">*w</span><sub><span style="font-weight: bold;">2</span></sub><span style="font-weight: bold;"> + z</span><span style="font-weight: bold;"><sub>1</sub></span><span style="font-weight: bold;">*x</span><span style="font-weight: bold;"><sub>1</sub></span><span style="font-weight: bold;">) j +</span><br style="font-weight: bold;">
<span style="font-weight: bold;">(w</span><span style="font-weight: bold;"><sub>1</sub></span><span style="font-weight: bold;">*z</span><sub><span style="font-weight: bold;">2</span></sub><span style="font-weight: bold;"> + x</span><span style="font-weight: bold;"><sub>1</sub></span><span style="font-weight: bold;">*y</span><sub><span style="font-weight: bold;">2</span></sub><span style="font-weight: bold;"> - y</span><span style="font-weight: bold;"><sub>1</sub></span><span style="font-weight: bold;">*x</span><sub><span style="font-weight: bold;">2</span></sub><span style="font-weight: bold;"> + z</span><span style="font-weight: bold;"><sub>1</sub></span><span style="font-weight: bold;">*w</span><sub><span style="font-weight: bold;">2</span></sub></font><span style="font-weight: bold;"><font face="Times New Roman">)&nbsp;&nbsp;&nbsp;  k<br>
</font></span></p>
<p><span style="font-weight: bold;"><font face="Times New Roman">OGRE源代码里这样定义乘法:</font></span></p>
<p> Quaternion Quaternion::operator* (const Quaternion&amp; rkQ) const<br>
&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  // cases p*q != q*p.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  return Quaternion<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  (<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  w * rkQ.w - x * rkQ.x - y * rkQ.y - z * rkQ.z,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  w * rkQ.x + x * rkQ.w + y * rkQ.z - z * rkQ.y,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  w * rkQ.y + y * rkQ.w + z * rkQ.x - x * rkQ.z,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  w * rkQ.z + z * rkQ.w + x * rkQ.y - y * rkQ.x<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  );<br>
&nbsp;&nbsp;&nbsp;  }</p><img src ="http://www.cppblog.com/richardhe/aggbug/56944.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/richardhe/" target="_blank">RichardHe</a> 2008-07-23 15:26 <a href="http://www.cppblog.com/richardhe/articles/56944.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>本地化支持:OGRE&amp;CEGUI中文输入 </title><link>http://www.cppblog.com/richardhe/articles/56104.html</link><dc:creator>RichardHe</dc:creator><author>RichardHe</author><pubDate>Mon, 14 Jul 2008 06:33:00 GMT</pubDate><guid>http://www.cppblog.com/richardhe/articles/56104.html</guid><wfw:comment>http://www.cppblog.com/richardhe/comments/56104.html</wfw:comment><comments>http://www.cppblog.com/richardhe/articles/56104.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/richardhe/comments/commentRss/56104.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/richardhe/services/trackbacks/56104.html</trackback:ping><description><![CDATA[<h1 class="firstHeading">本地化支持:OGRE&amp;CEGUI中文输入:源代码</h1>
<h3 id="siteSub">From OGRE 3D 中文</h3>
<div id="jump-to-nav">Jump to: <a  href="http://ogre3d.cn/index.php?title=%E6%9C%AC%E5%9C%B0%E5%8C%96%E6%94%AF%E6%8C%81:OGRE%26CEGUI%E4%B8%AD%E6%96%87%E8%BE%93%E5%85%A5:%E6%BA%90%E4%BB%A3%E7%A0%81#column-one">navigation</a>, <a  href="http://ogre3d.cn/index.php?title=%E6%9C%AC%E5%9C%B0%E5%8C%96%E6%94%AF%E6%8C%81:OGRE%26CEGUI%E4%B8%AD%E6%96%87%E8%BE%93%E5%85%A5:%E6%BA%90%E4%BB%A3%E7%A0%81#searchInput">search</a></div>
<!-- start content -->
<table id="toc" class="toc" summary="目录">
    <tbody>
        <tr>
            <td>
            <div id="toctitle">
            <h2>目录</h2>
            <span class="toctoggle">[<a  href="javascript:toggleToc()" class="internal" id="togglelink">隐藏</a>]</span></div>
            <ul>
                <li class="toclevel-1"><a  href="http://ogre3d.cn/index.php?title=%E6%9C%AC%E5%9C%B0%E5%8C%96%E6%94%AF%E6%8C%81:OGRE%26CEGUI%E4%B8%AD%E6%96%87%E8%BE%93%E5%85%A5:%E6%BA%90%E4%BB%A3%E7%A0%81#.E8.AF.B4.E6.98.8E"><span class="tocnumber">1</span> <span class="toctext">说明</span></a></li>
                <li class="toclevel-1"><a  href="http://ogre3d.cn/index.php?title=%E6%9C%AC%E5%9C%B0%E5%8C%96%E6%94%AF%E6%8C%81:OGRE%26CEGUI%E4%B8%AD%E6%96%87%E8%BE%93%E5%85%A5:%E6%BA%90%E4%BB%A3%E7%A0%81#.E6.BA.90.E4.BB.A3.E7.A0.81"><span class="tocnumber">2</span> <span class="toctext">源代码</span></a></li>
                <li class="toclevel-1"><a  href="http://ogre3d.cn/index.php?title=%E6%9C%AC%E5%9C%B0%E5%8C%96%E6%94%AF%E6%8C%81:OGRE%26CEGUI%E4%B8%AD%E6%96%87%E8%BE%93%E5%85%A5:%E6%BA%90%E4%BB%A3%E7%A0%81#.E4.BD.BF.E7.94.A8.E6.96.B9.E6.B3.95"><span class="tocnumber">3</span> <span class="toctext">使用方法</span></a></li>
                <li class="toclevel-1"><a  href="http://ogre3d.cn/index.php?title=%E6%9C%AC%E5%9C%B0%E5%8C%96%E6%94%AF%E6%8C%81:OGRE%26CEGUI%E4%B8%AD%E6%96%87%E8%BE%93%E5%85%A5:%E6%BA%90%E4%BB%A3%E7%A0%81#.E7.9B.AE.E5.BD.95.E5.86.85.E5.AE.B9"><span class="tocnumber">4</span> <span class="toctext">目录内容</span></a></li>
            </ul>
            </td>
        </tr>
    </tbody>
</table>
<script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "显示"; var tocHideText = "隐藏"; showTocToggle(); } </script>
<div class="editsection" style="float: right; margin-left: 5px;">[<a  href="http://ogre3d.cn/index.php?title=%E6%9C%AC%E5%9C%B0%E5%8C%96%E6%94%AF%E6%8C%81:OGRE%26CEGUI%E4%B8%AD%E6%96%87%E8%BE%93%E5%85%A5:%E6%BA%90%E4%BB%A3%E7%A0%81&amp;action=edit&amp;section=1" title="Edit section: 说明">编辑</a>]</div>
<a name=".E8.AF.B4.E6.98.8E"></a>
<h2> 说明 </h2>
<p>本代码为Win32平台上OGRE 3D图形引擎各版本中文输入所使用。代码中可能存在不完善的地方，如有问题可以到<a  href="http://bbs.gameres.com/showforum.asp?forumid=99" class="external text" target="_blank" title="http://bbs.gameres.com/showforum.asp?forumid=99" rel="nofollow">论坛</a>交流。
</p>
<div class="editsection" style="float: right; margin-left: 5px;">[<a  href="http://ogre3d.cn/index.php?title=%E6%9C%AC%E5%9C%B0%E5%8C%96%E6%94%AF%E6%8C%81:OGRE%26CEGUI%E4%B8%AD%E6%96%87%E8%BE%93%E5%85%A5:%E6%BA%90%E4%BB%A3%E7%A0%81&amp;action=edit&amp;section=2" title="Edit section: 源代码">编辑</a>]</div>
<a name=".E6.BA.90.E4.BB.A3.E7.A0.81"></a>
<h2> 源代码 </h2>
<p><a  href="http://www.ogre3d.cn/ogre3d@download/Ogre1_4_RC1CI.zip" class="external text" target="_blank" title="http://www.ogre3d.cn/ogre3d@download/Ogre1_4_RC1CI.zip" rel="nofollow">下载连接</a>（for OGRE 3D 1.4.0RC1 ）
</p>
<p><a  href="http://www.ogre3d.cn/ogre3d@download/Ogre1_2_5CI.zip" class="external text" target="_blank" title="http://www.ogre3d.cn/ogre3d@download/Ogre1_2_5CI.zip" rel="nofollow">下载连接</a>（for OGRE 3D 1.2.5）
</p>
<div class="editsection" style="float: right; margin-left: 5px;">[<a  href="http://ogre3d.cn/index.php?title=%E6%9C%AC%E5%9C%B0%E5%8C%96%E6%94%AF%E6%8C%81:OGRE%26CEGUI%E4%B8%AD%E6%96%87%E8%BE%93%E5%85%A5:%E6%BA%90%E4%BB%A3%E7%A0%81&amp;action=edit&amp;section=3" title="Edit section: 使用方法">编辑</a>]</div>
<a name=".E4.BD.BF.E7.94.A8.E6.96.B9.E6.B3.95"></a>
<h2> 使用方法 </h2>
<dl><dd>
<ul>
    <li>请先<a  href="http://www.ogre3d.org/index.php?option=com_remository&amp;Itemid=74" class="external text" target="_blank" title="http://www.ogre3d.org/index.php?option=com_remository&amp;Itemid=74" rel="nofollow">下载</a>Windows版本OGRE源代码，以及相应的依赖文件，然后把他们接压在同一目录下。
    </li>
</ul>
</dd></dl>
<dl><dd>
<ul>
    <li>然后把从这个网页下载的源代码相应版本的源代码解压到OgreNew目录下覆盖相应文件。
    </li>
</ul>
</dd></dl>
<dl><dd>
<ul>
    <li>打开工程文件Ogre_vc8.sln，如果之前都进行顺利的话，你可以看到一个叫做Demo_ChineseInput的项目。对这个项目启动生成，之后是漫长的等待时间。生成完毕，你会看到一个简单的带有中文输入的界面演示。
    </li>
</ul>
</dd></dl>
<div class="editsection" style="float: right; margin-left: 5px;">[<a  href="http://ogre3d.cn/index.php?title=%E6%9C%AC%E5%9C%B0%E5%8C%96%E6%94%AF%E6%8C%81:OGRE%26CEGUI%E4%B8%AD%E6%96%87%E8%BE%93%E5%85%A5:%E6%BA%90%E4%BB%A3%E7%A0%81&amp;action=edit&amp;section=4" title="Edit section: 目录内容">编辑</a>]</div>
<a name=".E7.9B.AE.E5.BD.95.E5.86.85.E5.AE.B9"></a>
<h2> 目录内容 </h2>
<ul>
    <li><strong>OGRE 3D 1.4.0RC1</strong>
    </li>
</ul>
<dl><dd>OgreMain\ <em>对引擎的修改，开出对处理win32消息的接口，以及实现</em>
</dd><dd>Samples\
<dl><dd>ChineseInput\<em>中文输入demo项目</em>
</dd><dd>Common\
<dl><dd>CEGUIChineseInput\<em>CEGUI输入窗口组件</em>
</dd><dd>CEGUIChineseInputWR\<em>CEGUI输入窗口渲染组件</em>
</dd><dd>CEGUIChineseInputDependencies\<em>CEGUI输入依赖项目</em>
</dd></dl>
</dd><dd>Media\
<dl><dd>gui\<em>中文输入demo依赖资源文件</em>
</dd></dl>
</dd></dl>
</dd><dd>Ogre_vc8.sln <em>新的工程文件</em>
</dd></dl>
<p><br>
</p>
<ul>
    <li><strong>OGRE 3D 1.2.5</strong>
    </li>
</ul>
<dl><dd>Dependencies\
<dl><dd>include\
<dl><dd>CEGUI\<em>CEGUI0.5.0包含文件</em>
</dd><dd>ois\<em>OIS包含文件</em>
</dd></dl>
</dd><dd>lib\<em>相应库文件（CEGUI&amp;OIS）</em>
</dd></dl>
</dd><dd>OgreMain\
<dl><dd>include\<em>对引擎的修改，开出对处理win32消息的接口</em>
</dd></dl>
</dd><dd>RenderSystems\
<dl><dd>Direct3D9\<em>对引擎的修改，开出对处理win32消息的D3D的实现</em>
</dd><dd>GL\<em>对引擎的修改，开出对处理win32消息的OpenGL的实现</em>
</dd></dl>
</dd><dd>Samples\
<dl><dd>ChineseInput\<em>中文输入demo项目</em>
</dd><dd>Common\
<dl><dd>bin\<em>运行时需要的支持库以及配制文件</em>
</dd><dd>CEGUIChineseInput\<em>CEGUI输入窗口组件</em>
</dd><dd>CEGUIChineseInputWR\<em>CEGUI输入窗口渲染组件</em>
</dd><dd>CEGUIChineseInputDependencies\<em>CEGUI输入依赖项目</em>
</dd><dd>CEGUIRenderer\<em>OGRE对CEGUI0.5版本支持的修改</em>
</dd></dl>
</dd><dd>Media\
<dl><dd>datafiles\<em>中文输入demo依赖资源文件</em>
</dd></dl>
</dd></dl>
</dd><dd>Ogre_vc8.sln <em>新的工程文件</em>
</dd></dl><img src ="http://www.cppblog.com/richardhe/aggbug/56104.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/richardhe/" target="_blank">RichardHe</a> 2008-07-14 14:33 <a href="http://www.cppblog.com/richardhe/articles/56104.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OGRE显示中文</title><link>http://www.cppblog.com/richardhe/articles/56101.html</link><dc:creator>RichardHe</dc:creator><author>RichardHe</author><pubDate>Mon, 14 Jul 2008 06:28:00 GMT</pubDate><guid>http://www.cppblog.com/richardhe/articles/56101.html</guid><wfw:comment>http://www.cppblog.com/richardhe/comments/56101.html</wfw:comment><comments>http://www.cppblog.com/richardhe/articles/56101.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/richardhe/comments/commentRss/56101.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/richardhe/services/trackbacks/56101.html</trackback:ping><description><![CDATA[&nbsp;
一、要显示中文，必须要有可以拿来用中文字体，这个中文字体从何而来呢？在你的C盘有，在你系统的字体里找(C:\WINDOWS\Fonts)。例如：
我们找到一个&#8220;simfang.ttf&#8221;字体（仿宋体）,将它copy并复制到OGRESDK目录下的Media目录下的fonts目录里面
（X:\OgreSDK\media\fonts），你也会发现这里原来就有几个字体。<br><br>&nbsp; &nbsp; 二、有字体以后，就要建立一个simfong.font的文件，这个文件是字体的xml配置文件。怎么创建这个文件呢？用记事本建立然后拷贝如下内容到记事本中：<br><br>
<div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;">
<div><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top"><span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;</span><span style="color: #0000ff;">?&gt;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Font&nbsp;</span><span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="simfang"</span><span style="color: #ff0000;">&nbsp;Filename</span><span style="color: #0000ff;">="simfang.ttf"</span><span style="color: #ff0000;">&nbsp;Type</span><span style="color: #0000ff;">="FreeType"</span><span style="color: #ff0000;">&nbsp;Size</span><span style="color: #0000ff;">="10"</span><span style="color: #ff0000;">&nbsp;NativeHorzRes</span><span style="color: #0000ff;">="800"</span><span style="color: #ff0000;">&nbsp;NativeVertRes</span><span style="color: #0000ff;">="600"</span><span style="color: #ff0000;">&nbsp;AutoScaled</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span></div>
</div>
<br><br>然后将记事本重命名为simfong，然后将后缀名改为font，最后把他放在Media目录下的gui目录里面（X:\OgreSDK\media\gui），你也会发现这里原来就有几个font文件。<br><br>&nbsp; &nbsp; 三、用记事本方式打开OGRE下的TaharezLookSkin.scheme文件（版本不同，可能命名不同，但是后缀名和里面的内容是大同小异的，它的路径貌似X:\OgreSDK\media\gui）。然后在内容为：<br><br>
<div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;">
<div><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Font&nbsp;</span><span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="BlueHighway-8"</span><span style="color: #ff0000;">&nbsp;Filename</span><span style="color: #0000ff;">="bluehighway-8.font"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span></div>
</div>
<br><br>的后面，插入如下内容：<br><br>
<div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;">
<div><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Font&nbsp;</span><span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="simfang"</span><span style="color: #ff0000;">&nbsp;Filename</span><span style="color: #0000ff;">="simfong.font"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span></div>
</div>
<br><br>这样就完成了显示中文的必要条件了。<br><br>然后就是修改代码了。我们用OGRE官方网里面的WiKi基础教程的例子七做个练习，你也可以到中国的OGRE网(我是这样的称呼它）去看看学习这个练习。<br><br>将这个练习中的代码部分改写如下：<br>
<div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;">
<div><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top"><span style="color: #000000;">&#8230;&#8230;&#8230;&#8230;<br><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top">&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">mSystem-&gt;setDefaultFont((CEGUI::utf8*)"BlueHighway-12");&nbsp;</span><span style="color: #008000;"><br><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top"></span><span style="color: #000000;">&nbsp;&nbsp;mSystem</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">setDefaultFont((CEGUI::utf8</span><span style="color: #000000;">*</span><span style="color: #000000;">)</span><span style="color: #000000;">"</span><span style="color: #000000;">simfang</span><span style="color: #000000;">"</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">SimHei-12</span><span style="color: #008000;"><br><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top"></span><span style="color: #000000;">&#8230;&#8230;&#8230;&#8230;<br><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top">&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">quit-&gt;setText((CEGUI::utf8*)"Quit");</span><span style="color: #008000;"><br><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top"></span><span style="color: #000000;">&nbsp;&nbsp;quit</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">setText((CEGUI::utf8</span><span style="color: #000000;">*</span><span style="color: #000000;">)Ogre::UTFString(L</span><span style="color: #000000;">"</span><span style="color: #000000;">中文退出</span><span style="color: #000000;">"</span><span style="color: #000000;">).asUTF8_c_str());<br><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top">&#8230;&#8230;&#8230;&#8230;</span></div>
</div>
<p><br><br>编译运行。就OK了。</p>
<hr>看到教程6, 就顺便试了试中文显示, 字体设置我倒是想到了, 只是没想到字符集转换这么恶心:<br>
<p>&nbsp;</p>
<div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;">
<div><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top"><span style="color: #000000;">&nbsp;&nbsp;quit</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">setText((CEGUI::utf8</span><span style="color: #000000;">*</span><span style="color: #000000;">)Ogre::UTFString(L</span><span style="color: #000000;">"</span><span style="color: #000000;">中文退出</span><span style="color: #000000;">"</span><span style="color: #000000;">).asUTF8_c_str());</span></div>
</div>
<p>关于layout文件:</p>
<div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: #e6e6e6 none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95%;">
<div><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top"><span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top"></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">GUILayout</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Window&nbsp;</span><span style="color: #ff0000;">Type</span><span style="color: #0000ff;">="DefaultWindow"</span><span style="color: #ff0000;">&nbsp;Name</span><span style="color: #0000ff;">="Tutorial&nbsp;Gui"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Window&nbsp;</span><span style="color: #ff0000;">Type</span><span style="color: #0000ff;">="TaharezLook/Button"</span><span style="color: #ff0000;">&nbsp;Name</span><span style="color: #0000ff;">="Quit"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Property&nbsp;</span><span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="UnifiedPosition"</span><span style="color: #ff0000;">&nbsp;Value</span><span style="color: #0000ff;">="{{0.35,0},{0.45,0}}"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Property&nbsp;</span><span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="UnifiedSize"</span><span style="color: #ff0000;">&nbsp;Value</span><span style="color: #0000ff;">="{{0.3,0},{0.1,0}}"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Property&nbsp;</span><span style="color: #ff0000;">Name</span><span style="color: #0000ff;">="Text"</span><span style="color: #ff0000;">&nbsp;Value</span><span style="color: #0000ff;">="退出"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Window</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Window</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br><img  src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top"></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">GUILayout</span><span style="color: #0000ff;">&gt;</span></div>
</div>
<p><br>一开始我只是简单的把配置文件中的"Quit"改了"退出",结果运行就报错了, LOG文件显示是:<br></p>
<p>
</p>
<table style="width: 580px; height: 68px;" summary="" width="580" border="1" cellpadding="1" cellspacing="1">
    <tbody>
        <tr>
            <td>Exception: ExpatParser::parseXMLFile - XML Parsing error 'not well-formed (invalid token)' at line 7</td>
        </tr>
    </tbody>
</table>
<p><br>查了查, 原来文件格式也要改成UTF-8格式的,呵呵</p><img src ="http://www.cppblog.com/richardhe/aggbug/56101.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/richardhe/" target="_blank">RichardHe</a> 2008-07-14 14:28 <a href="http://www.cppblog.com/richardhe/articles/56101.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>让OGRE支持中文</title><link>http://www.cppblog.com/richardhe/articles/56100.html</link><dc:creator>RichardHe</dc:creator><author>RichardHe</author><pubDate>Mon, 14 Jul 2008 06:27:00 GMT</pubDate><guid>http://www.cppblog.com/richardhe/articles/56100.html</guid><wfw:comment>http://www.cppblog.com/richardhe/comments/56100.html</wfw:comment><comments>http://www.cppblog.com/richardhe/articles/56100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/richardhe/comments/commentRss/56100.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/richardhe/services/trackbacks/56100.html</trackback:ping><description><![CDATA[<font size="2">0．前言：<br>
本人非计算机专业，凭着爱好和一腔热血混入游戏开发大军候补小队，平面尚未钻透。为赶时髦，企图叛变到3D阵营，慌乱之中捡起&#8220;OGRE&#8221;。学到如
今，亦可让正方体飞机等不明物体在三次元空间胡乱打转。但觉得本引擎不支持中文显示而感到不爽，便四处寻求高人指教，但大部分高人指点说：&#8220;自己写引擎算
了。&#8221;衡量了一下自己份量，觉得&#8220;自己写&#8221;这件事十年内恐尚难做到。再后来找到3DCastle论坛，经过&#8220;bug王&#8221;以及&#8220;浪客☆龙猫&#8221;
两位前辈的指点，也通过高手&#8220;renwind&#8221;遗留下来的教程，误打误撞竟然自己改出了中文支持，兴奋之余便想写点东西留点纪念。<br>
<br>
1．准备工作<br>
&#8220;bug王&#8221;已经通过WINAPI实现了OGRE在Direct7.0下的中文支持，也有高手说这样效率不高，更因为本人基本上是不怎么熟悉
WINAPI的，所以就放弃了这种方法。企图直接通过贴图来实现中文显示，毕竟OGRE本身文字输出也是用的这种办法，更好的是OGRE引擎除了普通的
&#8220;ttf&#8221;字体外还支持位图字体（其实&#8220;ttf&#8221;在引擎中也被Ogre::Font::createTextureFromFont()转换成位图了），
基本上就是做一个很大很大的图片，然后上面画满汉字，直接读进去就可以了，问题也就变成了——如何找这个大图片。<br>
幸好GBA游戏的开发者们已经找到了很好的文字来源和取得方法，通过金山的16*16点阵字库得到接近9000个字模，然后通过程序读出并写到2048*2048的单色位图上，转换成&#8220;png&#8221;格式图片才221k。<br>
<br>
2．基本知识<br>
修改引擎之前，我们先要知道OGRE是如何显示字体的。OGRE本身面向对象的设计和自带文档都做得非常规范漂亮，很容易就能找到关于显示文字的类以及相关函数。在这里主要看一下关于位图字体是如何显示在画面上。<br>
<br>
(1)字体的读取。<br>
和这项功能相关的有两个类，一个是Ogre::FontManager类，负责分析字体信息（*.fontdef）文件。然后用builder模式构
建一个Ogre::Font类。在Font类中最重要的数据莫过于mTexCoords_u1、mTexCoords_u2、
mTexCoords_v1、mTexCoords_v2这四个数组，他们分别用来储存不同文字对应在图片上的纹理坐标。
不过数组大小明显不够储存9000个汉字的，一会儿要改的。<br>
<br>
(2)字体的显示。<br>
好像字体显示中用得较多的是Ogre::TextAreaGuiElement类，不过好像还有其他的，我们在这里只看这个吧，估计其他的也大同小异。看了看好像唯一和显示字体有关的函数就是void
TextAreaGuiElement::updateGeometry()了，基本上就是根据要写到屏幕上的字串，在Ogre::Font类中得到相应的贴图坐标和贴图，然后画上去，道理也不是很难。<br>
<br>
3．动手术<br>
目标锁定到Ogre::Font，Ogre::FontManager，Ogre::TextAreaGuiElement三个类中，把所有文件备份一遍手术开始！<br>
<br>
(1) Ogre::Font类。<br>
首先是储存文字贴图坐标的数组的大小不够，原来定义的是——宽字符集 (1024 - 32)、ASCII(256 -
32)。这点点大小怎么够我近9000字大军进入，索性都改成(9030 -
32)。还有就是set和get文字贴图的id都是char类型数据，256个id也不够分配给汉字，看来要都改成unsigned
long形（其实大部分机器上int也是32位，不过long是固定32位的类型，感觉统用点）。<br>
<br>
(2) Ogre::FontManager类。<br>
里面从脚本文件中解析贴图坐标的方法是根据单字符的方式，为支持汉字，改成同时可以分析int的。一个汉字对应数字是他的区位码+161（前160个留给了半角字）。<br>
<br>
(3) Ogre::TextAreaGuiElement类。<br>
这个是相对比较麻烦的，他要从字串中分辨出到半角字和中文。在这里增加一个std::vector&lt;unsigned long&gt;
caption，用来储存分辨的结果。增加以下几行：<br>
<br>
<font face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
</font>
<font size="2" face="宋体">
std::vector&lt;unsigned long&gt; caption;<br>
&nbsp;&nbsp;&nbsp;
</font><font size="2" face="宋体">
unsigned char nTemp;<br>
&nbsp;&nbsp;&nbsp;
</font><font size="2" face="宋体">
String::iterator it=mCaption.begin();<br>
&nbsp;&nbsp;&nbsp;
</font><font size="2" face="宋体">
for(;it!=mCaption.end();++it)<br>
&nbsp;&nbsp;&nbsp;
</font><font size="2" face="宋体">
{<br>
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
if(unsigned char(*it)&lt;=160)//如果是半角<br>
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
{<br>
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
caption.push_back((unsigned char)*it);<br>
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
}<br>
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
else//处理全角字符<br>
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
{ <br>
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
nTemp=(unsigned char)(*it);<br>
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
++it;<br>
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
if(it==mCaption.end())<br>
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
break;<br>
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
//下面是得到区位码+161的公式。<br>
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
caption.push_back((94*(nTemp-0xa0-1)+((unsigned
char)(*it)-0xa0-1))+161);<br>
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font size="2" face="宋体">
}<br>
&nbsp;&nbsp;&nbsp;
</font><font size="2"><font face="宋体">
}<br>
<br>
</font>
<font face="Arial">
然后后面所有关于mCaption的地方都用caption代替就ok了。<br>
<br>
4．结果。<br>
在OpenGL和DX9.0中成功的支持了中文，但是DX7.0中竟然出现了运行错误，具体问题还不清楚，还望各位高手指教。<br>
因为字体本身原因，文字很扁平的不好看，索性又改了改Ogre::Font，Ogre::FontManager两个类，实现脚本中支持修改文字纵横比例的系数的proportion，当这个值设置为0.8的时候比较好看了。<br>
<br>
<br>
</font>
<font face="宋体">
&nbsp;&nbsp;&nbsp;
</font>
<font face="Arial">
<a  href="http://dev.gameres.com/Program/Visual/3D/zhongwen.rar">相关文件</a><br>
</font>
<font face="宋体">
&nbsp;&nbsp;&nbsp; chinese.fontdef//字体信息文件 放在资源文件加中<br>
&nbsp;&nbsp;&nbsp; font.png//字体图片 放在资源文件加中<br>
<br>
&nbsp;&nbsp;&nbsp; OgreFont.cpp<br>
&nbsp;&nbsp;&nbsp; OgreFont.h<br>
&nbsp;&nbsp;&nbsp; OgreFontManager.cpp<br>
&nbsp;&nbsp;&nbsp; OgreTextAreaGuiElement.cpp<br>
&nbsp;&nbsp;&nbsp; //上面文件覆盖同名文件 就可以 先备份<br>
</font>
<font face="Arial">
<br>
这个是在ogre-win32-v0-13-1基础上改的，请到<a  href="http://jx.jlu.edu.cn/down/ogre-win32-v0-13-1.zip">ogre-win32-v0-13-1.zip</a>下载<br>
<br>
中文字体名字就叫 Chinese,以后能做中文游戏了！<br>
<br>
免费打工仔QQ:1850070</font></font><img src ="http://www.cppblog.com/richardhe/aggbug/56100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/richardhe/" target="_blank">RichardHe</a> 2008-07-14 14:27 <a href="http://www.cppblog.com/richardhe/articles/56100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第三人称摄象机系统例子</title><link>http://www.cppblog.com/richardhe/articles/55723.html</link><dc:creator>RichardHe</dc:creator><author>RichardHe</author><pubDate>Wed, 09 Jul 2008 07:42:00 GMT</pubDate><guid>http://www.cppblog.com/richardhe/articles/55723.html</guid><wfw:comment>http://www.cppblog.com/richardhe/comments/55723.html</wfw:comment><comments>http://www.cppblog.com/richardhe/articles/55723.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/richardhe/comments/commentRss/55723.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/richardhe/services/trackbacks/55723.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 第三人称摄象机系统例子Translator：自由骑士笃志（王宏张）Data：2008-5-14l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前言Ogre是一款优秀的3D图形渲染引擎，在国内，很多前辈从04年甚至更早就对它有了深入的了解，并留了许多译文和心得，极大的便利了我的学习。虽然我起步比较晚，但仍希望自己学习间的这些记录和翻译能够帮助到...&nbsp;&nbsp;<a href='http://www.cppblog.com/richardhe/articles/55723.html'>阅读全文</a><img src ="http://www.cppblog.com/richardhe/aggbug/55723.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/richardhe/" target="_blank">RichardHe</a> 2008-07-09 15:42 <a href="http://www.cppblog.com/richardhe/articles/55723.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ogre命令行工具包使用说明</title><link>http://www.cppblog.com/richardhe/articles/55724.html</link><dc:creator>RichardHe</dc:creator><author>RichardHe</author><pubDate>Wed, 09 Jul 2008 07:42:00 GMT</pubDate><guid>http://www.cppblog.com/richardhe/articles/55724.html</guid><wfw:comment>http://www.cppblog.com/richardhe/comments/55724.html</wfw:comment><comments>http://www.cppblog.com/richardhe/articles/55724.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/richardhe/comments/commentRss/55724.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/richardhe/services/trackbacks/55724.html</trackback:ping><description><![CDATA[<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><span style="font-size: 22pt;" lang="EN-US"><font face="Times New Roman">Ogre</font></span><span style="font-size: 22pt; font-family: 宋体;">命令行工具包使用说明</span><span style="font-size: 22pt;" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="center"><font size="2"><span style="font-family: 宋体;">本文档由</span><font face="Times New Roman"> </font><span style="font-family: 宋体;">自由骑士笃志</span><font face="Times New Roman"> </font><span style="font-family: 宋体;">翻译整理</span><span lang="EN-US"><font face="Times New Roman">,</font></span><span style="font-family: 宋体;">版权属于</span><span lang="EN-US"><font face="Times New Roman">OgreTeam</font></span><span style="font-family: 宋体;">。转载请包含本行信息。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: center;" align="left"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><o:p><font size="3" face="Times New Roman">&nbsp;</font></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">这个工具包包含了一些对</span><span lang="EN-US"><font face="Times New Roman">Ogre</font></span><span style="font-family: 宋体;">资源文件进行操作的预处理命令行工具。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">它包括</span><span lang="EN-US"><font face="Times New Roman">OgreXMLConveter, OgreMeshUpgrade, OgreMaterialUpgrade</font></span><span style="font-family: 宋体;">和</span><span lang="EN-US"><font face="Times New Roman">MeshMagick</font></span><span style="font-family: 宋体;">。</span></font></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">您可以在<a href="http://downloads.sourceforge.net/ogre/OgreCommandLineTools_v1.4.7.msi">这里</a>获得其</span><span lang="EN-US"><font face="Times New Roman">WindowsV<st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">1.4.7</st1:chsdate></font></span><span style="font-family: 宋体;">版本的下载</span><span lang="EN-US"><font face="Times New Roman">,</font></span><span style="font-family: 宋体;">或者在<a href="http://downloads.sourceforge.net/ogre/OgreEihortToolsOSX_1.4.0.zip?downloads">这里</a>获取其</span><span lang="EN-US"><font face="Times New Roman">MacOSXV1.4.0</font></span><span style="font-family: 宋体;">版本的下载。以上两个版本均是</span><st1:chsdate year="2008" month="3" day="6" islunardate="False" isrocdate="False" w:st="on"><span lang="EN-US"><font face="Times New Roman">2008</font></span><span style="font-family: 宋体;">年</span><span lang="EN-US"><font face="Times New Roman">3</font></span><span style="font-family: 宋体;">月</span><span lang="EN-US"><font face="Times New Roman">6</font></span><span style="font-family: 宋体;">日</span></st1:chsdate><span style="font-family: 宋体;">的版本，即译者进行翻译的版本，若需要更多信息和更新的版本，可以访问</span><span lang="EN-US"><font face="Times New Roman"><a href="http://www.ogre3d.org/">Ogre</a></font></span><span style="font-family: 宋体;"><a href="javascript:void(0);/*1210036509359*/">官方</a>。</span><