<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" 
      xmlns:thr="http://purl.org/syndication/thread/1.0">
  <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html" />
  <link rel="self" type="application/atom+xml" href="http://www.insideria.com/atom.xml" />
  <id>tag:www.insideria.com,2009://34/tag:www.insideria.com,2008://34.26362-</id>
  <updated>2009-11-05T19:58:36Z</updated>
  <title>Comments for Papervision3D Movement- Going Where No MovieClip Has Gone Before (http://www.insideria.com/2008/09/papervision3d-movement-going-w.html)</title>
  <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.21-en</generator>
  <entry>
    <id>tag:www.insideria.com,2008://34.26362</id>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.oreilly.com/cgi-bin/mt/mt-atom.cgi/weblog/blog_id=34/entry_id=26362" title="Papervision3D Movement- Going Where No MovieClip Has Gone Before" />
    <published>2008-09-02T15:00:00Z</published>
    <updated>2008-10-13T19:44:05Z</updated>
    <title>Papervision3D Movement- Going Where No MovieClip Has Gone Before</title>
    <summary>If you&#8217;re anything like me, you remember how excited you were years ago when you first wrote a simple line of code, ball._x++, in an onEnterFrame event and gleefully watched a ball fly across the stage. I promise you that little moving ball ain&#8217;t got nothin&#8217; on what you&#8217;re about to learn here.</summary>
    <author>
      <name>John Lindquist</name>
      <uri>http://pv3d.org</uri>
    </author>
    
    <category term="Adobe Feed" />
    
    <category term="Features" />
    
    <content type="html" xml:lang="en" xml:base="http://www.insideria.com/">
      <![CDATA[<strong>Changing Position- Move that 3D Thing!</strong>
<br/>
<p>If you&#8217;re anything like me, you remember how excited you were years ago when you first wrote a simple line of code, <strong>ball._x++</strong>, in an <strong>onEnterFrame</strong> event and gleefully watched a ball fly across the stage. I promise you that little moving ball ain&#8217;t got nothin&#8217; on what you&#8217;re about to learn here.</p>

<strong>Properties: x, y, and z</strong>
<br/>
<p>You position an object in 3d space by plotting out its <strong>x</strong>, <strong>y</strong>, and <strong>z</strong> coordinates. Now it only makes sense, just like that ball moving across the stage years ago, that incrementing an <strong>x</strong>, <strong>y</strong>, or <strong>z</strong> value in Papervision3D using an <strong>ENTER_FRAME</strong> event will achieve the same purpose. Yet, there are a few gotchas:</p>

<ul>
	<li><strong>x:0</strong>, <strong>y:0</strong>, and <strong>z:0</strong> is the center of the stage(unlike a traditional flash stage with x:0 and y:0 in the upper-left corner)</li>
	<li><strong>y++</strong> moves up</li>
	<li><strong>z++</strong> moves forward</li>
</ul>

<p>Every <strong>DisplayObject3D</strong> uses these <strong>x</strong>, <strong>y</strong>, and <strong>z</strong> properties and you can access them directly on the object:</p>

<div class="acode" style="overflow: auto; padding: 10px;" ><div style="overflow-x: visible;">
<code language="perl">
<pre>

myCube.<span class="category2">x</span>++; <span class="linecomment">//moves myCube right one pixel</span></span></pre>
</code>

</div></div> 


<p>You don&#8217;t typically directly increment the position values of a 3d object as there are methods and Tweening engines that simplify movement in 3d space</p>
            
<div class="ap_c"><a href="http://www.insideria.com/upload/2008/08/01_Movement.swf" target="_blank"><img src="http://www.insideria.com/upload/2008/08/movement.jpg" alt="Click to Demo" width="400" title="Click to Demo"/></a><div class="apcaption">Click on Preview Above to Run Demo.</div></div>

<p><strong>Methods:</strong>  <strong>moveForward()</strong>, <strong>moveBackward()</strong>, <strong>moveLeft()</strong>, <strong>moveRight()</strong>, <strong>moveUp()</strong>, and <strong>moveDown()</strong>
I&#8217;ll give you one guess to figure out what &#8220;<strong>moveForward()</strong>&#8221; does to a 3d object. Give up? &#8220;<strong>moveForward()</strong>&#8221; moves the 3d object forward.  Unlike a <strong>z++</strong>, <strong>moveForward()</strong> takes rotation into account. This means your object will move forward no matter what direction it faces.  Let&#8217;s imagine two diametric examples to make sure we&#8217;re clear:</p>

<ul>
	<li>Going down can be moving forward: Imagine an airplane in a nose-dive.  Even though you could say the plane is going down, the rotation of the plane has changed in such a manner that the pilot would say, &#8220;We are moving forward towards the ground.&#8221;</li>
	<li>Going forward can be moving down: Imagine a motorcycle popping a perfect wheelie. The motorcycle would be pointed toward the sky, but you would have to define his motion as &#8220;<strong>moveDown()</strong>&#8221; because it&#8217;s turned so far back on its back wheel that the bottom is moving forward.</li>
</ul>

<p>So it all boils down to this: if you want to move a sphere named &#8220;sphere&#8221; 10 pixels forward:</p>

<div class="acode" style="overflow: auto; padding: 10px;" ><div style="overflow-x: visible;">
<code language="perl">
<pre>

sphere.moveForward(10);<span class="linecomment">// moves a sphere forward 10 pixels</span></span></pre>
</code>

</div></div> 

<p>If you want the sphere to continue to move forward, place the preceding line of code within an ENTER_FRAME event handler.</p>

<p><strong>Adjusting Scale- Because Bigger is Always Better</strong></p>
<p><strong>Properties</strong>: <strong>scale</strong>, <strong>scaleX</strong>, <strong>scaleY</strong>, and <strong>scaleZ</strong></p>
<p>There&#8217;s one underlying rule in life that we all have to deal with on a daily basis: size matters.</p>

<p>In 3d space, the only way to visually determine the size of an object is to compare it to another nearby object. If you&#8217;re new to manipulating 3d space, you&#8217;ll run into this problem often because you have to take the size of your 3d object and all of the camera properties into account.</p>

<p>If you need to adjust the size of the object compared to other objects and you like where the object is positioned, the easiest method is to play with its scale settings.</p>

<ul>
	<li><strong>scaleX</strong> - stretches/shrinks the object along the X-axis or left and right</li>
	<li><strong>scaleY</strong>- stretches/shrinks the object along the Y-axis or up and down</li>
	<li><strong>scaleZ</strong> - stretches/shrinks the object along the Z-axis or front and back</li>
	<li><strong>scale</strong> - strecthes/shrinks the object equally on all axes (that&#8217;s plural for more than one axis)</li>
</br>
</ul>

<p>The following example demonstrates scaling in 3D:</p>
<div class="ap_c"><a href="http://www.insideria.com/upload/2008/08/02_Scale.swf" target="_blank"><img src="http://www.insideria.com/upload/2008/08/scale.jpg" alt="Click to Demo" width="400" title="Click to Demo"/></a><div class="apcaption">Click on Preview Above to Run Demo.</div></div>


<p><strong>Simple Rotations*- You Spin Me Right Round, Baby, Right Round</strong></p>
<p><em>*author&#8217;s note: This section is subject to change in future revisions based on current internal discussions within the Papervision3D team</em></p>

<p><strong>Properties</strong>: <strong>rotationX</strong>,  <strong>rotationY</strong>,  <strong>rotationZ</strong>, <strong>localRotationX</strong>, <strong>localRotationY</strong>, and <strong>localRotationZ</strong></p>

<p><strong>Methods</strong>:  <strong>pitch()</strong>, <strong>yaw()</strong>, and <strong>roll()</strong> In Flash, whenever you rotate a <strong>MovieClip</strong> it only rolls right or left, similar to the hands turning on a clock. Papervision3D adds two new ways to rotate. The one you&#8217;re familiar with, turning clockwise or counter-clockwise, is known as rolling, or <strong>rotationZ</strong> because the object is rotating around the Z-axis. You can think of the Z-axis as you and friend facing each other holding long axle with a wheel at the middle. Turning the axle in your hands would make the wheel roll. So the axle is the Z-axis and turning an object on the Z-axis makes it roll.</p>

<p>Yaw (<strong>rotationY</strong>) and pitch (<strong>rotationX</strong>) might be new to you, but the concepts are just as simple. For instance, the earth spins on its Y-axis as do figure skaters, tornadoes, and those toy tops you used to play with as a kid. If you need to hold a Y-axis to grasp the concept, just grab your nearest spindle of burnable CDs and start spinning your CDs around it. That plastic rod jotting up out of the base is a good example of a Y-axis and the CD spinning around the Y-axis an example of yaw or <strong>rotationY</strong>. Simple, right?</p>

<p>Last, but not least, is the pitch or <strong>rotationX</strong>. Get up out of your chair and do a somersault. Assuming you were successful, you&#8217;ve completed a 360 degree pitch because you rotated around the X-axis. If you just got in trouble by your boss for doing somersaults in the office, just tell him you&#8217;re doing research and do another one.</p>

<p>Now that you understand the concept, let&#8217;s talk about how and why to use each variation:</p>

<p><strong>rotationX</strong>, <strong>rotationY</strong>, and <strong>rotationZ</strong></p>

<p>Consider these three properties as &#8220;object axis rotation&#8221;. Most commonly you set the rotation once then forget about it. Think of a space shuttle. The space shuttle, while in Earth&#8217;s atmosphere, flies like any other airplane: horizontally. Yet, when it&#8217;s time to lift off into outer space, the space shuttle flies vertically. In this situation, you would adjust the rotationX 90 degrees and then forget about it. So consider these rotations as a way to orient your object to the direction you&#8217;d like it to face.</p>

<p><strong>localRotationX</strong> (pitch), <strong>localRotationY</strong> (yaw), <strong>localRotationZ</strong>(roll)</p>

<p>These local rotations will now rotate around the object axis. So once you orient your object with the base rotations, you can now rotate around the new orientation with the local rotations. (Take note that the method <strong>pitch()</strong>, <strong>yaw()</strong>, and <strong>roll()</strong> achieve the exact same functionality as these local rotation properties. They take a degrees parameter and will update the local rotation by that many degrees). A local rotation also does the following things which you&#8217;ll need to remember:</p>

<ol>
	<li>1. Updates incrementally. Each local rotation builds upon the prior local rotation. Although this is correct, you will most likely not get the results you expect. Adding 3D rotations is much more complicated than you may initially assume.</li>
	<li>2. Modifies the orientation rotation. This may seem counter-intuitive, but must be done to maintain proper <strong>moveForward()</strong>, <strong>moveRight()</strong>, etc. functionality.</li>
</ol>

<p>Lastly, setting a <strong>rotationX</strong> after setting a <strong>localRotationX</strong> will reset all of the local rotations. This means the object will return to the orientation rotation defined in <strong>rotationX</strong>, <strong>rotationY</strong>, and <strong>rotationZ</strong>. This, in effect, cancels out the changes made to the orientation by the local rotations.</p>

<p>The following example demonstrates the points made above. The sliders adjust the orient rotations while the buttons do a 360 rotation around a local rotation. The demo pretty clearly shows the difficulty in combining multiple rotations at the same time:</p>

<div class="ap_c"><a href="http://www.insideria.com/upload/2008/08/03_Rotation.swf" target="_blank"><img src="http://www.insideria.com/upload/2008/08/rotation.jpg" alt="Click to Demo" width="400" title="Click to Demo"/></a><div class="apcaption">Click on Preview Above to Run Demo.</div></div>


<p><strong>Controlled Rotations- lookAt()</strong></p>
<p>Methods:  lookAt()</p>

<p>You probably gathered from the &#8220;Simple Rotations&#8221; section that combining 3D rotations can get complicated quite quickly. If you want to delve into the math behind 3D rotations and solutions you can use to control them mathematically, read up on the following topics:</p>
<ul>
	<li> Euler Angles: <a href="http://en.wikipedia.org/wiki/Euler_angle">http://en.wikipedia.org/wiki/Euler_angle</a></li>
       <li>Quaternions: <a href="http://en.wikipedia.org/wiki/Quaternions">http://en.wikipedia.org/wiki/Quaternions</a> and <a href="http://blog.zupko.info/?p=150">http://blog.zupko.info/?p=150</a></li>
</ul>

<p>On the other hand, if you&#8217;re looking for a simpler solution, read on.</p>

<p>The <strong>lookAt()</strong> method is available on every DisplayObject3D (sphere, plane, cube, etc.).  It allows you take make one object look at another. The syntax is very simple:</p>

<div class="acode" style="overflow: auto; padding: 10px;" ><div style="overflow-x: visible;">
<code language="perl">
<pre>

plane.lookAt(sphere); <span class="linecomment">//results in the plane looking at the sphere</span></span></pre>
</code>

</div></div> 

<p>Now you may be thinking, &#8220;I see what this does, but how does it help control rotations?&#8221; The answer is that you can now position dummy objects around the scene using x,y, and z and then lookAt() those objects to create the desired rotation of the main object. If you want to rotate something to the upper left, place an object up and to the left then look at it. The following example demonstrates an arrow looking at different spheres:</p>

<div class="ap_c"><a href="http://www.insideria.com/upload/2008/08/04_LookAt.swf" target="_blank"><img src="http://www.insideria.com/upload/2008/08/lookat.jpg" alt="Click to Demo" width="400" title="Click to Demo"/></a><div class="apcaption">Click on Preview Above to Run Demo.</div></div>

<p>If you don&#8217;t want the object you&#8217;re looking at to be seen, don&#8217;t add it to the scene.</p>

<p><strong>Orbiting with Pivot Points</strong></p>

<p>Pivot Points allow you to group a whole bunch of 3d object together at different positions and rotate them around one axis. It&#8217;s similar to how all the planets in the solar system rotate around the Sun. The basic usage of a Pivot Point is very simple, yet it can yield pretty cool results. Create a couple objects, create a Pivot Point (just a basic DisplayObject3D), add the objects to the Pivot Point, then add the Pivot Point to the scene:</p>

<div class="acode" style="overflow: auto; padding: 10px;" ><div style="overflow-x: visible;">
<code language="perl">
<pre>

<span class="category1">var</span> sphere1:Sphere = <span class="category1">new</span> Sphere();
<span class="category1">var</span> sphere2:Sphere = <span class="category1">new</span> Sphere();
<span class="category1">var</span> pivotPoint:DisplayObject3D = <span class="category1">new</span> DisplayObject3D();
<span class="linecomment">//add your objects to the pivot point</span>
pivotPoint.addChild(sphere1);
pivotPoint.addChild(sphere2);
<span class="linecomment">//add your pivot point to the scene</span>
scene.addChild(pivotPoint);</pre>
</code>

</div></div> 

<p>After this is all said and done, you can rotate the Pivot Point using the methods discussed above and the objects you placed within the Pivot Point will all rotate together. Check out the following example to get the idea:</p>

<div class="ap_c"><a href="http://www.insideria.com/upload/2008/08/05_PivotPoint.swf" target="_blank"><img src="http://www.insideria.com/upload/2008/08/pivotpoint.jpg" alt="Click to Demo" width="400" title="Click to Demo"/></a><div class="apcaption">Click on Preview Above to Run Demo.</div></div>

<p><strong>Tweening in 3D with TweenMax</strong></p>

<p>There are many open source options for making things move in Flash. I&#8217;ve decided to use an engine called TweenMax because it&#8217;s a solid, fast engine that&#8217;s easy to learn in an online article. Follow this link and click the big green &#8220;Download Now&#8221; button toward the top of the page:</p>

<a href="http://blog.greensock.com/tweenmaxas3/">http://blog.greensock.com/tweenmaxas3/</a>

<p>Extract the .zip to wherever you keep your classes and set a class path to import TweenMax. A typical syntax is short sweet and simple (yet has limitless options):</p>

<div class="acode" style="overflow: auto; padding: 10px;" ><div style="overflow-x: visible;">
<code language="perl">
<pre>

TweenMax.to(myObject, <span class="category2">duration</span>, {myProperty:endResult});</pre>
</code>

</div></div> 

<p>You can play around with the tween customizer on the TweenMax homepage to generate some more examples. Make sure and check out the easing methods from the code generator to smooth out your transitions. After playing with the code generator, try swapping in any 3d object and 3d property into the static <strong>to()</strong> method:</p>

<div class="acode" style="overflow: auto; padding: 10px;" ><div style="overflow-x: visible;">
<code language="perl">
<pre>

TweenMax.to(sphere, 2, {z:1000});<span class="linecomment">//Tweens a sphere from its current z location to z 1000</span></span></pre>
</code>

</div></div> 

<p>Go ahead and try out each property we&#8217;ve looked at.  You can even try tweening multiple properties simultaneously. You&#8217;ll quickly see how easy it is. Let&#8217;s combine some of the ideas we&#8217;ve learned for the final demo.</p>

<div class="ap_c"><a href="http://www.insideria.com/upload/2008/08/06_Tween.swf" target="_blank"><img src="http://www.insideria.com/upload/2008/08/tween.jpg" alt="Click to Demo" width="400" title="Click to Demo"/></a><div class="apcaption">Click on Preview Above to Run Demo.</div></div>


<p>The preceding example can be thought of like this:</p>

<ol>
	<li>1.     Tween a dummy object to the x, y, and z of a sphere</li>
	<li>2.     Update the arrow object to lookAt() the dummy object for proper rotation</li>
	<li>3.     Update the arrow object&#8217;s x, y, and z to follow the dummy object through 3d space</li>
</ol>

<p>The nifty little curving effect comes from an option called &#8220;<strong>bezierThrough</strong>&#8221; provided by TweenMax. The syntax looks like this:</p>

<div class="acode" style="overflow: auto; padding: 10px;" ><div style="overflow-x: visible;">
<code language="perl">
<pre>

TweenMax.to(dummyArrow, 2, {<span class="category2">x</span>:sphere.<span class="category2">x</span>, <span class="category2">y</span>:sphere.<span class="category2">y</span>, z:sphere.z, bezierThrough:[{<span class="category2">x</span>:1000, <span class="category2">y</span>:1000}], onUpdate:updateArrow, ease:Quart.easeInOut});<span class="linecomment">//Tweens a dummy object to a sphere with a bezier of x:1000 and y:1000. Also calls updateArrow() each time the tween updates</span></span></pre>
</code>

</div></div> 

<p>The <strong>updateArrow</strong> function should look something like this:</p>

<div class="acode" style="overflow: auto; padding: 10px;" ><div style="overflow-x: visible;">
<code language="perl">
<pre>

<span class="category1">private</span> <span class="category1">function</span> updateArrow():<span class="category1">void</span>
{
 <span class="linecomment">//gives a little lag between the arrow for smoother rotating</span>
 dummyArrow.moveBackward(200);
 <span class="linecomment">//arrow looks at dummy arrow</span>
 <span class="category2">arrow</span>.lookAt(dummyArrow);
 <span class="linecomment">// arrow copies the x, y, and z of the dummyArrow</span>
      <span class="category2">arrow</span>.copyPosition(dummyArrow);
}</pre>
</code>

</div></div> 

<p>There are truly limitless possibilities of movement in 3D. If the movement happens around you in everyday life, you can bet there&#8217;s some way to achieve that same movement effect in Papervision3D. So let your imagination run wild and make cool stuff!</p>
]]>
      
    </content>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.26362-comment:2042222</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.26362" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html#comment-2042222" />
    <title>Comment from lr on 2008-09-03</title>
    <author>
        <name>lr</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Great article! Would you mind to share the project code please? or is there any link to download the files?<br />
Cheers</p>]]>
    </content>
    <published>2008-09-04T02:44:53Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.26362-comment:2042234</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.26362" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html#comment-2042234" />
    <title>Comment from Rich Tretola on 2008-09-04</title>
    <author>
        <name>Rich Tretola</name>
        <uri>http://blog.everythingflex.com</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://blog.everythingflex.com">
        <![CDATA[<p>+1 on the code</p>]]>
    </content>
    <published>2008-09-04T12:08:38Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.26362-comment:2042248</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.26362" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html#comment-2042248" />
    <title>Comment from John Lindquist on 2008-09-04</title>
    <author>
        <name>John Lindquist</name>
        <uri>http://pv3d.org</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://pv3d.org">
        <![CDATA[<p>I'll pack up the code into flex archives in the next week or so and post a link in the comments.</p>]]>
    </content>
    <published>2008-09-04T17:42:00Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.26362-comment:2042249</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.26362" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html#comment-2042249" />
    <title>Comment from Shawny on 2008-09-04</title>
    <author>
        <name>Shawny</name>
        <uri>http://www.triadfug.org</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.triadfug.org">
        <![CDATA[<p>Great post.  I love the look-at method.  I would think that having mouse-oriented object that can be aware of other internal objects could be quite useful.<br />
</p>]]>
    </content>
    <published>2008-09-04T17:50:35Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.26362-comment:2042279</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.26362" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html#comment-2042279" />
    <title>Comment from Anonymous on 2008-09-04</title>
    <author>
        <name>Anonymous</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Thanks, John! :)</p>]]>
    </content>
    <published>2008-09-05T04:31:03Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.26362-comment:2042409</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.26362" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html#comment-2042409" />
    <title>Comment from felix on 2008-09-08</title>
    <author>
        <name>felix</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Is there any way to add "enter_frame" listeners to 3d objects?</p>]]>
    </content>
    <published>2008-09-08T12:58:36Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.26362-comment:2042460</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.26362" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html#comment-2042460" />
    <title>Comment from Chin-Chi Hung on 2008-09-08</title>
    <author>
        <name>Chin-Chi Hung</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Great artical! If have any chances to teach how to put Flex 2D UI (like HTML, Panel...) into PV3D environment. Thanks.</p>]]>
    </content>
    <published>2008-09-09T03:15:12Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.26362-comment:2042726</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.26362" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html#comment-2042726" />
    <title>Comment from haha on 2008-09-15</title>
    <author>
        <name>haha</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Thanks!</p>]]>
    </content>
    <published>2008-09-15T14:01:54Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.26362-comment:2042911</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.26362" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html#comment-2042911" />
    <title>Comment from Antoy on 2008-09-18</title>
    <author>
        <name>Antoy</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Great article, thanks John! Is possible to have the project code please?</p>]]>
    </content>
    <published>2008-09-18T09:06:22Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.26362-comment:2044309</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.26362" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html#comment-2044309" />
    <title>Comment from stelios on 2008-10-15</title>
    <author>
        <name>stelios</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Very useful article. Thanks. Unfortunaterly I can't understand it very well because you haven't packed the complete source code. I hope you will do it in the future. </p>]]>
    </content>
    <published>2008-10-15T23:54:50Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.26362-comment:2045945</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.26362" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html#comment-2045945" />
    <title>Comment from Claudio on 2008-11-08</title>
    <author>
        <name>Claudio</name>
        <uri>http://www.organismedia.com/cdb/</uri>
    </author>
    <content type="html" xml:lang="en" xml:base="http://www.organismedia.com/cdb/">
        <![CDATA[<p>Hey guys, everybody is asking for the source code here.. Well I can understand you would like to have it but I feel you are asking too much this time.. These examples are well structured and well explained, and the idea of these post is to let us understand the basics, then it's our job...</p>]]>
    </content>
    <published>2008-11-08T14:54:48Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.26362-comment:2048411</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.26362" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html#comment-2048411" />
    <title>Comment from your wrong on 2008-12-08</title>
    <author>
        <name>your wrong</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>@Claudio  your wrong, code or GTFO</p>]]>
    </content>
    <published>2008-12-08T22:51:24Z</published>
  </entry>

  <entry>
    <id>tag:www.insideria.com,2008://34.26362-comment:2068719</id>
    <thr:in-reply-to ref="tag:www.insideria.com,2008://34.26362" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html"/>
    <link rel="alternate" type="text/html" href="http://www.insideria.com/2008/09/papervision3d-movement-going-w.html#comment-2068719" />
    <title>Comment from David on 2009-07-21</title>
    <author>
        <name>David</name>
        <uri></uri>
    </author>
    <content type="html" xml:lang="en" xml:base="">
        <![CDATA[<p>Very interesting. Would be very helpful if the promised zipped code could be available (I'm writing this about eight months after the last person requested!). </p>]]>
    </content>
    <published>2009-07-21T13:37:46Z</published>
  </entry>

</feed
