??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品一本到99热免费,18禁黄久久久AAA片,国产成人久久精品一区二区三区http://www.shnenglu.com/ming81/category/15287.htmlzh-cnSun, 23 Oct 2011 09:58:08 GMTSun, 23 Oct 2011 09:58:08 GMT60(地基?Ogre动画拑֏函数优化版本http://www.shnenglu.com/ming81/archive/2011/09/28/157090.html胖?/dc:creator>胖?/author>Wed, 28 Sep 2011 08:39:00 GMThttp://www.shnenglu.com/ming81/archive/2011/09/28/157090.htmlbool GraphicalWorld::pickPoint(const Ray& ray, Vector3 &hitpoint,&nbs...  阅读全文

]]>
(搬运?Ogre动画拑֏函数http://www.shnenglu.com/ming81/archive/2011/09/20/156312.html胖?/dc:creator>胖?/author>Tue, 20 Sep 2011 06:22:00 GMThttp://www.shnenglu.com/ming81/archive/2011/09/20/156312.htmlIEntity* GraphicalWorld::pickEntity(const Ray& ray, uint32 mask) &nb...  阅读全文

]]>
(地基?OgreNode旋{、位U?/title><link>http://www.shnenglu.com/ming81/archive/2011/04/27/145157.html</link><dc:creator>胖?/dc:creator><author>胖?/author><pubDate>Wed, 27 Apr 2011 08:54:00 GMT</pubDate><guid>http://www.shnenglu.com/ming81/archive/2011/04/27/145157.html</guid><description><![CDATA[<p> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> Node::rotate(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Quaternion</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> q, TransformSpace relativeTo)<br>    {<br>        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Normalise quaternion to avoid drift</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">        Quaternion qnorm </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> q;<br>        qnorm.normalise();<br><br>        </span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000">(relativeTo)<br>        {<br>        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> TS_PARENT:<br>            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Rotations are normally relative to local axes, transform up</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">            mOrientation </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> qnorm </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> mOrientation;<br>            </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> TS_WORLD:<br>            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Rotations are normally relative to local axes, transform up</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">            mOrientation </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> mOrientation </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> _getDerivedOrientation().Inverse()<br>                </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> qnorm </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> _getDerivedOrientation();<br>            </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> TS_LOCAL:<br>            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Note the order of the mult, i.e. q comes after</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">            mOrientation </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> mOrientation </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> qnorm;<br>            </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>        }<br>        needUpdate();<br>    }</span></div> 旋{是本地坐标旋?br><br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">-----------------------------------------------------------------------</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> Node::translate(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Vector3</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> d, TransformSpace relativeTo)<br>    {<br>        </span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000">(relativeTo)<br>        {<br>        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> TS_LOCAL:<br>            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> position is relative to parent so transform downwards</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">            mPosition </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> mOrientation </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> d;<br>            </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> TS_WORLD:<br>            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> position is relative to parent so transform upwards</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (mParent)<br>            {<br>                mPosition </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> (mParent</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">_getDerivedOrientation().Inverse() </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> d)<br>                    </span><span style="COLOR: #000000">/</span><span style="COLOR: #000000"> mParent</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">_getDerivedScale();<br>            }<br>            </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>            {<br>                mPosition </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> d;<br>            }<br>            </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>        </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> TS_PARENT:<br>            mPosition </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> d;<br>            </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br>        }<br>        needUpdate();<br><br>    }</span></div> 变换是相对于父坐标变?br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008000">//</span><span style="COLOR: #008000">-----------------------------------------------------------------------</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> Node::updateFromParentImpl(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">) </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"><br>    {<br>        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (mParent)<br>        {<br>            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Update orientation</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Quaternion</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> parentOrientation </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> mParent</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">_getDerivedOrientation();<br>            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (mInheritOrientation)<br>            {<br>                </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Combine orientation with that of parent</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">                mDerivedOrientation </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> parentOrientation </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> mOrientation;<br>            }<br>            </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>            {<br>                </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> No inheritence</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">                mDerivedOrientation </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> mOrientation;<br>            }<br><br>            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Update scale</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">            </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Vector3</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> parentScale </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> mParent</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">_getDerivedScale();<br>            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (mInheritScale)<br>            {<br>                </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Scale own position by parent scale, NB just combine<br>                </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> as equivalent axes, no shearing</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">                mDerivedScale </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> parentScale </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> mScale;<br>            }<br>            </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>            {<br>                </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> No inheritence</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">                mDerivedScale </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> mScale;<br>            }<br><br>            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Change position vector based on parent's orientation & scale</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">            mDerivedPosition </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> parentOrientation </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> (parentScale </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> mPosition);<br><br>            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Add altered position vector to parents</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">            mDerivedPosition </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> mParent</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">_getDerivedPosition();<br>        }<br>        </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>        {<br>            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Root node, no parent</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">            mDerivedOrientation </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> mOrientation;<br>            mDerivedPosition </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> mPosition;<br>            mDerivedScale </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> mScale;<br>        }<br><br>        mCachedTransformOutOfDate </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br>        mNeedParentUpdate </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br><br>    }</span></div> // <img src ="http://www.shnenglu.com/ming81/aggbug/145157.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/ming81/" target="_blank">胖?/a> 2011-04-27 16:54 <a href="http://www.shnenglu.com/ming81/archive/2011/04/27/145157.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(搬运?OGRE的空间变?translate()的陷?/title><link>http://www.shnenglu.com/ming81/archive/2011/04/27/145155.html</link><dc:creator>胖?/dc:creator><author>胖?/author><pubDate>Wed, 27 Apr 2011 08:31:00 GMT</pubDate><guid>http://www.shnenglu.com/ming81/archive/2011/04/27/145155.html</guid><description><![CDATA[<span id="nyuykkt" class=Apple-style-span style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span id="abablir" class=Apple-style-span style="FONT-SIZE: 14px; LINE-HEIGHT: 21px; FONT-FAMILY: verdana, sans-serif; TEXT-ALIGN: left"> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">GRE的空间变?对于新手来说是一个头疼的问题,而其中的陷阱也是一堆一?即我已l爬些陷?我还是觉得有必要讲一?</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">translate()q个秘的函?|上发现一个朋友中了陷?</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">以下黑体字ؓ(f)论坛某个|友的错误理?</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"><strong>----------------------------------------------------------------------------------------------------------------------------------</strong></span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"><strong>在CSDN和gameres上都发了q个问题Q一直没{,不知道这儿怎么P<br>void createScene() {<span id="wuywbne" class=Apple-converted-space> </span><br>... //W一个物?坐标原点)  <br>Entity* head = mSceneMgr->createEntity("object1", "ogrehead.mesh");   <br>head->setMaterialName("Examples/Rockwall");<span id="edkedru" class=Apple-converted-space> </span><br>SceneNode* node1 = rootNode->createChildSceneNode();<br>node1->attachObject(head);<br><br>//W二个物?span class=Apple-converted-space> </span><br>head = mSceneMgr->createEntity("object2", "ogrehead.mesh");<span id="tscmqoc" class=Apple-converted-space> </span><br>SceneNode* node2 = node1->createChildSceneNode();<span id="guthrfe" class=Apple-converted-space> </span><br>node2->attachObject(head);<span id="zyhrqmt" class=Apple-converted-space> </span><br>node2->translate(Vector3(50, 0, 0), SceneNode::TS_PARENT);<span id="upkfesv" class=Apple-converted-space> </span><br><br>//W三个物?span class=Apple-converted-space> </span><br>head = mSceneMgr->createEntity("object3", "ogrehead.mesh");<br>SceneNode* node3 = node2->createChildSceneNode();<span id="wgqezcj" class=Apple-converted-space> </span><br>node3->attachObject(head);<br>node3->translate(Vector3(0, 50, 0), SceneNode::TS_WORLD);<span id="uikyrbl" class=Apple-converted-space> </span><br>node3->yaw(Degree(90), SceneNode::TS_LOCAL);<span id="ehcmhzn" class=Apple-converted-space> </span><br>}<br>按照I间变换分析Qnode1在原点,node2的世界坐标是(50, 0, 0)Qnode3的世界坐标是(0, 50, 0)Q?br>但是从显C的l果来看node3?50, 50, 0)Q?br>无论用哪个TransformSpace|l果都是一L(fng)Qtranslate都是相对于parentQ旋转都是在loacal中?/strong></span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"><strong> </strong></span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"><strong>我对q个参数的理解是Q?br>TS_WORLDQ不当前节Ҏ(gu)在哪个节点下Q他的操作都是相对于世界坐标pȝ原点的?br>    如node3是在node2下面Q所以他的初始世界坐标应该是(50,0,0)Q?br>    如果它translate(Vector3(0, 50, 0), SceneNode::TS_LOCAL)Q?世界坐标应该?50, 50, 0)<br>    如果它translate(Vector3(0, 50, 0), SceneNode::TS_WORLD)Q?相对于世界坐标原点的q移Q世界坐标应该是(0, 50, 0)</strong></span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"><strong>-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</strong></span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"> </span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">q个|友遇到的问?其实是translate变换的问?Z么他?x)这么理?我们慢慢分析:</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"> </span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">translate()q个函数,其实是相对于父节点的相对Ud,而不是那个网友理解的l对Ud.</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">但是如果是相对于父节点的相对Ud,q要选择3个参考空间干???</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">q就是关键所?q?个参考空?是决定相对移动量的方向的,而不是那个网友理解成的移动的位置!!!</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"> </span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: 'arial black', 'avant garde'"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">Z么他的代码中的第3个节Ҏ(gu)论怎么改变参考空间结果都一?如果理解成方?p然开朗了.<br>因ؓ(f)世界原点,父节?他本w?q?个节点的面向的方向都是一L(fng)(默认-Z方向),所以相对移动的值是一?都是Y方向相对Ud50</span></span><span style="LINE-HEIGHT: 21px; FONT-FAMILY: 'arial black', 'avant garde'"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"><br><br><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">如果世界原点,父节炚w是默认面向Z正方?本n节点旋{90度面向Y的方?br>如果他在本地I间translate(Vector3(0, 50, 0),SceneNode::TS_LOCAL),<br>因ؓ(f)他本w朝向Y, 在本地空间Y方向Ud50, 在世界空?其实是-Z方向Ud?0.</span></span></span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: 'arial black', 'avant garde'"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">一句话:都是相对父节点移?0单位,而参考空间只是决定这50个单位移动的方向!<br><br>所以参考空间理解成朝向,对?br>世界I间----------认定世界原点的朝向ؓ(f)标准朝向,默认-Z方向<br>父节点空?---------认定父节点的朝向为标准朝?br>本地I间--------------认定本n节点的朝向ؓ(f)标准朝向</span></span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"> </span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: 'arial black', 'avant garde'"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">那个|友的理?其实合情合理,他的理解其实是下面假想的函?</span></span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: 'arial black', 'avant garde'"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">setPosition(TS_WORLD);<span id="wouesgy" class=Apple-converted-space> </span><br>setPosition(TS_PARENT);<span id="jmhcmld" class=Apple-converted-space> </span><br>setPosition(TS_LOCAL);</span></span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: 'arial black', 'avant garde'"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">可惜q只是假?讄位置的函数ƈ没有参考空间可以选~~~</span></span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: 'arial black', 'avant garde'"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">OGREZ么不讄q样的函数呢?因ؓ(f)其实已经有替代的函数?</span></span><span style="LINE-HEIGHT: 21px; FONT-FAMILY: 'arial black', 'avant garde'"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"><br><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">setPosition()   // 相对父空间坐?/span></span></span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: 'arial black', 'avant garde'"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">setDerivedPosition()  // 世界I间l对坐标</span></span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: 'arial black', 'avant garde'"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">而本地空间的讄位置函数Ҏ(gu)不需?...</span></span><span style="LINE-HEIGHT: 21px; FONT-FAMILY: 'arial black', 'avant garde'"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"><br></span></span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"> </span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">最?回头一?Z么容易把translate()理解?...原因是translate(TS_PARENT)相对父空间移?br>的时?如果把参考空间父I间理解成方向或者位|?2U情况下l果是正好是一L(fng),巧合?br>是q种巧合,暗藏了一个陷q?让很多h认ؓ(f)理解成位|正好是对的...</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">不信看源?</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"> </span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"></p> <span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"></span> <p> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> Node::translate(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> Vector3</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> d, TransformSpace relativeTo)  <br>{  <br>    </span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000">(relativeTo)  <br>    {  <br>    </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> TS_LOCAL:  <br>        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> position is relative to parent so transform downwards  </span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">        mPosition </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> mOrientation </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> d;  <br>        </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;  <br>    </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> TS_WORLD:  <br>        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> position is relative to parent so transform upwards  </span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (mParent)  <br>        {  <br>            mPosition </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> (mParent</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">_getDerivedOrientation().Inverse() </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> d)  <br>                </span><span style="COLOR: #000000">/</span><span style="COLOR: #000000"> mParent</span><span style="COLOR: #000000">-></span><span style="COLOR: #000000">_getDerivedScale();  <br>        }  <br>        </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">  <br>        {  <br>            mPosition </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> d;  <br>        }  <br>        </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;  <br>    </span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000"> TS_PARENT:  <br>        mPosition </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> d;  <br>        </span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;  <br>    }  <br>    needUpdate();  <br>  <br>}  <br></span></div> <p> </p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"> </span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"> </span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">因ؓ(f)mPosition相对于父节点的位|和方向,</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">所以计结果都要换成父空间相?</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"> </span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">本地I间,朝本w节点的朝向Udd,换到mPosition的所在的父空间只需要旋转一定角?</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">q个角度应该是本w节Ҏ(gu)向和父节点的方向的夹?正好是mOrientation</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">mPosition += mOrientation * d;</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"> </span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">世界I间,朝世界原点的朝向Udd ,换到mPosition的所在父I间只需要旋转一定角?</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">q个角度应该是世界原Ҏ(gu)向和父节点的方向的夹?正好是父节点世界l对角度再取?</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">(Z么要取反,2个四元数怹是不能交换的,因ؓ(f)世界节点和父节点夹角 != 父节点和世界节点夹角,正好相反)</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">       mPosition += (mParent->_getDerivedOrientation().Inverse() * d)<br>                    / mParent->_getDerivedScale();</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif"> </span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">父节点空?朝父节点的朝向移动d ,换到mPosition的所在父I间只需要旋转一定角?</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">父空间{到父I间....其实角度是一致的</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">应该是mPosition += Quaternion::IDENTITY * d;</span></p> <p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; PADDING-TOP: 0px"><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial, helvetica, sans-serif">{h(hun)于mPosition +=  d;</span></p> </span></span> <img src ="http://www.shnenglu.com/ming81/aggbug/145155.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/ming81/" target="_blank">胖?/a> 2011-04-27 16:31 <a href="http://www.shnenglu.com/ming81/archive/2011/04/27/145155.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(地基?OIS 问题http://www.shnenglu.com/ming81/archive/2010/12/15/136500.html胖?/dc:creator>胖?/author>Wed, 15 Dec 2010 07:29:00 GMThttp://www.shnenglu.com/ming81/archive/2010/12/15/136500.html
void MouseDeviceOgreOIS::poll()
{
        
if (mMouse)
        {
            mMouse
->capture();
            OIS::MouseState
& state = mMouse->getMouseState();
            
//讄鼠标无法改变OIS底层GetDeviceData的数据,造成bugQ需要解冟?/span>
            POINT point;
            GetCursorPos(
&point);
            ScreenToClient((HWND)mWhd, 
&point);
            Vector3 pos(point.x 
* 1.0f, point.y * 1.0f0.0f);
    
            mPosition.x 
= state.X.abs *  1.0f;
            mPosition.y 
= state.Y.abs *  1.0f;
            mPosition.z 
= state.Z.abs *  1.0f;
            
if ((mPosition.x != pos.x) || (mPosition.y != pos.y))
            {
                mPosition.x 
= pos.x;    
                mPosition.y 
= pos.y;
            }
            
if (!mActualClip.contains(mPosition))//修改OISBugQ当在最化后,单击只有按下无弹起事件?/span>
            {
                
if(mButtons[MBT_LEFT])
                    mButtons[MBT_LEFT] 
= state.buttonDown(OIS::MB_Left);
                
else
                    state.buttons 
&= ~(1 << OIS::MB_Left); //turn the bit flag off
                
                
if(mButtons[MBT_RIGHT])
                    mButtons[MBT_RIGHT] 
= state.buttonDown(OIS::MB_Right);
                
else
                   state.buttons 
&= ~(1 << OIS::MB_Right); //turn the bit flag off

                
if(mButtons[MBT_MIDDLE])
                    mButtons[MBT_MIDDLE] 
= state.buttonDown(OIS::MB_Middle);
                
else
                    state.buttons 
&= ~(1 << OIS::MB_Middle); //turn the bit flag off                
                return;
            }
            mButtons[MBT_LEFT] 
= state.buttonDown(OIS::MB_Left);
            mButtons[MBT_RIGHT] 
= state.buttonDown(OIS::MB_Right);
            mButtons[MBT_MIDDLE] 
= state.buttonDown(OIS::MB_Middle);
            
        }
}

2.使用SetCursorPos后,无移动鼠标,OIS无法取得鼠标Ud信息
void Win32Mouse::capture()
{
    
//Clear old relative values
    mState.X.rel = mState.Y.rel = mState.Z.rel = 0;

    DIDEVICEOBJECTDATA diBuff[MOUSE_DX_BUFFERSIZE];
    DWORD entries 
= MOUSE_DX_BUFFERSIZE;

    HRESULT hr 
= mMouse->GetDeviceData( sizeof(DIDEVICEOBJECTDATA), diBuff, &entries, 0 );
    
if( hr != DI_OK )
    {
        hr 
= mMouse->Acquire();
        
while( hr == DIERR_INPUTLOST ) 
            hr 
= mMouse->Acquire();

        hr 
= mMouse->GetDeviceData( sizeof(DIDEVICEOBJECTDATA), diBuff, &entries, 0 );
        
        
//Perhaps the user just tabbed away, and coop settings
        
//are nonexclusive..so just ignore
        if( FAILED(hr) )
            
return;
    }

    
bool axesMoved = false;
    
//Accumulate all axis movements for one axesMove message..
    
//Buttons are fired off as they are found
    for(unsigned int i = 0; i < entries; ++i )
    {
        
switch( diBuff[i].dwOfs )
        {
            
case DIMOFS_BUTTON0:
                
if(!_doMouseClick(0, diBuff[i])) return;
                
break;
            
case DIMOFS_BUTTON1:
                
if(!_doMouseClick(1, diBuff[i])) return;
                
break;
            
case DIMOFS_BUTTON2:
                
if(!_doMouseClick(2, diBuff[i])) return;
                
break;
            
case DIMOFS_BUTTON3:
                
if(!_doMouseClick(3, diBuff[i])) return;
                
break;
            
case DIMOFS_BUTTON4:
                
if(!_doMouseClick(4, diBuff[i])) return;
                
break;    
            
case DIMOFS_BUTTON5:
                
if(!_doMouseClick(5, diBuff[i])) return;
                
break;
            
case DIMOFS_BUTTON6:
                
if(!_doMouseClick(6, diBuff[i])) return;
                
break;
            
case DIMOFS_BUTTON7:
                
if(!_doMouseClick(7, diBuff[i])) return;
                
break;
            
case DIMOFS_X:
                mState.X.rel 
+= diBuff[i].dwData;
                axesMoved 
= true;
                
break;
            
case DIMOFS_Y:
                mState.Y.rel 
+= diBuff[i].dwData;
                axesMoved 
= true;
                
break;
            
case DIMOFS_Z:
                mState.Z.rel 
+= diBuff[i].dwData;
                axesMoved 
= true;
                
break;
            
defaultbreak;
        } 
//end switch
    }//end for

    
if( axesMoved )// 有偏UM息才?x)设|鼠标位|?/span>
    {
        
if( coopSetting & DISCL_NONEXCLUSIVE )
        {
            
//DirectInput provides us with meaningless values, so correct that
            POINT point;
            GetCursorPos(
&point);
            ScreenToClient(mHwnd, 
&point);
            mState.X.abs 
= point.x;
            mState.Y.abs 
= point.y;
        }
        
else
        {
            mState.X.abs 
+=  mState.X.rel;
            mState.Y.abs 
+=  mState.Y.rel;
        }
        mState.Z.abs 
+=  mState.Z.rel;

        
//Clip values to window
        if( mState.X.abs < 0 )
            mState.X.abs 
= 0;
        
else if( mState.X.abs > mState.width )
            mState.X.abs 
= mState.width;
        
if( mState.Y.abs < 0 )
            mState.Y.abs 
= 0;
        
else if( mState.Y.abs > mState.height )
            mState.Y.abs 
= mState.height;

        
//Do the move
        if( mListener && mBuffered )
            mListener
->mouseMoved( MouseEvent( this, mState ) );
    }
}


]]>
(地基?人物控制队列xhttp://www.shnenglu.com/ming81/archive/2010/11/22/134287.html胖?/dc:creator>胖?/author>Mon, 22 Nov 2010 08:20:00 GMThttp://www.shnenglu.com/ming81/archive/2010/11/22/134287.html动作切换序列思\模拟Q?/p>

人物的动作分Z半nQ下半n动作

上半w动作:(x)休闲、走路(向前、向后、向左、向叻I(j)、跑步(向前、向后、向左、向叻I(j)、准备战斗、蟩Q开始蟩Q蟩循环、结束蟩Q?br>下半w动作:(x)休闲、走路(向前、向后、向左、向叻I(j)、跑步(向前、向后、向左、向叻I(j)、准备战斗、蟩Q开始蟩Q蟩循环、结束蟩Q?/p>

控制逻辑Q?/p>


*******************************************************(zhn)伤的分割线****************************************************************
队列命o(h)问题Q?br>1.走\的时候队列创建太频繁Q进行解冻I使用队列池)(j)
2.上面一个队列执行完毕后执行下一个队列?br>3.队列要能够同时处理两个命令,因ؓ(f)在运动的时候是一个命令,战斗的时候是另外一个命令?br>4.初步军_使用两个队列Q分别控制上半n和下班n动作?/p>

W一U解x案思\整理Q走?dQ:(x)
1.命o(h)分类Q外部根据命令往队列里面插入命o(h)
2.命o(h)开始执行,成员变量C命o(h)的参敎ͼq在渲染的每一帧执行命令?br>3.执行的每一帧插|处理命o(h)

举例Q?br>1.往命o(h)队列中插入走路命令?nbsp;                                                                      1 
2.在每一帧中执行走\命o(h)Q保存目标位|和源位|,q进行插倹{?br>3.往命o(h)队列中插入准备攻d?nbsp;                                                                  2 有一帧不走动了。解x\Q执行攻ȝ时候也执行走\插倹{?Q有可能没有问题Q因为速度q快
4.开始执行准备攻d?nbsp;                                                                                  
5.在每一帧中执行准备d命o(h)                                                                       3 
6.往命o(h)队列中插入走路命令?nbsp;                                                
7.在每一帧中执行走\命o(h)Q保存目标位|和源位|,q进行插?nbsp;    4 

xQ?br>1.上半w和下半w无M影响Q战斗:(x)如果下半w进行休闲动作才改变Q否则只改变动作。移动:(x)如果上半w休闲才改变Q否则不改变Q?br>2.上半w动作媄(jing)响下半n.Q施法:(x)直接修改上下半n动作为施法)(j)
3.动作播放l束后处理ؓ(f)

队列影响Q?br>W二U情늛接用队列一个一个处理?br>W一U情冉|较难处理Q在处理战斗时候,处理换动作命令,然后处理Ud命o(h)Q?br>//StartAction分ؓ(f)全n和上半n。。。。?/p>

动作分组Q?br>休闲动作Q不打断动作Q进度条动作Q?动作播放完毕?/p>

不可行:(x)因ؓ(f)只有一个队列,所以执行走路命令的时候不能处理战斗的命o(h)?此方法抛弃?/p>

*******************************************************希望的分割线****************************************************************
ȝ(ch)Q?br>解决Ҏ(gu)Q?br>对外接口Q外部参C上半nQ下半n动作Q根据命令类型分配到上半w和下半w队列中去,控制上半w和下半w休Ԍ战斗?/全n动作或者上半n动作?/p>

1.分ؓ(f)上半w,下半w动作两个命令队列分别处理上半n和下半n动作?/p>

举例Q?br>走\+战斗Q?br>1.命o(h)队列中插入走路命?br>2.向上半nQ下半n队列中分发各分发一个走路命令?br>3.?x)同时处理走路命令?br>4.命o(h)队列中增加战斗命令?br>5.判断下半w时候休Ԍ不是的话分发战斗命o(h)Q向上半w队列中分发战斗命o(h)?br>6.处理上半w,下半w动L放过E中的处理?/p>

注意Q?br>1.上半w的动作和下半n一L(fng)时候。根据下半n的动作数控制?br>2.分发器,Ҏ(gu)不同的游戏有不同的分发原则?/p>

*******************************************************希望的分割线****************************************************************



]]>
(地基? DirectX常用 选项http://www.shnenglu.com/ming81/archive/2010/11/12/133441.html胖?/dc:creator>胖?/author>Fri, 12 Nov 2010 09:26:00 GMThttp://www.shnenglu.com/ming81/archive/2010/11/12/133441.html内存?/p>

表面和其它一些Direct3D资源被放在多U内存池中。内存池的种cȝD3DPOOL枚Dcd的一个成员来指定。可用到的内存池有下列几U:(x)

D3DPOOL_DEFAULT——表CDirect3D根据资源的cd和用途把它们攑֜最合适的地方。这有可能是昑֭、AGP内存或者系l内存中。值得注意的是Q这U内存池中的资源必须要在IDirect3DDevice9::Reset被调用之前消毁掉Qƈ且再ơ用时必须重新初始化?/p>

理解Q?pȝ自动分配内存Q栈内存一Ppȝ自动分配内存位置?/p>

D3DPOOL_MANAGED——资源将由Direct3D理q且按设备的需要来指定攑֜昑֭q是攑֜AGP内存中。当应用E序讉K和改变资源时它先把这些资源拷贝到pȝ内存中,当需要时Direct3D?x)自动把它们拯到显存里?/p>

理解Q直接放在显存中Q当改变资源Ӟ拯?x)内存,修改完再回显存,不需改变的资源比较适合?/p>

D3DPOOL_SYSTEMMEM——指定资源放在系l内存中?/p>

D3DPOOL_SCRATCH——指定资源放在系l内存中Q它与D3DPOOL_SYSTEMMEM不同之处在于使用q些资源不必受图形设备的限制。因此,参数使图形设备不能访问该内存池的资源Q但资源可以怺拯?/p>


理解Q放在内存中Q当囑Ş讑֤不能讉KQ经常访问和修改的资源?/p>


内存锁定方式

D3DLOCK_DISCARD——这个参C仅会(x)在动态缓存时被用。它指示g丢弃~存q返回一个指向新分配的缓存的指针。这是很有用Q因为当我们存取一个新分配的缓存时它允许硬件l从丢弃的缓存渲染。这防止了硬件gq?/p>

动态缓存的时候用,原有的会(x)被丢弃?/p>

D3DLOCK_NOOVERWRITE——这个参C仅会(x)在动态缓存时被用。它声明你将向缓存中d数据。即你不能向已经渲染的内存中写数据。这是有好处的因Z允许你在d新数据到~存的同时让gl箋渲染?/p>

只向~存中增加数?/p>

D3DLOCK_READONLY——这个参数声明你锁定的缓存只能从中读取数据而不能写数据。这允许一些内在的优化?/p>

用参数D3DLOCK_DISCARD和D3DLOCK_NOOVERWRITE表明~存的一部分被锁定之后能l箋被用。假如硬仉|允许这些标记被使用Q则在对~存q行锁定Ӟ其他的显C操作就不会(x)中断?/p>


交换~冲cd

D3DSWAPEFFECT_DISCARDQ?nbsp;   后台的缓冲区复制到屏q上Q丢弃后备缓冲区
D3DSWAPEFFECT_FLIPQ?nbsp;      后台~冲区和前台~冲?br>D3DSWAPEFFECT_COPYQ?nbsp;      后台~冲区复制到前台~冲?nbsp;   


~存创徏标志

3DUSAGE_DYNAMIC——设|这个参数可以ɾ~存是动态的?br>D3DUSAGE_POINTS——这个参数指定缓存存储原始点。这个参C仅用在顶点缓冲中?br>D3DUSAGE_SOFTWAREPROCESSING——用Y仉点处?br>D3DUSAGE_WRITEONLY——指定应用程序只能写~存。它允许驱动E序分配最适合的内存地址作ؓ(f)写缓存。注意如果从创徏好的q种~存中读数据Q将?x)返回错误信息?/p>


 



]]>
(搬运?Render to TextureQ渲染到U理Q?http://www.shnenglu.com/ming81/archive/2010/11/12/133429.html胖?/dc:creator>胖?/author>Fri, 12 Nov 2010 07:24:00 GMThttp://www.shnenglu.com/ming81/archive/2010/11/12/133429.html
·main.cpp
  首先我们得声明所需要的对象。当然我们需要一张用来渲染的U理。此外,我们q需要两个Surface对象。一个是用来存储后台~冲区,一个用来当U理的渲染对象。后面我再详l介l它们。另外我们还需要两个矩阵,一个是用来当纹理的投媄(jing)矩阵Q另一个是存储原来的矩c(din)?br>
LPDIRECT3DTEXTURE9 pRenderTexture = NULL;
LPDIRECT3DSURFACE9 pRenderSurface = NULL,pBackBuffer = NULL;
D3DXMATRIX matProjection,matOldProjection;

  现在我们来创建纹理。前两个参数是纹理的宽度和高度,W三个参数是U理的多U渐q纹理序列参敎ͼ在这里是设ؓ(f)1Q第四个参数非常重要而且必须设ؓ(f)D3DUSAGE_RENDERTARGETQ表明我们所创徏的纹理是用来渲染的。剩下的参数是指纹理格式,点~冲区的内存位置Q和一个指向纹理的指针。当U理是用来当渲染对象Ӟ点~冲区的内存位置必须设ؓ(f)D3D_DEFAILT?

g_App.GetDevice()->CreateTexture(256,256,1,D3DUSAGE_RENDERTARGET,D3DFMT_R5G6B5,D3DPOOL_DEFAULT,&pRenderTexture,NULL);

  Z讉KU理内存对象Q我们需要一个Surface对象Q因为D3D中的U理是用q样的一个Surface来存储纹理数据的。ؓ(f)了得到纹理表面的Surface,我们需要调用方法GetSurfaceLevel() 。第一个参数我们设?Q第二个参数Z个指向surface对象的指针?br>
pRenderTexture->GetSurfaceLevel(0,&pRenderSurface);

下一步就是创Z个适合U理l数的投q阵,因ؓ(f)U理的横U|和后台缓冲区的不一栗?br>
D3DXMatrixPerspectiveFovLH(&matProjection,D3DX_PI / 4.0f,1,1,100);

在我们的循环渲染之前Q我们必M存后台缓冲区和它的投qc(din)?br>
g_App.GetDevice()->GetTransform(D3DTS_PROJECTION,&matOldProjection);
g_App.GetDevice()->GetRenderTarget(0,&pBackBuffer);

  渲染循环函数可以分ؓ(f)两个部分。第一部分是渲染到U理的过E。因此,渲染对象必须设ؓ(f)U理表面。然后我们就可以把东西渲染到q个对象上了。渲染到另一个表面上和正常地渲染到后台缓冲区差不多。只有一点不同,那就是先不调用PrensentQ)(j)函数Q因为纹理上的内容ƈ不需要显C在屏幕上。象qx一P我们先要重置表面颜色~冲区,q且调用BeginSence()和EndSence()Ҏ(gu)。ؓ(f)了能够适当的渲染,我们必须讄和纹理表面相W的投媄(jing)矩阵。否则最后的图象可能被扭?br>
