﻿<?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>IT博客-Husman</title><link>http://www.cnitblog.com/Husman/</link><description>人は夢見る　ゆえに生きるもの</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 07:11:55 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 07:11:55 GMT</pubDate><ttl>60</ttl><item><title>HDR tonemapping算法的一些改进</title><link>http://www.cnitblog.com/Husman/archive/2013/04/05/87249.html</link><dc:creator>Husman</dc:creator><author>Husman</author><pubDate>Fri, 05 Apr 2013 07:07:00 GMT</pubDate><guid>http://www.cnitblog.com/Husman/archive/2013/04/05/87249.html</guid><wfw:comment>http://www.cnitblog.com/Husman/comments/87249.html</wfw:comment><comments>http://www.cnitblog.com/Husman/archive/2013/04/05/87249.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/Husman/comments/commentRss/87249.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/Husman/services/trackbacks/87249.html</trackback:ping><description><![CDATA[<div>tonemapping可以说是影响HDR最终质量关键因素之一。<br />这里略去HDR基本流程，这个可以在网上很容易找到，我这里只简单说一下网上没有的东西。<br />细心观察"HDR Lighting sample" in DirectX 9.0c SDK,会发现sample上的暗区的细节保留不够，而亮区部分又感觉有点过曝。<br />我在此基础上做了些修改，色调映射用了<br />Exponential tone mapping算法<br /><strong style="color: #ff0000;">公式：color&nbsp; = 1 - exp( -Exposure * color )</strong><br style="color: #ff0000;" />在tone map之前先对场景的低亮度区域做对比度调整，color = pow(color, k1+Lum*k2);<br />这里k1,k2是两个可以在shader上调整的参数。<br />Exposure = MiddleGray / Lavg,归一化后就是1/（1+Lavg/MiddleGray）,MiddleGray我们通常设成0.18，1/MiddleGray大概等于6<br />简化后这个公式就是Exposure = 1/（1 + 6 &#215; Lavg）&#215; K，K是一个可以调节的参数<br />Vignetting暗角可以通过采样边角饱和度低的灰度纹理实现。<br />代入tone mapping公式就变成<br /><strong><span style="color: #ff0000;">color&nbsp; = 1 - exp( -Exposure * color * Vignetting )</span></strong><br /><br />DXsample中的效果：<br /><img alt="" src="http://www.cnitblog.com/images/cnitblog_com/husman/hdr1.jpg" height="507" width="648" /><br /><br />改进之后的效果：<br /><img alt="" src="http://www.cnitblog.com/images/cnitblog_com/husman/hdr2.jpg" height="507" width="648" /><br /><br />可以看到改进后暗部细节表现的更加细致，亮部也没有过曝，四周也呈现了一定的晕影<br /><br />参考文献<br />http://megapov.inetart.net/manual-1.2/global_settings.html#film_exposure<br />http://filmicgames.com/archives/75<br />http://freespace.virgin.net/hugo.elias/graphics/x_posure.htm<br />"HDR Lighting sample" in DirectX 9.0c SDK</div><img src ="http://www.cnitblog.com/Husman/aggbug/87249.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/Husman/" target="_blank">Husman</a> 2013-04-05 15:07 <a href="http://www.cnitblog.com/Husman/archive/2013/04/05/87249.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OGRE引擎优化的几点建议</title><link>http://www.cnitblog.com/Husman/archive/2012/08/30/84785.html</link><dc:creator>Husman</dc:creator><author>Husman</author><pubDate>Wed, 29 Aug 2012 19:47:00 GMT</pubDate><guid>http://www.cnitblog.com/Husman/archive/2012/08/30/84785.html</guid><wfw:comment>http://www.cnitblog.com/Husman/comments/84785.html</wfw:comment><comments>http://www.cnitblog.com/Husman/archive/2012/08/30/84785.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/Husman/comments/commentRss/84785.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/Husman/services/trackbacks/84785.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 研究了OGRE渲染框架，发现OGRE还是比较传统和通用的引擎框架，结合自己的一些经验，对于他的优化提了一些个人见解，仅供同学们参考。&nbsp;&nbsp;<a href='http://www.cnitblog.com/Husman/archive/2012/08/30/84785.html'>阅读全文</a><img src ="http://www.cnitblog.com/Husman/aggbug/84785.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/Husman/" target="_blank">Husman</a> 2012-08-30 03:47 <a href="http://www.cnitblog.com/Husman/archive/2012/08/30/84785.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实现Diablo3的描边效果</title><link>http://www.cnitblog.com/Husman/archive/2011/12/01/76459.html</link><dc:creator>Husman</dc:creator><author>Husman</author><pubDate>Thu, 01 Dec 2011 04:02:00 GMT</pubDate><guid>http://www.cnitblog.com/Husman/archive/2011/12/01/76459.html</guid><wfw:comment>http://www.cnitblog.com/Husman/comments/76459.html</wfw:comment><comments>http://www.cnitblog.com/Husman/archive/2011/12/01/76459.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/Husman/comments/commentRss/76459.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/Husman/services/trackbacks/76459.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1个pass+MRT,在PS中实现Diablo3的描边效果&nbsp;&nbsp;<a href='http://www.cnitblog.com/Husman/archive/2011/12/01/76459.html'>阅读全文</a><img src ="http://www.cnitblog.com/Husman/aggbug/76459.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/Husman/" target="_blank">Husman</a> 2011-12-01 12:02 <a href="http://www.cnitblog.com/Husman/archive/2011/12/01/76459.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>箭矢的轨迹跟踪条</title><link>http://www.cnitblog.com/Husman/archive/2010/10/05/69579.html</link><dc:creator>Husman</dc:creator><author>Husman</author><pubDate>Tue, 05 Oct 2010 09:00:00 GMT</pubDate><guid>http://www.cnitblog.com/Husman/archive/2010/10/05/69579.html</guid><wfw:comment>http://www.cnitblog.com/Husman/comments/69579.html</wfw:comment><comments>http://www.cnitblog.com/Husman/archive/2010/10/05/69579.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/Husman/comments/commentRss/69579.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/Husman/services/trackbacks/69579.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:        轨迹跟踪条是由一串Billboard组成的，每个Billboard在轨迹跟踪条里面可以认为是一个元素。我在游戏中试过，一般12个元素就已经很完美了。<br>每个元素就是一个点，元素不是顶点缓存中的点，顶点缓存中的点是通过观察点和相邻两个元素连成的线做叉积算出来的。<br>update的时候根据被跟踪点的位置，计算每个元素的位置，从轨迹跟踪条链的头部开始比较，如果紧挨着的元素与被跟踪点的距离大于元素的长度的时候，需要更新头部的位置，有了这个更新，轨迹条就有了拐弯的效果，然后再往链条上面加一个元素，这个元素就是下一次循环的头部。<br>render的时候算出垂直线后就在其两边各放一个点，就成为Billboard的两个顶点，遍历所有元素，可以算出所有Billboard的顶点。<br>还有一点，orgre的轨迹条贴图的时候是一个Billboard贴一个纹理，而wow是所有的轨迹条对应一张纹理，所以要做出wow效果的轨迹条需要修改纹理坐标的计算方式。wow的轨迹条纹理有颜色渐变的效果，可以看到轨迹的尾部颜色淡一点。&nbsp;&nbsp;<a href='http://www.cnitblog.com/Husman/archive/2010/10/05/69579.html'>阅读全文</a><img src ="http://www.cnitblog.com/Husman/aggbug/69579.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/Husman/" target="_blank">Husman</a> 2010-10-05 17:00 <a href="http://www.cnitblog.com/Husman/archive/2010/10/05/69579.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于CEGUI的魔兽世界界面续</title><link>http://www.cnitblog.com/Husman/archive/2010/10/04/69506.html</link><dc:creator>Husman</dc:creator><author>Husman</author><pubDate>Mon, 04 Oct 2010 08:25:00 GMT</pubDate><guid>http://www.cnitblog.com/Husman/archive/2010/10/04/69506.html</guid><wfw:comment>http://www.cnitblog.com/Husman/comments/69506.html</wfw:comment><comments>http://www.cnitblog.com/Husman/archive/2010/10/04/69506.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnitblog.com/Husman/comments/commentRss/69506.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/Husman/services/trackbacks/69506.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: CEGUI的tooltip有点像windows的tooltip会做fadein,fadeout动作，而且显示的位置也不能自定义，要做成wow风格的tooltip需要对他进行修改。对应的FalagardTooltip也需要修改，FalagardTooltip的修改量不大，FalagardTooltip主要用来绘制，由控件调用，cegui这样做目的是把控件的逻辑和绘制分开来写了，Falagard通过looknfeel的配置绘制控件。&nbsp;&nbsp;<a href='http://www.cnitblog.com/Husman/archive/2010/10/04/69506.html'>阅读全文</a><img src ="http://www.cnitblog.com/Husman/aggbug/69506.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/Husman/" target="_blank">Husman</a> 2010-10-04 16:25 <a href="http://www.cnitblog.com/Husman/archive/2010/10/04/69506.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于CEGUI的魔兽世界界面（不是模仿，是完全实现）</title><link>http://www.cnitblog.com/Husman/archive/2010/07/12/67430.html</link><dc:creator>Husman</dc:creator><author>Husman</author><pubDate>Mon, 12 Jul 2010 06:20:00 GMT</pubDate><guid>http://www.cnitblog.com/Husman/archive/2010/07/12/67430.html</guid><wfw:comment>http://www.cnitblog.com/Husman/comments/67430.html</wfw:comment><comments>http://www.cnitblog.com/Husman/archive/2010/07/12/67430.html#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://www.cnitblog.com/Husman/comments/commentRss/67430.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/Husman/services/trackbacks/67430.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cnitblog.com/Husman/archive/2010/07/12/67430.html'>阅读全文</a><img src ="http://www.cnitblog.com/Husman/aggbug/67430.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/Husman/" target="_blank">Husman</a> 2010-07-12 14:20 <a href="http://www.cnitblog.com/Husman/archive/2010/07/12/67430.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ogre 结合高度图动态生成水面 天龙八部TerrainLiquid搞定</title><link>http://www.cnitblog.com/Husman/archive/2009/06/05/59065.html</link><dc:creator>Husman</dc:creator><author>Husman</author><pubDate>Fri, 05 Jun 2009 01:51:00 GMT</pubDate><guid>http://www.cnitblog.com/Husman/archive/2009/06/05/59065.html</guid><wfw:comment>http://www.cnitblog.com/Husman/comments/59065.html</wfw:comment><comments>http://www.cnitblog.com/Husman/archive/2009/06/05/59065.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnitblog.com/Husman/comments/commentRss/59065.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/Husman/services/trackbacks/59065.html</trackback:ping><description><![CDATA[见上篇博客，由于计算水面的第一层纹理坐标的算法错误，导致相邻纹理拼接的时候出现了裂缝。<br>现在错误已修正，最终效果图如下：<br><img height=514 alt="" src="http://www.cnitblog.com/images/cnitblog_com/husman/w3.jpg" width=648 border=0><br><img height=514 alt="" src="http://www.cnitblog.com/images/cnitblog_com/husman/w2.jpg" width=648 border=0><br><img height=514 alt="" src="http://www.cnitblog.com/images/cnitblog_com/husman/w1.jpg" width=648 border=0><br>
<img src ="http://www.cnitblog.com/Husman/aggbug/59065.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/Husman/" target="_blank">Husman</a> 2009-06-05 09:51 <a href="http://www.cnitblog.com/Husman/archive/2009/06/05/59065.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ogre 高度图中动态生成水面 天龙八部 TerrainLiquid</title><link>http://www.cnitblog.com/Husman/archive/2009/06/03/59019.html</link><dc:creator>Husman</dc:creator><author>Husman</author><pubDate>Wed, 03 Jun 2009 07:17:00 GMT</pubDate><guid>http://www.cnitblog.com/Husman/archive/2009/06/03/59019.html</guid><wfw:comment>http://www.cnitblog.com/Husman/comments/59019.html</wfw:comment><comments>http://www.cnitblog.com/Husman/archive/2009/06/03/59019.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/Husman/comments/commentRss/59019.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/Husman/services/trackbacks/59019.html</trackback:ping><description><![CDATA[高度图动态生成的地形，其水平面的三角形列表可以用&#8220;填充&#8221;算法得到。在低配置机器下，水波的生成可以用动画纹理的方法，水的深浅可以用第二层纹理的alpha值表示，越浅的地方alpha值越小，水的深度值很容易计算出来，深度=水平面高度 - 当前网格的高度值。天龙的水面的生成就是用了上述的方法。<br>现在我的算法中还有一点瑕疵，如红线圈出来的地方，网格间存在比较明显的接缝。<br>下面放一张截图：<br><img height=514 alt="" src="http://www.cnitblog.com/images/cnitblog_com/husman/water.jpg" width=648 border=0><br>
<img src ="http://www.cnitblog.com/Husman/aggbug/59019.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/Husman/" target="_blank">Husman</a> 2009-06-03 15:17 <a href="http://www.cnitblog.com/Husman/archive/2009/06/03/59019.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ogre 天龙八部 粒子脚本升级，Ogre低版本的粒子脚本升级</title><link>http://www.cnitblog.com/Husman/archive/2009/05/25/58767.html</link><dc:creator>Husman</dc:creator><author>Husman</author><pubDate>Mon, 25 May 2009 09:51:00 GMT</pubDate><guid>http://www.cnitblog.com/Husman/archive/2009/05/25/58767.html</guid><wfw:comment>http://www.cnitblog.com/Husman/comments/58767.html</wfw:comment><comments>http://www.cnitblog.com/Husman/archive/2009/05/25/58767.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/Husman/comments/commentRss/58767.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/Husman/services/trackbacks/58767.html</trackback:ping><description><![CDATA[天龙八部的粒子脚本文件是1.4版的，在1.6版的ogre下不能使用，需要子粒子名称前加上&#8220;particle_system&#8221;，<br>下面的代码可以对低版本的粒子脚本进行升级。以下代码在vs2005下调试通过。<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;">#include "stdafx.h"<br>#include &lt;iostream&gt;<br>#include &lt;fstream&gt;<br>#include "OgreStableHeaders.h"
<span style="color: #000000;"></span><span style="color: #000000;"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;Ogre;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;_tmain(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;argc,&nbsp;_TCHAR</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;argv[])<br><img id="Codehighlighter1_199_997_Open_Image" onclick="this.style.display='none'; codehighlighter1_199_997_open_text.style.display=" none="" ;="" codehighlighter1_199_997_closed_image.style.display="'inline';" codehighlighter1_199_997_closed_text.style.display="'inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_199_997_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_199_997_closed_text.style.display=" none="" ;="" codehighlighter1_199_997_open_image.style.display="'inline';" codehighlighter1_199_997_open_text.style.display="'inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_199_997_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id="Codehighlighter1_199_997_Open_Text"><span style="color: #000000;">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;Ogre::String&nbsp;filename&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">d:\\all.particle</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;std::ifstream&nbsp;fp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;fp.open(filename.c_str(),&nbsp;std::ios::</span><span style="color: #0000ff;">in</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;std::ios::binary);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;DataStreamPtr&nbsp;stream(OGRE_NEW&nbsp;FileStreamDataStream(filename,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">fp,&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">));<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;std::ofstream&nbsp;outfile(</span><span style="color: #000000;">"</span><span style="color: #000000;">d:\\all2.particle</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br><img id="Codehighlighter1_452_487_Open_Image" onclick="this.style.display='none'; codehighlighter1_452_487_open_text.style.display=" none="" ;="" codehighlighter1_452_487_closed_image.style.display="'inline';" codehighlighter1_452_487_closed_text.style.display="'inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_452_487_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_452_487_closed_text.style.display=" none="" ;="" codehighlighter1_452_487_open_image.style.display="'inline';" codehighlighter1_452_487_open_text.style.display="'inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_452_487_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;">/**/</span><span id="Codehighlighter1_452_487_Open_Text"><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;Process&nbsp;the&nbsp;file&nbsp;line&nbsp;for&nbsp;line&nbsp;</span><span style="color: #008000;">*/</span></span><span style="color: #000000;"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;line;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;StringVector&nbsp;buf;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">stream</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">eof())<br><img id="Codehighlighter1_547_883_Open_Image" onclick="this.style.display='none'; codehighlighter1_547_883_open_text.style.display=" none="" ;="" codehighlighter1_547_883_closed_image.style.display="'inline';" codehighlighter1_547_883_closed_text.style.display="'inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_547_883_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_547_883_closed_text.style.display=" none="" ;="" codehighlighter1_547_883_open_image.style.display="'inline';" codehighlighter1_547_883_open_text.style.display="'inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_547_883_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id="Codehighlighter1_547_883_Open_Text"><span style="color: #000000;">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;stream</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">getLine(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf.push_back(line);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(line.find(</span><span style="color: #000000;">"</span><span style="color: #000000;">quota</span><span style="color: #000000;">"</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;String::npos)<br><img id="Codehighlighter1_650_880_Open_Image" onclick="this.style.display='none'; codehighlighter1_650_880_open_text.style.display=" none="" ;="" codehighlighter1_650_880_closed_image.style.display="'inline';" codehighlighter1_650_880_closed_text.style.display="'inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_650_880_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_650_880_closed_text.style.display=" none="" ;="" codehighlighter1_650_880_open_image.style.display="'inline';" codehighlighter1_650_880_open_text.style.display="'inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_650_880_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id="Codehighlighter1_650_880_Open_Text"><span style="color: #000000;">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;s1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;buf.back();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf.pop_back();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;s2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;buf.back();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf.pop_back();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;s3&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;buf.back();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf.pop_back();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf.push_back(</span><span style="color: #000000;">"</span><span style="color: #000000;">particle_system&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;s3);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf.push_back(s2);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf.push_back(s1);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(size_t&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;buf.size();&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)<br><img id="Codehighlighter1_928_965_Open_Image" onclick="this.style.display='none'; codehighlighter1_928_965_open_text.style.display=" none="" ;="" codehighlighter1_928_965_closed_image.style.display="'inline';" codehighlighter1_928_965_closed_text.style.display="'inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_928_965_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_928_965_closed_text.style.display=" none="" ;="" codehighlighter1_928_965_open_image.style.display="'inline';" codehighlighter1_928_965_open_text.style.display="'inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_928_965_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id="Codehighlighter1_928_965_Open_Text"><span style="color: #000000;">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outfile&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;buf[i]&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;std::endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;outfile.close();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span></div><img src ="http://www.cnitblog.com/Husman/aggbug/58767.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/Husman/" target="_blank">Husman</a> 2009-05-25 17:51 <a href="http://www.cnitblog.com/Husman/archive/2009/05/25/58767.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ogre 天龙八部frame格式的帧动画</title><link>http://www.cnitblog.com/Husman/archive/2009/05/22/58696.html</link><dc:creator>Husman</dc:creator><author>Husman</author><pubDate>Fri, 22 May 2009 03:30:00 GMT</pubDate><guid>http://www.cnitblog.com/Husman/archive/2009/05/22/58696.html</guid><wfw:comment>http://www.cnitblog.com/Husman/comments/58696.html</wfw:comment><comments>http://www.cnitblog.com/Husman/archive/2009/05/22/58696.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/Husman/comments/commentRss/58696.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/Husman/services/trackbacks/58696.html</trackback:ping><description><![CDATA[<p>天龙八部的model文件，一般包含有帧动画，其实可以把天龙的frame看成一种骨骼，只是在skeleton的基础上做了些修改，frame上可以读到bone节点，bone以层级的形式组织，model里的mesh格式需要按照bone的层次关系加到节点上，frame文件里有一个[auto]的动画作为源动画，根据这个源动画创建一个目标动画，通过NodeTrack-&gt;NodeAnimationTrack-&gt;TransformKeyFrame这样信息复制流程，就能在场景上表现动画效果。下面是其中一幅截图：</p>
<img height=514 alt="" src="http://www.cnitblog.com/images/cnitblog_com/husman/frame.jpg" width=648 border=0> 
<img src ="http://www.cnitblog.com/Husman/aggbug/58696.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/Husman/" target="_blank">Husman</a> 2009-05-22 11:30 <a href="http://www.cnitblog.com/Husman/archive/2009/05/22/58696.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>