//render-to-texture
g_App.GetDevice()->SetRenderTarget(0,pRenderSurface); //set new render target
g_App.GetDevice()->Clear(0,NULL,D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(100,100,100),1.0f,0); //clear texture
g_App.GetDevice()->BeginScene();

g_App.GetDevice()->SetTexture(0,pPyramideTexture);

D3DXMatrixRotationY(&matRotationY,fRotation);
D3DXMatrixTranslation(&matTranslation,0.0f,0.0f,5.0f);
g_App.GetDevice()->SetTransform(D3DTS_WORLD,&(matRotationY * matTranslation));
g_App.GetDevice()->SetTransform(D3DTS_PROJECTION,&matProjection); //set projection matrix

g_App.GetDevice()->SetStreamSource(0,pTriangleVB,0,sizeof(D3DVERTEX));
g_App.GetDevice()->DrawPrimitive(D3DPT_TRIANGLELIST,0,4);

g_App.GetDevice()->EndScene();

  渲染循环的第二部分就是渲染最后场景的q程Q也是昄到屏q上的过E)(j)。渲染对象重新设为后台缓冲区Q投q阵重新设为原来的投媄(jing)矩阵。由于纹理已l准备好了,所以它和纹理层0相关联?br>
//render scene with texture
g_App.GetDevice()->SetRenderTarget(0,pBackBuffer); //set back buffer
g_App.GetDevice()->Clear(0,NULL,D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0,0,0),1.0f,0);
g_App.GetDevice()->BeginScene();

g_App.GetDevice()->SetTexture(0,pRenderTexture); //set rendered texture

g_App.GetDevice()->SetTransform(D3DTS_WORLD,&matTranslation);
g_App.GetDevice()->SetTransform(D3DTS_PROJECTION,&matOldProjection); //restore projection matrix

g_App.GetDevice()->SetStreamSource(0,pQuadVB,0,sizeof(D3DVERTEX));
g_App.GetDevice()->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);

g_App.GetDevice()->EndScene();
g_App.GetDevice()->Present(NULL,NULL,NULL,NULL);

最后我们通过调用Release()Ҏ(gu)释放Surface对象?br>
pRenderSurface->Release();
pRenderSurface = NULL;

pBackBuffer->Release();
pBackBuffer = NULL;


]]>
(搬运?AnimationBlender - Ogre实现不同动画之间的؜?/title><link>http://www.shnenglu.com/ming81/archive/2010/11/08/133018.html</link><dc:creator>胖?/dc:creator><author>胖?/author><pubDate>Mon, 08 Nov 2010 11:01:00 GMT</pubDate><guid>http://www.shnenglu.com/ming81/archive/2010/11/08/133018.html</guid><description><![CDATA[     摘要: 英文原文: http://test.ogitor.org/tiki/AnimationBlender 动画混合 -- 实现两个动画的切? 一个动画逐渐消? 另一个动画逐渐昄来实? 主要通过动画状态的权重来实现通过三种方式来实C个动ȝ混合:    - BlendSwitch - 直接切换至目标动?nbsp;   - BlendWhil...  <a href='http://www.shnenglu.com/ming81/archive/2010/11/08/133018.html'>阅读全文</a><img src ="http://www.shnenglu.com/ming81/aggbug/133018.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/ming81/" target="_blank">胖?/a> 2010-11-08 19:01 <a href="http://www.shnenglu.com/ming81/archive/2010/11/08/133018.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(搬运?把D3D画面渲染到桌面!不用创徏MH口 http://www.shnenglu.com/ming81/archive/2010/11/05/132534.html胖?/dc:creator>胖?/author>Fri, 05 Nov 2010 03:27:00 GMThttp://www.shnenglu.com/ming81/archive/2010/11/05/132534.html其实q个很简单,只是创徏讑֤的时候那个hwnd有点不一P
可能有h׃(x)_(d)用GetDesktopWindows()获得桌面的句柄不p了?那就错了Q这样会(x)没有效果的!正确的代码如下:(x)

    HWND hWnd  =  FindWindowEx(GetDesktopWindow() ,  0  ,  " Progman "  ,  " Program Manager " );
    hWnd  
=  FindWindowEx(hWnd ,  0  ,  " SHELLDLL_DefView "  ,  0 );
    hWnd  
=  FindWindowEx(hWnd ,  0  ,  " SysListView32 "  ,  " FolderView " );
     
//  初始?nbsp;D3D 讑֤ 
    InitD3D(hWnd);

是不是很单!哈哈?br>
昄的时候,如果x染在桌面的一角,则可以这样写Q?br>

// 昄在左上角Q?28×128?/span>
 RECT rect;
  rect.left =
 0;
  rect.right 
= 128;
  rect.top 
= 0;
  rect.bottom 
= 128;
  
// 昄
 
 g_pd3dDevice->Present(0 , &rect , 0 , 0);
       


]]>
þþþþŮ| պAVþһ| ޳ɫwwwþվҹ| þþþþüƷþþ| þþƷ鶹| ޾ƷþþþþĻ | ҹþþþþþþþ| ŷۺϾþͼƬ| þþþavëƬ | պŷþþwwwۺ| ޾ƷþþþĻ69 | 99þۺϺݺۺϾþֹ| ҹþþþüŮӰԺ| ҹþþþ| ҹƵþþþһ | þ99ƷþֻоƷ| ޾Ʒһþþ| ޳ɫwwwþվҹ| þۺɫˮ99ž| ҹŷƷþþþþþ| re99þ6Ʒ| ƷۺϾþþþþ888ѿ| þó97˰| ݺݺݾþ| ˾þþƷӰԺ| þԾƷ| ޾þþþþ77777| 99þҹɫƷվ| MM131޹Ůþ| Ʒŷ޺ձþ| þ99Ʒþþþþ| ھƷþþþӰԺ˾| AVպAVþ| ھƷ˾þþþavһ| ˾Ʒþ޸岻 ˾Ʒþ޸岻 ˾Ʒþ | ɫվWWWþþž| þþþƷsmվ | 99þùۺϾƷ| þˬˬƬAV| ձƷþþþĻ8| þþƷۺ|