<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>AS_Blog</title>
	<atom:link href="http://www.tsoin.com/asblog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tsoin.com/asblog</link>
	<description>AS2, AS3, Flash, Flex, AIR....</description>
	<pubDate>Wed, 08 Oct 2008 12:14:06 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Away3D, partie II</title>
		<link>http://www.tsoin.com/asblog/2008/10/02/away3d-partie-ii/</link>
		<comments>http://www.tsoin.com/asblog/2008/10/02/away3d-partie-ii/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 14:10:42 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[Développement]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=92</guid>
		<description><![CDATA[Suite au tutoriel d&#8217;introduction à Away3D, passons directement à l&#8217;étape texture et lissage&#8230;

<object	type="application/x-shockwave-flash"
			data="http://www.tsoin.com/asblog/tutoriel/Away3D/004/Away3D_004.swf"
			width="600"
			height="400">
	<param name="movie" value="http://www.tsoin.com/asblog/tutoriel/Away3D/004/Away3D_004.swf" />
</object>
Voir &#38; Télécharger les sources »
]]></description>
			<content:encoded><![CDATA[<p>Suite au tutoriel d&#8217;introduction à Away3D, passons directement à l&#8217;étape texture et lissage&#8230;<br />
<center>
<object	type="application/x-shockwave-flash"
			data="http://www.tsoin.com/asblog/tutoriel/Away3D/004/Away3D_004.swf"
			width="600"
			height="400">
	<param name="movie" value="http://www.tsoin.com/asblog/tutoriel/Away3D/004/Away3D_004.swf" />
</object></center><br />
<a href="http://www.tsoin.com/asblog/tutoriel/Away3D/004/" target="_blank">Voir &amp; Télécharger les sources »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/10/02/away3d-partie-ii/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Away3D, partie I</title>
		<link>http://www.tsoin.com/asblog/2008/09/30/away3d-partie-i/</link>
		<comments>http://www.tsoin.com/asblog/2008/09/30/away3d-partie-i/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 15:43:52 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[Développement]]></category>

		<category><![CDATA[Away3D]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=88</guid>
		<description><![CDATA[Away3D
 - Site »
 - Téléchargement  »
 - Documentation »
 - Tutorial »
Concurrent direct de Papervision3D, Away3D était, avant les dernières versions de PV3D, plus simple à mettre en place, et cela reste le cas, même si PV3D a pas mal fait évoluer les choses&#8230;
La mécanique reste la même : une Scene3D, une Camera3D, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Away3D</strong><br />
<a href="http://away3d.com/" target="_blank"> - Site »</a><br />
<a href="http://away3d.com/downloads" target="_blank"> - Téléchargement  »</a><br />
<a href="http://away3d.com/documentation" target="_blank"> - Documentation »</a><br />
<a href="http://away3d.com/tutorials" target="_blank"> - Tutorial »</a></p>
<p>Concurrent direct de Papervision3D, Away3D était, avant les dernières versions de PV3D, plus simple à mettre en place, et cela reste le cas, même si PV3D a pas mal fait évoluer les choses&#8230;<br />
La mécanique reste la même : une Scene3D, une Camera3D, une View3D et&#8230; c&#8217;est tout pas de CameraController, ni de BasicRenderEngine&#8230;. on s&#8217;arrête là, rien de plus simple !<br />
<span id="more-88"></span><br />
Pour faire le rendu, il faut appeler une fonction :<br />
- <em>View3D.render(); </em></p>
<p>Voici une utilisation &#8220;vide&#8221; :</p>
<div class="codeAS">package {</p>
<p>&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;* Auteur: Vincent Helwig<br />
&nbsp;&nbsp;&nbsp;* Date: 30.09.2008<br />
&nbsp;&nbsp;&nbsp;* Website: http://www.tsoin.com<br />
&nbsp;&nbsp;&nbsp;* Description: Away3D - Intégration du moteur<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;**/</p>
<p>&nbsp;&nbsp;&nbsp;import away3d.cameras.Camera3D;<br />
&nbsp;&nbsp;&nbsp;import away3d.containers.Scene3D;<br />
&nbsp;&nbsp;&nbsp;import away3d.containers.View3D;</p>
<p>&nbsp;&nbsp;&nbsp;import flash.display.Sprite;<br />
&nbsp;&nbsp;&nbsp;import flash.display.StageAlign;<br />
&nbsp;&nbsp;&nbsp;import flash.display.StageScaleMode;<br />
&nbsp;&nbsp;&nbsp;import flash.events.Event;</p>
<p>&nbsp;&nbsp;&nbsp;[SWF(backgroundColor="#000000", frameRate="100", width="600", height="400")]</p>
<p>&nbsp;&nbsp;&nbsp;public class Away3D_001 extends Sprite	{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var scene:Scene3D;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var camera:Camera3D;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var view:View3D;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function Away3D_001() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addEventListener(Event.ADDED_TO_STAGE, init);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private function init(event:Event):void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;removeEventListener(Event.ADDED_TO_STAGE, init);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.scaleMode = StageScaleMode.NO_SCALE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.align = StageAlign.TOP_LEFT;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setupScene();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private function setupScene():void {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene = new Scene3D();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera = new Camera3D({zoom:10, focus:50, x:0, y:0, z:-300});</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view = new View3D({scene:scene, camera:camera});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(view);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private function onEnterFrame(event:Event):void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view.render();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;}</p>
<p>}</p>
<p><a href="http://www.tsoin.com/asblog/tutoriel/Away3D/001/" target="_blank">Voir &#038; Télécharger les sources &raquo;</a></div>
<p>Voyons maintenant l&#8217;ajout d&#8217;un cube, vous remarquerez l&#8217;ajout du package <em>net.hires.utils.Stats</em>, afin de visualiser les performances de l&#8217;animation :</p>
<p><center>
<object	type="application/x-shockwave-flash"
			data="http://www.tsoin.com/asblog/tutoriel/Away3D/002/Away3D_002.swf"
			width="600"
			height="400">
	<param name="movie" value="http://www.tsoin.com/asblog/tutoriel/Away3D/002/Away3D_002.swf" />
</object></center></p>
<div class="codeAS">package {</p>
<p>&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;* Auteur: Vincent Helwig<br />
&nbsp;&nbsp;&nbsp;* Date: 30.09.2008<br />
&nbsp;&nbsp;&nbsp;* Website: http://www.tsoin.com<br />
&nbsp;&nbsp;&nbsp;* Description: Away3D - Création d’un cube<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;**/</p>
<p>&nbsp;&nbsp;&nbsp;import away3d.cameras.Camera3D;<br />
&nbsp;&nbsp;&nbsp;import away3d.containers.ObjectContainer3D;<br />
&nbsp;&nbsp;&nbsp;import away3d.containers.Scene3D;<br />
&nbsp;&nbsp;&nbsp;import away3d.containers.View3D;<br />
&nbsp;&nbsp;&nbsp;import away3d.materials.WireColorMaterial;<br />
&nbsp;&nbsp;&nbsp;import away3d.primitives.Cube;</p>
<p>&nbsp;&nbsp;&nbsp;import flash.display.Sprite;<br />
&nbsp;&nbsp;&nbsp;import flash.display.StageAlign;<br />
&nbsp;&nbsp;&nbsp;import flash.display.StageScaleMode;<br />
&nbsp;&nbsp;&nbsp;import flash.events.Event;<br />
&nbsp;&nbsp;&nbsp;import flash.events.MouseEvent;</p>
<p>&nbsp;&nbsp;&nbsp;import net.hires.utils.Stats;</p>
<p>&nbsp;&nbsp;&nbsp;[SWF(backgroundColor="#000000", frameRate="100", width="600", height="400")]</p>
<p>&nbsp;&nbsp;&nbsp;public class Away3D_002 extends Sprite	{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var scene:Scene3D;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var camera:Camera3D;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var view:View3D;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var objectContainer:ObjectContainer3D;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var cube:Cube;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function Away3D_002() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addEventListener(Event.ADDED_TO_STAGE, init);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var __stats:Stats = new Stats();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__stats.width = 75;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__stats.x = 525;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild( __stats );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private function init(event:Event):void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;removeEventListener(Event.ADDED_TO_STAGE, init);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.scaleMode = StageScaleMode.NO_SCALE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.align = StageAlign.TOP_LEFT;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setupScene();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private function setupScene():void {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene = new Scene3D();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera = new Camera3D({zoom: 10, focus: 50, x:0, y:0, z:-300});</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view = new View3D({scene:scene, camera:camera});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view.x = stage.stageWidth / 2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view.y = stage.stageHeight / 2;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(view);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cube = new Cube({ width:100, height: 100});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cube.material = new WireColorMaterial(0&#215;000000, {wirecolor:0&#215;789789});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene.addChild( cube );</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private function onEnterFrame(event:Event):void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view.render();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private function onMouseMove(event:Event):void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cube.rotationX = ( stage.mouseY * 180 ) / stage.stageHeight - 90;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cube.rotationY = ( stage.mouseX * 180 ) / stage.stageWidth - 90;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;}</p>
<p>}</p>
<p><a href="http://www.tsoin.com/asblog/tutoriel/Away3D/002/" target="_blank">Voir &#038; Télécharger les sources &raquo;</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/30/away3d-partie-i/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Alternativa3D, partie III</title>
		<link>http://www.tsoin.com/asblog/2008/09/30/alternativa3d-partie-iii/</link>
		<comments>http://www.tsoin.com/asblog/2008/09/30/alternativa3d-partie-iii/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 14:21:01 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[Développement]]></category>

		<category><![CDATA[Alternativa3D]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=86</guid>
		<description><![CDATA[Après le filaire, on passe à la texture et au lissage&#8230;.

<object	type="application/x-shockwave-flash"
			data="http://www.tsoin.com/asblog/tutoriel/Alternativa3D/004/Alternativa3D_004.swf"
			width="600"
			height="400">
	<param name="movie" value="http://www.tsoin.com/asblog/tutoriel/Alternativa3D/004/Alternativa3D_004.swf" />
</object>
Voir &#38; Télécharger les sources »
]]></description>
			<content:encoded><![CDATA[<p>Après le filaire, on passe à la texture et au lissage&#8230;.</p>
<p><center>
<object	type="application/x-shockwave-flash"
			data="http://www.tsoin.com/asblog/tutoriel/Alternativa3D/004/Alternativa3D_004.swf"
			width="600"
			height="400">
	<param name="movie" value="http://www.tsoin.com/asblog/tutoriel/Alternativa3D/004/Alternativa3D_004.swf" />
</object></center></p>
<p><a href="http://www.tsoin.com/asblog/tutoriel/Alternativa3D/004/" target="_blank">Voir &amp; Télécharger les sources »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/30/alternativa3d-partie-iii/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hi-Res! Stats</title>
		<link>http://www.tsoin.com/asblog/2008/09/29/hi-res-stats/</link>
		<comments>http://www.tsoin.com/asblog/2008/09/29/hi-res-stats/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 16:13:42 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[Développement]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[FlashPlayer]]></category>

		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=85</guid>
		<description><![CDATA[Basé sur le composant de statistique de Alternativa3D, vous pouvez télécharger ici » la classe permettant de tester les performances de vos application (FPS, mémoire&#8230;.)
]]></description>
			<content:encoded><![CDATA[<p>Basé sur le composant de statistique de Alternativa3D, vous pouvez <a href="http://code.google.com/p/mrdoob/wiki/stats" target="_blank">télécharger ici »</a> la classe permettant de tester les performances de vos application (FPS, mémoire&#8230;.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/29/hi-res-stats/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Alternativa3D, partie II</title>
		<link>http://www.tsoin.com/asblog/2008/09/26/alternativa3d-partie-ii/</link>
		<comments>http://www.tsoin.com/asblog/2008/09/26/alternativa3d-partie-ii/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 14:29:06 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[Développement]]></category>

		<category><![CDATA[Alternativa3D]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=83</guid>
		<description><![CDATA[Évolution de mon dernier tutorial sur Alternativa 3D.
Rien de nouveau, juste la possibilité de choisir un Object3D avec une lettre du clavier, modification de la coordonnée z de la camera avec la molette&#8230;

<object	type="application/x-shockwave-flash"
			data="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/Alternativa3D_003.swf"
			width="600"
			height="400">
	<param name="movie" value="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/Alternativa3D_003.swf" />
</object>
Voir &#38; Télécharger les sources »
]]></description>
			<content:encoded><![CDATA[<p>Évolution de mon dernier tutorial sur Alternativa 3D.<br />
Rien de nouveau, juste la possibilité de choisir un Object3D avec une lettre du clavier, modification de la coordonnée z de la camera avec la molette&#8230;</p>
<p><center>
<object	type="application/x-shockwave-flash"
			data="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/Alternativa3D_003.swf"
			width="600"
			height="400">
	<param name="movie" value="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/Alternativa3D_003.swf" />
</object></center></p>
<p><a href="http://www.tsoin.com/asblog/tutoriel/Alternativa3D/003/" target="_blank">Voir &amp; Télécharger les sources »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/26/alternativa3d-partie-ii/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Alternativa3D, partie I</title>
		<link>http://www.tsoin.com/asblog/2008/09/26/alternativa3d_i/</link>
		<comments>http://www.tsoin.com/asblog/2008/09/26/alternativa3d_i/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 14:25:25 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[Développement]]></category>

		<category><![CDATA[Alternativa3D]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=82</guid>
		<description><![CDATA[Alternativa3D
 - Site »
 - Téléchargement ( enregistrement obligatoire ) »
 - Documentation &#38; Tutorial »
Dernier venu dans le monde des moteurs 3D, Alternativa3D a réussi à nous bluffer avec quelques unes de ces démos, notamment le bunker » etsi l&#8217;équipe russe a déjà porté son moteur 3D sous Flash10, les tutoriaux se feront sous [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Alternativa3D</strong><br />
<a href="http://alternativaplatform.com/en/alternativa3d/" target="_blank"> - Site »</a><br />
<a href="http://alternativaplatform.com/en/alternativa3d/license.html" target="_blank"> - Téléchargement ( enregistrement obligatoire ) »</a><br />
<a href="http://docs.alternativaplatform.com/display/TDEN/Home" target="_blank"> - Documentation &amp; Tutorial »</a></p>
<p>Dernier venu dans le monde des moteurs 3D, Alternativa3D a réussi à nous bluffer avec quelques unes de ces démos, notamment <a href="http://blog.alternativaplatform.com/ru/files/2008/04/bunker.swf" target="_blank">le bunker »</a> etsi l&#8217;équipe russe a déjà porté son moteur 3D sous Flash10, les tutoriaux se feront sous Flash 9 pour comparer au même niveau que ces concurents qui n&#8217;ont pas encore porté leur moteur 3D dans la future version du FlashPlayer.</p>
<p>Alternativa3D se démarque aussi car son moteur n&#8217;est gratuit que pour une utilisation non-commerciale, les sources sont donc compilées en fichiers swc (Alternativa3D.swc, AlternativaTypes.swc, AlternativaUtils.swc), il suffit d&#8217;ajouter ces fichiers à votre projet pour pouvoir utiliser Alternativa 3D.</p>
<p>Comme pour Away3D et Papervision3D, Alternativa3D définit une instance de Scene3D, de Camera3D et de View3D. Cependant la Camera3D est une caméra avec peu de paramètre,  c&#8217;est en effet la classe CameraController qui contrôle la caméra. Il faut spécifier le paramètre <em>camera</em> de l&#8217;Object3D, contenu dans dans Scene3D, ainsi que le paramètre <em>camera</em> de la View3D, ainsi que le paramètre <em>camera</em> du CameraController, avec comme valeur la Camera3D.<br />
<span id="more-82"></span><br />
Pour faire le rendu, il faut appeler deux fonctions :<br />
- en premier : <em>cameraController.processInput(); </em><br />
- puis : <em>scene.calculate();</em>.</p>
<p>Voici une utilisation &#8220;vide&#8221;, vous noterez l&#8217;utilisation  de la fonction static init de la class FPS <em>FPS.init(stage)</em>, qui permet l&#8217;affichage des informations FPS et Memory Usage</p>
<div class="codeAS">package {</p>
<p>&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;* Auteur: Vincent Helwig<br />
&nbsp;&nbsp;&nbsp;* Date: 25.09.2008<br />
&nbsp;&nbsp;&nbsp;* Website: http://www.tsoin.com<br />
&nbsp;&nbsp;&nbsp;* Description: Alternativa3D - Intégration du moteur<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;**/</p>
<p>&nbsp;&nbsp;&nbsp;import alternativa.engine3d.controllers.CameraController;<br />
&nbsp;&nbsp;&nbsp;import alternativa.engine3d.core.Camera3D;<br />
&nbsp;&nbsp;&nbsp;import alternativa.engine3d.core.Object3D;<br />
&nbsp;&nbsp;&nbsp;import alternativa.engine3d.core.Scene3D;<br />
&nbsp;&nbsp;&nbsp;import alternativa.engine3d.display.View;<br />
&nbsp;&nbsp;&nbsp;import alternativa.utils.FPS;</p>
<p>&nbsp;&nbsp;&nbsp;import flash.display.Sprite;<br />
&nbsp;&nbsp;&nbsp;import flash.display.StageAlign;<br />
&nbsp;&nbsp;&nbsp;import flash.display.StageScaleMode;<br />
&nbsp;&nbsp;&nbsp;import flash.events.Event;</p>
<p>&nbsp;&nbsp;&nbsp;[SWF(backgroundColor="#000000", frameRate="100", width="600", height="400")]</p>
<p>&nbsp;&nbsp;&nbsp;public class Alternativa3D_001 extends Sprite   {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var scene:Scene3D;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var view:View;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var camera:Camera3D;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var cameraController:CameraController;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function Alternativa3D_001()   {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addEventListener(Event.ADDED_TO_STAGE, init);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function init(e:Event): void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;removeEventListener(Event.ADDED_TO_STAGE, init);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.scaleMode = StageScaleMode.NO_SCALE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.align = StageAlign.TOP_LEFT;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setupScene();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private function setupScene():void {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene = new Scene3D();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene.root = new Object3D();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera = new Camera3D();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera.x = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera.y = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera.z = -300;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera.zoom = 10;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera.fov = 1.5;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene.root.addChild(camera);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view = new View();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view.width = 600;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view.height = 400;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(view);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view.camera = camera;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cameraController = new CameraController(stage);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cameraController.camera = camera;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FPS.init(stage);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private function onEnterFrame(e:Event):void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cameraController.processInput();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene.calculate();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;}</p>
<p>}</p>
<p><a href="http://www.tsoin.com/asblog/tutoriel/Alternativa3D/001/" target="_blank">Voir &#038; Télécharger les sources &raquo;</a></div>
<p>Voyons maintenant l&#8217;ajout d&#8217;un cube, la rotation de celui ci suivant la position de la souris, ainsi que le rajout de segments avec les touches + / - du clavier (en gras les modifications par rapport au script précédent).<br /><span style="text-decoration: underline;">Attention !!! Alternativa3D utilise des angles en radians et non en degrés, contrairement aux autres moteurs 3D&#8230;</span><br />
<center>
<object	type="application/x-shockwave-flash"
			data="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/Alternativa3D_002.swf"
			width="600"
			height="400">
	<param name="movie" value="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/Alternativa3D_002.swf" />
</object></center></p>
<div class="codeAS">package {</p>
<p>&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;* Auteur: Vincent Helwig<br />
&nbsp;&nbsp;&nbsp;* Date: 25.09.2008<br />
&nbsp;&nbsp;&nbsp;* Website: http://www.tsoin.com<br />
&nbsp;&nbsp;&nbsp;* Description: Alternativa3D - Création d&#8217;un cube<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;**/</p>
<p>&nbsp;&nbsp;&nbsp;import alternativa.engine3d.controllers.CameraController;<br />
&nbsp;&nbsp;&nbsp;import alternativa.engine3d.core.Camera3D;<br />
&nbsp;&nbsp;&nbsp;import alternativa.engine3d.core.Object3D;<br />
&nbsp;&nbsp;&nbsp;import alternativa.engine3d.core.Scene3D;<br />
&nbsp;&nbsp;&nbsp;import alternativa.engine3d.display.View;<br />
&nbsp;&nbsp;&nbsp;<strong>import alternativa.engine3d.materials.WireMaterial;</strong><br />
&nbsp;&nbsp;&nbsp;<strong>import alternativa.engine3d.primitives.Box;</strong><br />
&nbsp;&nbsp;&nbsp;import alternativa.utils.FPS;</p>
<p>&nbsp;&nbsp;&nbsp;import flash.display.Sprite;<br />
&nbsp;&nbsp;&nbsp;import flash.display.StageAlign;<br />
&nbsp;&nbsp;&nbsp;import flash.display.StageScaleMode;<br />
&nbsp;&nbsp;&nbsp;import flash.events.Event;<br />
&nbsp;&nbsp;&nbsp;<strong>import flash.events.KeyboardEvent;</strong><br />
&nbsp;&nbsp;&nbsp;<strong>import flash.events.MouseEvent;</strong></p>
<p>&nbsp;&nbsp;&nbsp;[SWF(backgroundColor="#000000", frameRate="100", width="600", height="400")]</p>
<p>&nbsp;&nbsp;&nbsp;public class Alternativa3D_002 extends Sprite	{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var scene:Scene3D;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var view:View;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var camera:Camera3D;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var cameraController:CameraController;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>private var box:Box;</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var _numFaces:uint = 3;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function Alternativa3D_002()	{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addEventListener(Event.ADDED_TO_STAGE, init);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function init(e:Event): void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;removeEventListener(Event.ADDED_TO_STAGE, init);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.scaleMode = StageScaleMode.NO_SCALE;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.align = StageAlign.TOP_LEFT;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setupScene();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private function setupScene():void {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene = new Scene3D();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene.root = new Object3D();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera = new Camera3D();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera.x = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera.y = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera.z = -300;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera.zoom = 10;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera.fov = 1.5;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene.root.addChild(camera);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view = new View();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view.width = 600;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view.height = 400;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild(view);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view.camera = camera;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>createBox();</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cameraController = new CameraController(stage);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cameraController.camera = camera;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FPS.init(stage);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>private function onMouseMove(event:Event):void {</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>box.rotationX = Math.PI * ( ( stage.mouseY * 180 ) / stage.stageHeight - 90 ) / 180;</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>box.rotationY = Math.PI * ( ( stage.mouseX * 180 ) / stage.stageWidth - 90 ) / 180;</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>}</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>private function createBox():void {</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>box = new Box(100, 100, 100, _numFaces, _numFaces, _numFaces);</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>box.cloneMaterialToAllSurfaces(new WireMaterial(1, 0&#215;789789));</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>scene.root.addChild( box );</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>private function onKeyDown(event:KeyboardEvent):void {</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>if ( event.keyCode == 107 || event.keyCode == 187 ) {</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>_numFaces++;</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>} else if ( ( event.keyCode == 109 || event.keyCode == 54) &amp;&amp; _numFaces != 1 ) {</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>_numFaces&#8211;;</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>}</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>if ( box.parent != null) { scene.root.removeChild( box ); }</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>createBox();</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>}</strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private function onEnterFrame(event:Event):void {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cameraController.processInput();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene.calculate();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;}<br />
}</p>
<p><a href="http://www.tsoin.com/asblog/tutoriel/Alternativa3D/002/" target="_blank">Voir &#038; Télécharger les sources &raquo;</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/26/alternativa3d_i/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Moteurs 3D : Alternativa3D, Away3D, Papervision3D &#038; Sandy3D</title>
		<link>http://www.tsoin.com/asblog/2008/09/26/moteurs-3d-alternativa3d-away3d-papervision3d-sandy3d/</link>
		<comments>http://www.tsoin.com/asblog/2008/09/26/moteurs-3d-alternativa3d-away3d-papervision3d-sandy3d/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 14:22:06 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[Développement]]></category>

		<category><![CDATA[Alternativa3D]]></category>

		<category><![CDATA[Away3D]]></category>

		<category><![CDATA[Papervision3D]]></category>

		<category><![CDATA[Sandy3D]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=84</guid>
		<description><![CDATA[Les moteurs de rendu 3D, ce n&#8217;est pas que Papervision3D, et ce n&#8217;est pas parce qu&#8217;un site utilise de la 3D que c&#8217;est du Papervision. C&#8217;est devant cet amalgam généralisé, et qui m&#8217;exaspère au possible, que je me suis décidé à faire ce post, afin de commencer une comparaison des différents moteurs 3D, et donc [...]]]></description>
			<content:encoded><![CDATA[<p>Les moteurs de rendu 3D, ce n&#8217;est pas que Papervision3D, et ce n&#8217;est pas parce qu&#8217;un site utilise de la 3D que c&#8217;est du Papervision. C&#8217;est devant cet amalgam généralisé, et qui m&#8217;exaspère au possible, que je me suis décidé à faire ce post, afin de commencer une comparaison des différents moteurs 3D, et donc montrer que Papervision n&#8217;est pas la seule et unique réponse à un projet 3D.</p>
<p>Pour me resituer dans l&#8217;univers de la 3D dans Flash, je ne suis pas pro ou anti Papervision, mais comme pour chaque développement, il y a toujours plusieurs solutions, et il est important de savoir quels sont les avantages de tel ou tel  type de développement, et donc de connaitres les avantages et inconvénients de tel ou  tel moteur 3D.</p>
<p>Je ne vais pas reprendre les bases de la 3D, vous pouvez trouver un article extrêment complet et intéressant sur le site de <a href="http://www.flashmagazine.com/tutorials/detail/flash_3d_basics/" target="_blank">flashmagazine.com »</a>.</p>
<p>Le sommaire des tutoriaux / comparatifs de ces différents moteurs 3D sera mis à jour&#8230; :</p>
<ul>
<li><a href="http://www.tsoin.com/asblog/2008/09/26/alternativa3d_i/">Alternativa3D, partie I</a></li>
<li><a href="http://www.tsoin.com/asblog/2008/09/26/alternativa3d-partie-ii/">Alternativa3D, partie II</a></li>
<li><a href="http://www.tsoin.com/asblog/2008/09/30/alternativa3d-partie-iii/">Alternativa3D, partie III</a></li>
<p></p>
<li><a href="http://www.tsoin.com/asblog/2008/09/30/away3d-partie-i/">Away3D, partie I</a></li>
<li><a href="http://www.tsoin.com/asblog/2008/10/02/away3d-partie-ii/">Away3D, partie II</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/26/moteurs-3d-alternativa3d-away3d-papervision3d-sandy3d/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PV3DDebug par jasonbejot</title>
		<link>http://www.tsoin.com/asblog/2008/09/24/pv3ddebug-par-jasonbejot/</link>
		<comments>http://www.tsoin.com/asblog/2008/09/24/pv3ddebug-par-jasonbejot/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 15:21:40 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[Développement]]></category>

		<category><![CDATA[Débuggage]]></category>

		<category><![CDATA[Papervision]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=80</guid>
		<description><![CDATA[PV3DDebug est développé par jasonbejot et, comme son nom l&#8217;indique, permet de &#8220;débugger&#8221; ou du moins faciliter le développement de projet en Papervision&#8230; Au programme :
- Affichage des statistiques de rendu ( Triangles, temps de rendu, Particules&#8230;)
- Affichages des statistiques système ( FPS, mémoire utilisé, mémoire utilisé max&#8230;)
- Propriétés des caméras
- Choix de la caméra
Seul [...]]]></description>
			<content:encoded><![CDATA[<p>PV3DDebug est développé par <a href="http://jasonbejot.com/" target="_blank">jasonbejot</a> et, comme son nom l&#8217;indique, permet de &#8220;débugger&#8221; ou du moins faciliter le développement de projet en Papervision&#8230; Au programme :<br />
- Affichage des statistiques de rendu ( Triangles, temps de rendu, Particules&#8230;)<br />
- Affichages des statistiques système ( FPS, mémoire utilisé, mémoire utilisé max&#8230;)<br />
- Propriétés des caméras<br />
- Choix de la caméra</p>
<p>Seul bémol au tableau, il utilise une classe propriétaire (swc) chargée de gérer la vue principale du projet&#8230;<br />
<a href="http://jasonbejot.com/?page_id=22" target="_blank">Cliquer ici pour aller vers la page de PV3DDebug »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/24/pv3ddebug-par-jasonbejot/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Angle &#038; Degré</title>
		<link>http://www.tsoin.com/asblog/2008/09/24/angle-degre/</link>
		<comments>http://www.tsoin.com/asblog/2008/09/24/angle-degre/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 15:03:54 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[Développement]]></category>

		<category><![CDATA[Trigonométrie]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=79</guid>
		<description><![CDATA[Étant en plein période de test comparatif entre les différents moteurs 3D, il m&#8217;était nécessaire de passer de degré à radian, et inversement, donc pour rappel&#8230; :
radian = Math.PI * ( degre ) / 180;
degré = 180 * ( radian ) / Math.PI;
et un petit lien vers la page Wikipédia de la Trigonométrie &#187;
]]></description>
			<content:encoded><![CDATA[<p>Étant en plein période de test comparatif entre les différents moteurs 3D, il m&#8217;était nécessaire de passer de degré à radian, et inversement, donc pour rappel&#8230; :</p>
<p>radian = Math.PI * ( degre ) / 180;<br />
degré = 180 * ( radian ) / Math.PI;</p>
<p>et un petit lien vers la page Wikipédia de la <a href="http://fr.wikipedia.org/wiki/Trigonom%C3%A9trie" target="_blank">Trigonométrie &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/24/angle-degre/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Créer un filtre Pixel Bender</title>
		<link>http://www.tsoin.com/asblog/2008/09/18/creer-un-filtre-pixel-bender/</link>
		<comments>http://www.tsoin.com/asblog/2008/09/18/creer-un-filtre-pixel-bender/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 15:09:19 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[Pixel Bender]]></category>

		<category><![CDATA[effets]]></category>

		<category><![CDATA[filtres]]></category>

		<category><![CDATA[PBJ]]></category>

		<category><![CDATA[PBK]]></category>

		<category><![CDATA[Pixel Bender Toolkit]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=67</guid>
		<description><![CDATA[Après l&#8217;introduction à Pixel Bender, passons à la pratique, et voyons comment créer un filtre Pixel Bender, avec Pixel Bender Toolkit, que vous pouvez télécharger ici »
L&#8217;application est découpée en trois parties :


La visualisation du filtre sur une image
Le code du filtre
Les paramètres du filtre

Le source du filtre Pixel Bender a pour extension .pbk (Pixel [...]]]></description>
			<content:encoded><![CDATA[<p>Après l&#8217;<a href="2008/09/08/introduction-a-pixel-bender/" target="_blank">introduction à Pixel Bender</a>, passons à la pratique, et voyons comment créer un filtre Pixel Bender, avec Pixel Bender Toolkit, que vous pouvez <a href="http://labs.adobe.com/wiki/index.php/Pixel_Bender_Toolkit#Installation_Instructions" target="_blank">télécharger ici »</a></p>
<p>L&#8217;application est découpée en trois parties :</p>
<p><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/pixel_bender.jpg" /></center></p>
<ol>
<li>La visualisation du filtre sur une image</li>
<li>Le code du filtre</li>
<li>Les paramètres du filtre</li>
</ol>
<p>Le source du filtre Pixel Bender a pour extension .pbk (Pixel Bender Kernel), et le fichier compilé a pour extension .pbj (Pixel Bender Byte Code).  Évidemment si vous voulez modifier un filtre, il vous faudra le fichier source .pbk, si vous essayer d&#8217;ouvrir un fichier .pbj vous n&#8217;en tirerez rien&#8230;.</p>
<p>Le code est composé de deux parties obligatoire, une déclaration de langage et le noyau (kernel, en anglais) du code. Le kernel est définit comme une class C++, une nouveauté pour les Flasheurs qui ne viennent pas du monde du développement &#8220;classique&#8221;. Le kernel est un object qui définit le résultat de sortie d&#8217;un pixel, quelque soit le nombre d&#8217;images en entrée. Il s&#8217;execute en parrallèle de chaque pixel pour générer une seule image en sortie. il doit au moins avoir une fonction <em>evaluatePixel</em>, ainsi qu&#8217;un paramètre de sortie de type <em>pixel</em>, et depuis la dernière beta du Toolkit, des MetaData&#8230;</p>
<p>Le kernel est executé pour chaque pixel de l&#8217;image de sortie, c&#8217;est à dire que vous ne pouvez pas définir un kernel pour tel partie l&#8217;image et un kernel pour tel partie de l&#8217;image, vous devez gérer  dans un seul et même kernel les filtres que vous voulez utiliser. La seule chose qui change a chaque pixel étant la fonction <em>outCoord() </em>qui renvoit la position du pixel &#8220;courrant&#8221;.</p>
<p>IMPORTANT !<br />
Avant de rentrer dans le vif du sujet, petits conseils, suite à quelques tests :<br />
- Ne pas mettre d&#8217;accent dans le nom de son kernel : kernel EffetCrypté ne fonctionnera pas&#8230;<br />
- Mettre les chiffre en float, il ne semble pas prendre les integer (apparement ca vient du C)</p>
<p>Pour créer un nouveau filtre Kernel, seléctionner File &gt; New Kernel Filter, il apparaitra alors le code ci-dessous, qui est le code de base d&#8217;un filtre :</p>
<div class="codeAS">&lt;languageVersion : 1.0;&gt;<br />
kernel NewFilter<br />
&lt;  <br />
&nbsp;&nbsp;&nbsp;namespace : &#8220;Your Namespace&#8221;;<br />
&nbsp;&nbsp;&nbsp;vendor : &#8220;Your Vendor&#8221;;<br />
&nbsp;&nbsp;&nbsp;version : 1;<br />
&nbsp;&nbsp;&nbsp;description : &#8220;your description&#8221;;<br />
&gt;<br />
{<br />
&nbsp;&nbsp;&nbsp;input image4 src;<br />
&nbsp;&nbsp;&nbsp;output pixel4 dst;</p>
<p>&nbsp;&nbsp;&nbsp;void<br />
&nbsp;&nbsp;&nbsp;evaluatePixel() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dst = sampleNearest(src,outCoord());<br />
&nbsp;&nbsp;&nbsp;}<br />
}</p>
<p><a href="wp-content/uploads/2008/09/default_pbk.pbk">Télécharger le .pbk &raquo;</a></div>
<p>Si vous cliquez sur le bouton <em>Run</em>, et que vous avez sélectionner une image, vous aurez comme résultat de votre filtre&#8230; la même image. C&#8217;est logique si nous regardons le code, l&#8217;image de sortie dst, est juste une copie de l&#8217;image d&#8217;entré src, la fonction <em>sampleNearest </em>accède au pixel et à l&#8217;image passé en paramètre. La fonction <em>outCoord()</em> renvoit la position du position actuel, donc à chaque pixel de l&#8217;image src, le kernel renvoit en dst le même pixel, sans modification&#8230;.</p>
<p>Si on veut maintenant faire des modifications sur l&#8217;image, il suffit de les faire sur le pixel de l&#8217;image en entrée.<br />
Pour changer les canaux de l&#8217;image, on définit la variable p en <em>pixel4</em>, puis on modifie les propriétés, dans le cas suivant, on modifie le bleu de l&#8217;image :</p>
<div class="codeAS">&lt;languageVersion : 1.0;&gt;<br />
kernel ModificationBleu<br />
&lt;<br />
&nbsp;&nbsp;&nbsp;namespace : &#8220;com.tsoin.asblog&#8221;;<br />
&nbsp;&nbsp;&nbsp;vendor : &#8220;Vincent Helwig&#8221;;<br />
&nbsp;&nbsp;&nbsp;version : 1;<br />
&nbsp;&nbsp;&nbsp;description : &#8220;Modification du bleu&#8221;;<br />
&gt;<br />
{<br />
&nbsp;&nbsp;&nbsp;input image4 src;<br />
&nbsp;&nbsp;&nbsp;output pixel4 dst;</p>
<p>&nbsp;&nbsp;&nbsp;void<br />
&nbsp;&nbsp;&nbsp;evaluatePixel() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixel4 p = sampleNearest(src,outCoord() );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.b *= 5.0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// p.r *= 5.0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// p.g *= 5.0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dst = p;<br />
&nbsp;&nbsp;&nbsp;}<br />
}</p>
<p><a href="wp-content/uploads/2008/09/bleu.pbk">Télécharger le .pbk &raquo;</a></div>
<p>On rajoutant un paramètre au kernel, on pourra modifier le filtre directement d&#8217;ActionScript, la création de ce paramètre affichera automatiquement la variable dans la partie &#8220;Paramètre du Filtre -&gt; 3&#8243;, cité plus haut.<br />
On rajoute donc le paramètre delta pour modifier l&#8217;intensité du bleu :</p>
<div class="codeAS">&lt;languageVersion : 1.0;&gt;<br />
kernel ModificationBleuParametre<br />
&lt;  <br />
&nbsp;&nbsp;&nbsp;namespace : &#8220;com.tsoin.asblog&#8221;;<br />
&nbsp;&nbsp;&nbsp;vendor : &#8220;Vincent Helwig&#8221;;<br />
&nbsp;&nbsp;&nbsp;version : 1;<br />
&nbsp;&nbsp;&nbsp;description : &#8220;Modification du bleu en paramètre&#8221;;<br />
&gt;<br />
{<br />
&nbsp;&nbsp;&nbsp;input image4 src;<br />
&nbsp;&nbsp;&nbsp;output pixel4 dst;</p>
<p>&nbsp;&nbsp;&nbsp;parameter float delta<br />
&nbsp;&nbsp;&nbsp;&lt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minValue: 0.0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxValue: 5.0;<br />
&nbsp;&nbsp;&nbsp;&gt;;</p>
<p>&nbsp;&nbsp;&nbsp;void<br />
&nbsp;&nbsp;&nbsp;evaluatePixel() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixel4 p = sampleNearest(src,outCoord() );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.b *= delta;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dst = p;<br />
&nbsp;&nbsp;&nbsp;}<br />
}</p>
<p><a href="wp-content/uploads/2008/09/bleu_param.pbk">Télécharger le .pbk &raquo;</a></div>
<p>Après quelques bidouillages, voici un petit exemple de qu&#8217;il est possible de faire (effet &#8220;Effet Canal Plus&#8221;) :</p>
<p><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/pixel_bender_cplus.jpg" /></center></p>
<div class="codeAS">&lt;languageVersion : 1.0;&gt;<br />
kernel EffetCanalPlus<br />
&lt;  <br />
&nbsp;&nbsp;&nbsp;namespace : &#8220;com.tsoin.asblog&#8221;;<br />
&nbsp;&nbsp;&nbsp;vendor : &#8220;Vincent Helwig&#8221;;<br />
&nbsp;&nbsp;&nbsp;version : 1;<br />
&nbsp;&nbsp;&nbsp;description : &#8220;Effet Canal Plus&#8221;;<br />
&gt;<br />
{<br />
&nbsp;&nbsp;&nbsp;input image4 src;<br />
&nbsp;&nbsp;&nbsp;output pixel4 dst;</p>
<p>&nbsp;&nbsp;&nbsp;parameter float delta<br />
&nbsp;&nbsp;&nbsp;&lt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;minValue: 0.0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxValue: 5.0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;defaultValue: 2.5;<br />
&nbsp;&nbsp;&nbsp;&gt;;</p>
<p>&nbsp;&nbsp;&nbsp;void<br />
&nbsp;&nbsp;&nbsp;evaluatePixel() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float2 coord = outCoord();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;coord.y += sin(coord.y) * delta;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixel4 p = sampleNearest(src,coord);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dst = p;<br />
&nbsp;&nbsp;&nbsp;}<br />
}</p>
<p><a href="wp-content/uploads/2008/09/effet_crypte.pbk">Télécharger le .pbk &raquo;</a></div>
<p>Pour finir, l&#8217;intégration dans flash nécessite le fichier compilé de Pixel Bender : .pbj, pour cela, il faut faire dans Pixel Bender Toolkit : Files > Export Kernel File For Flash Player&#8230;<br />
Je posterais bientôt l&#8217;intégration du fichier .pbj dans Flash&#8230;.</p>
<p>Quelques exemples :<br />
 - <a href="http://www.anttikupila.com/flash/pixel-bender-levels-example/" target="_blank">Levels Exemples &raquo;</a><br />
 - <a href="http://www.mikechambers.com/blog/2008/09/17/pixel-bender-tv-scanline-filter//" target="_blank">TV Scanline &raquo;</a><br />
- <a href="http://labs.adobe.com/wiki/index.php/Pixel_Bender_Toolkit:Gallery" target="_blank">Gallery Labs.adobe.com &raquo; ( certains scripts ne fonctionnent plus&#8230;)</a><br />
- <a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=productHome&#038;exc=26&#038;loc=en_us" target="_blank">Pixel Bender Exchange &raquo;</a></p>
<p><a href="http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid=72&#038;catid=661&#038;entercat=y" target="_blank">Forum Pixel Bender &raquo;</a><br />
<!--<br />
http://www.adobe.com/cfusion/exchange/index.cfm?event=productHome&amp;exc=26&amp;loc=en_us<br />
--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/18/creer-un-filtre-pixel-bender/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Release Candidate du Flash Player 10 - DLL pour FlashSwitcher</title>
		<link>http://www.tsoin.com/asblog/2008/09/17/premiere-release-candidate-du-flash-player-10/</link>
		<comments>http://www.tsoin.com/asblog/2008/09/17/premiere-release-candidate-du-flash-player-10/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 15:31:32 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[FlashPlayer]]></category>

		<category><![CDATA[CS4]]></category>

		<category><![CDATA[Flash Player 10]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=76</guid>
		<description><![CDATA[Depuis le 15 septembre, le site labs.adobe.com propose en téléchargement la Release Candidate du Flash Player 10. La version finale ne devrait donc plus tarder, peut être en même temps que la sortie de CS4, dont la date officielle sera annoncé le 23 septembre&#8230;
Vers la page du Flash Player 10 »
Vers le téléchargement »
Et comme [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis le 15 septembre, le site labs.adobe.com propose en téléchargement la Release Candidate du Flash Player 10. La version finale ne devrait donc plus tarder, peut être en même temps que la sortie de CS4, dont la date officielle sera annoncé le 23 septembre&#8230;</p>
<p><a href="http://labs.adobe.com/downloads/flashplayer10.html" target="_blank">Vers la page du Flash Player 10 »</a><br />
<a href="http://labs.adobe.com/technologies/flashplayer10/" target="_blank">Vers le téléchargement »</a></p>
<p>Et comme ca devient une habitude, je vous mets aussi la dll pour FlashSwitcher <img src='http://www.tsoin.com/asblog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<a href="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/10.0.12.10 RC.zip" target="_blank">Télécharger la DLL pour FlashSwitcher »</a></p>
<p>Pour rappel, la liste des nouveautés se trouve <a href="http://labs.adobe.com/technologies/flashplayer10/releasenotes.html#features" target="_blank">ici »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/17/premiere-release-candidate-du-flash-player-10/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SWC &#038; FlashDevelop</title>
		<link>http://www.tsoin.com/asblog/2008/09/10/swc-flashdevelop/</link>
		<comments>http://www.tsoin.com/asblog/2008/09/10/swc-flashdevelop/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 15:07:56 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[Développement]]></category>

		<category><![CDATA[Logiciel]]></category>

		<category><![CDATA[FlashDevelop]]></category>

		<category><![CDATA[SWC]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=74</guid>
		<description><![CDATA[En testant le moteur 3D de Alternativa Platform, Alternativa3D, j&#8217;ai d&#8217;abord tester l&#8217;intégration des fichiers SWC dans Flash, puis dans FlashDevelop, et je me suis retrouver face à une question&#8230; Comment intégrer des composants SWC dans FlashDevelop ?
Et bien c&#8217;est tout simple, il suffit de copier les SWC dans son projet, puis en cliquant droit [...]]]></description>
			<content:encoded><![CDATA[<p>En testant le moteur 3D de Alternativa Platform, Alternativa3D, j&#8217;ai d&#8217;abord tester l&#8217;intégration des fichiers SWC dans Flash, puis dans FlashDevelop, et je me suis retrouver face à une question&#8230; Comment intégrer des composants SWC dans FlashDevelop ?</p>
<p>Et bien c&#8217;est tout simple, il suffit de copier les SWC dans son projet, puis en cliquant droit sur les fichiers, sélectionner <em>&#8220;Add To Library&#8221;</em>, les classes inclues dans le composant seront alors importer dans FlashDevelop&#8230;</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-75 aligncenter" title="fd" src="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/fd.jpg" alt="" width="254" height="350" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/10/swc-flashdevelop/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Label, Text et HandCursor</title>
		<link>http://www.tsoin.com/asblog/2008/09/09/flex-label-text-et-usehandcursor/</link>
		<comments>http://www.tsoin.com/asblog/2008/09/09/flex-label-text-et-usehandcursor/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 12:52:01 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[Développement]]></category>

		<category><![CDATA[Flex]]></category>

		<category><![CDATA[mouseChildren]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=68</guid>
		<description><![CDATA[Lorsqu&#8217;on utilise les composants Label et Text de Flex, et qu&#8217;on définit une action MouseEvent.CLICK, il est plus ergonomique de définir visuellement ce lien afin d&#8217;aider l&#8217;utilisateur. Outre le soulignement, la gestion de du curseur (et de son passage en mode &#8220;Main&#8221;) permet d&#8217;indiquer à l&#8217;internaute que le texte survolé est cliquable.
Mais l&#8217;ajout de l&#8217;event [...]]]></description>
			<content:encoded><![CDATA[<p>Lorsqu&#8217;on utilise les composants Label et Text de Flex, et qu&#8217;on définit une action MouseEvent.CLICK, il est plus ergonomique de définir visuellement ce lien afin d&#8217;aider l&#8217;utilisateur. Outre le soulignement, la gestion de du curseur (et de son passage en mode &#8220;Main&#8221;) permet d&#8217;indiquer à l&#8217;internaute que le texte survolé est cliquable.</p>
<p>Mais l&#8217;ajout de l&#8217;event MouseEvent.CLICK ne gère pas automatiquement le passage de la souris en HandCursor, il faut donc utiliser les propriétés mouseChildren (hérité de <a href="http://livedocs.adobe.com/flex/3/langref/flash/display/DisplayObjectContainer.html" target="_blank">DisplayObjectContainer</a>), buttonMode (hérité de <a href="http://livedocs.adobe.com/flex/3/langref/flash/display/Sprite.html" target="_blank">Sprite</a>).</p>
<p>La propriété mouseChildren active, ou non, la souris sur les enfants de l&#8217;objet.<br />
La propriété buttonMode définit l&#8217;objet comme un bouton ( et donc change le curseur en main lors du passage de la souris)</p>
<div class="codeAS">&lt;mx:Label text=&#8221;Texte cliquable dans un composant Label&#8221;<br />
buttonMode=&#8221;true&#8221; mouseChildren=&#8221;false&#8221; click=&#8221;onLabelClick()&#8221; /&gt;</div>
<div class="codeAS">&lt;mx:Text text=&#8221;Texte cliquable dans un composant Text&#8221;<br />
buttonMode=&#8221;true&#8221; mouseChildren=&#8221;false&#8221; click=&#8221;onTextClick()&#8221;/&gt;</div>

<object	type="application/x-shockwave-flash"
			data="http://www.tsoin.com/asblog/tutoriel/useHandCursor/main.swf"
			width="400"
			height="100">
	<param name="movie" value="http://www.tsoin.com/asblog/tutoriel/useHandCursor/main.swf" />
</object><a href="http://www.tsoin.com/asblog/tutoriel/useHandCursor/srcview/index.html" target="_blank">Voir les sources »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/09/flex-label-text-et-usehandcursor/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Araignée en 3D par Tomas Eriksson</title>
		<link>http://www.tsoin.com/asblog/2008/09/09/araignee-en-3d-par-tomas-eriksson/</link>
		<comments>http://www.tsoin.com/asblog/2008/09/09/araignee-en-3d-par-tomas-eriksson/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 12:03:57 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[3D]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Website]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=69</guid>
		<description><![CDATA[Un développement bluffant, visible sur le site de Tomas Eriksson, onemotion.com, où il est possible de diriger une araignée en 3D, sur un plan, de la diriger à la souris ou de déposer des insectes qu&#8217;elle viendra chercher toute seule&#8230;.

Avec de nombreux paramètres (couleur, taille du corps, longueur, inclinaison du plan), cette application est véritablement [...]]]></description>
			<content:encoded><![CDATA[<p>Un développement bluffant, visible sur le site de Tomas Eriksson, <a href="http://www.onemotion.com" target="_blank">onemotion.com</a>, où il est possible de diriger une araignée en 3D, sur un plan, de la diriger à la souris ou de déposer des insectes qu&#8217;elle viendra chercher toute seule&#8230;.<br />
<center><a href="http://www.onemotion.com/flash/spider/" target="_blank"><img class="size-full wp-image-70" title="spider" src="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/spider.jpg" alt="" width="400" height="266" /></a></center></p>
<p>Avec de nombreux paramètres (couleur, taille du corps, longueur, inclinaison du plan), cette application est véritablement impresionnante, reste à savoir quels moyens ont été utilisés pour arriver à ce résultat !</p>
<p>voir <a href="http://www.onemotion.com/flash/spider/" target="_blank">l&#8217;application »</a></p>
<p>via <a href="http://www.hebiflux.com/blog/2008/09/09/une-araignee-en-3d-en-flash-pour-vous-tenir-compagnie/" target="_blank">Hebiflux »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/09/araignee-en-3d-par-tomas-eriksson/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Introduction à Pixel Bender</title>
		<link>http://www.tsoin.com/asblog/2008/09/08/introduction-a-pixel-bender/</link>
		<comments>http://www.tsoin.com/asblog/2008/09/08/introduction-a-pixel-bender/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 16:27:32 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Logiciel]]></category>

		<category><![CDATA[Pixel Bender]]></category>

		<category><![CDATA[effets]]></category>

		<category><![CDATA[filtres]]></category>

		<category><![CDATA[Flash10]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=66</guid>
		<description><![CDATA[Développer sous le nom de code Hydra, Pixel Bender est la grosse nouveauté de Flash 10, cette technologie développé par Adobe permet la création de filtres et d&#8217;effets personnalisés, et paramétrables directement via Flash. Le langage de programmation est basé sur le GLSL (OpenGL Shading Language, langage de programmation des shaders), lui même basé sur [...]]]></description>
			<content:encoded><![CDATA[<p>Développer sous le nom de code Hydra, Pixel Bender est la grosse nouveauté de Flash 10, cette technologie développé par Adobe permet la création de filtres et d&#8217;effets personnalisés, et paramétrables directement via Flash. Le langage de programmation est basé sur le <a href="http://en.wikipedia.org/wiki/GLSL" target="_blank">GLSL</a> (OpenGL Shading Language, langage de programmation des shaders), lui même basé sur le C.</p>
<p>Vous me direz, quel est l&#8217;intérêt de faire des effets / filtres avec PixelBender, alors qu&#8217;on peut aussi en faire dans Flash ? Dans ce cas, je vous dirais, que malgré le fait de devoir assimilé un nouveau langage de programmation, les effets / filtres de PixelBender sont gérés directement pas la carte de graphique, et permet de libérer le processeur et donc de gagner en performance et fuildité. De plus la programmation est plus rapide, et moins lourde en GLSL qu&#8217;en AS3 :</p>
<div class="codeAS">
<u>GLSL</u></p>
<p>kernel NewFilter {<br />
&nbsp;&nbsp;&nbsp;void evaluatePixel(in image4 src, out pixel4 dst) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pixel4 temp = sampleNearest(src,outCoord());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dst = pixel4( temp.r * .5, temp.b, temp.g * .8, temp.a );<br />
&nbsp;&nbsp;&nbsp;}<br />
}
</p></div>
<div class="codeAS">
<u>AS3</u></p>
<p>for (var x:Number = xMin; x &lt; xMax; x++) {<br />
&nbsp;&nbsp;&nbsp;for (var y:Number = yMin; y &lt; yMax; y++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// get the pixel&#8217;s RGB value:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var rgba:Number = bmp.getPixel32(x,y);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// isolate channels:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var red:Number = (rgba &amp; 0xFF000000) &gt;&gt; 24;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var green:Number = (rgba &amp; 0&#215;00FF0000) &gt;&gt; 16;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var blue:Number = (rgba &amp; 0&#215;0000FF00) &gt;&gt; 8;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var alpha:Number = (rgba &amp; 0&#215;000000FF);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;red = red * .5;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;green = green * .8;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var output:Number = (red &lt;&lt; 24) | (blue &lt;&lt; 16) | (green &lt;&lt; 8 ) | alpha;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;outbmp.setPixel32(x,y,output);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;}
</p></div>
<p>Pour voir un exemple des possibilités de Pixel Bender (vidéo Adobe), <a href="http://labs.adobe.com/technologies/flashplayer10/demos/videos/pixelbender.html" target="_blank">cliquer ici »</a></p>
<p>La Pre-Release 4 de Pixel Bender est sortit le 16 juillet 2008, vous pouvez la <a href="http://labs.adobe.com/wiki/index.php/Pixel_Bender_Toolkit#Installation_Instructions" target="_blank">télécharger ici »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/08/introduction-a-pixel-bender/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RIA Job(s)</title>
		<link>http://www.tsoin.com/asblog/2008/07/23/ria-jobs/</link>
		<comments>http://www.tsoin.com/asblog/2008/07/23/ria-jobs/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 09:18:39 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[Emploi]]></category>

		<category><![CDATA[Annonces]]></category>

		<category><![CDATA[Jobs]]></category>

		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=63</guid>
		<description><![CDATA[RIAJob (français) et RIAJobs (anglais) sont deux sites d&#8217;offres emplois spécalisés dans les métiers RIA ( Flash, Infographie, PHP, Flex, AIR, OpenSource, Silverlight). Ils proposent des postes en CDI, CDD, ou bien en Freelance, reste à éspérer que le nombre d&#8217;annonces s&#8217;étoffent rapidement&#8230;


]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.riajob.com/" target="_blank">RIAJob</a> (français) et <a href="http://www.riajobs.org/jobs/flash/" target="_blank">RIAJobs</a> (anglais) sont deux sites d&#8217;offres emplois spécalisés dans les métiers RIA ( Flash, Infographie, PHP, Flex, AIR, OpenSource, Silverlight). Ils proposent des postes en CDI, CDD, ou bien en Freelance, reste à éspérer que le nombre d&#8217;annonces s&#8217;étoffent rapidement&#8230;</p>
<p><center><a href="http://www.riajob.com/" target="_blank"><img class="aligncenter size-full wp-image-64" title="riajob" src="http://www.tsoin.com/asblog/wp-content/uploads/2008/07/riajob.jpg" border="0" /></a></center></p>
<p><center><a href="http://www.riajobs.org/jobs/flash/" target="_blank"><img class="aligncenter size-full wp-image-65" title="riajobs" src="http://www.tsoin.com/asblog/wp-content/uploads/2008/07/riajobs.jpg"/></a></center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/07/23/ria-jobs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>FlashTracer &#038; FlashSwitcher pour Firefox 3</title>
		<link>http://www.tsoin.com/asblog/2008/07/09/flashtracer-pour-firefox-3/</link>
		<comments>http://www.tsoin.com/asblog/2008/07/09/flashtracer-pour-firefox-3/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 12:20:24 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[Développement]]></category>

		<category><![CDATA[FlashPlayer]]></category>

		<category><![CDATA[Extension]]></category>

		<category><![CDATA[Firefox]]></category>

		<category><![CDATA[FlashTracer]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=62</guid>
		<description><![CDATA[Bizarrement Firefox 3 ne m&#8217;avait pas mis à jour ma version de FlashTracer et de FlashSwitcher, alors que les extensions étaient passées en version respectives 2.3.1 &#38; 2.0.2, et géraient la toute dernière version de Firefox&#8230; Il faudrait donc le faire &#8220;à la main&#8221; ?
Télécharger FlashTracer pour Firefox 3 »
Télécharger FlashSwitcher pour Firefox 3 »
]]></description>
			<content:encoded><![CDATA[<p>Bizarrement Firefox 3 ne m&#8217;avait pas mis à jour ma version de FlashTracer et de FlashSwitcher, alors que les extensions étaient passées en version respectives 2.3.1 &amp; 2.0.2, et géraient la toute dernière version de Firefox&#8230; Il faudrait donc le faire &#8220;à la main&#8221; ?</p>
<p><a href="http://www.sephiroth.it/firefox/flashtracer/" target="_blank">Télécharger FlashTracer pour Firefox 3 »</a><br />
<a href="http://www.sephiroth.it/firefox/flash_switcher/" target="_blank">Télécharger FlashSwitcher pour Firefox 3 »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/07/09/flashtracer-pour-firefox-3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pratique d’ActionScript 3, finalement en livre&#8230;.</title>
		<link>http://www.tsoin.com/asblog/2008/07/09/pratique-d%e2%80%99actionscript-3-finalement-en-livre/</link>
		<comments>http://www.tsoin.com/asblog/2008/07/09/pratique-d%e2%80%99actionscript-3-finalement-en-livre/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 12:08:32 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[Documentation]]></category>

		<category><![CDATA[Développement]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flash CS4]]></category>

		<category><![CDATA[Pearson]]></category>

		<category><![CDATA[Pratique d'ActionScript 3]]></category>

		<category><![CDATA[thibault imbert]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=61</guid>
		<description><![CDATA[Le livre de Thibault Imbert sortira finalement de l&#8217;imprimerie, aux éditions Pearson, probablement au même moment que la sortie de Flash CS4. L&#8217;auteur nous informe qu&#8217;il mettra à jour le livre, et le pdf ( qui sera toujours disponible au téléchargement en open source ), avec les nouveautés proposées par la nouvelle version de l&#8217;IDE [...]]]></description>
			<content:encoded><![CDATA[<p>Le livre de Thibault Imbert sortira finalement de l&#8217;imprimerie, aux éditions <a href="http://www.pearson.fr/" target="_blank">Pearson</a>, probablement au même moment que la sortie de Flash CS4. L&#8217;auteur nous <a href="http://pratiqueactionscript3.bytearray.org/?p=16" target="_blank">informe</a> qu&#8217;il mettra à jour le livre, et le pdf ( qui sera toujours disponible au téléchargement en open source ), avec les nouveautés proposées par la nouvelle version de l&#8217;IDE de Flash&#8230;</p>
<p>La version 0.1.3 est disponible au <a href="http://pratiqueactionscript3.bytearray.org/?p=15" target="_blank">téléchargement »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/07/09/pratique-d%e2%80%99actionscript-3-finalement-en-livre/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flash Player 10 passe en Beta 2 - DLL pour FlashSwitcher</title>
		<link>http://www.tsoin.com/asblog/2008/07/09/flash-player-10-passe-en-beta-2/</link>
		<comments>http://www.tsoin.com/asblog/2008/07/09/flash-player-10-passe-en-beta-2/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 08:58:37 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[FlashPlayer]]></category>

		<category><![CDATA[Beta]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[Flash10]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=60</guid>
		<description><![CDATA[Adobe a mis a disposition, depuis le 2 juillet, la version beta 2 du Flash Player 10, qui inclue quelques nouveautés, et la correction de quelques bugs.
Télécharger Flash Player 10 Beta 2 »
Télécharger la DLL pour FlashSwitcher »
]]></description>
			<content:encoded><![CDATA[<p>Adobe a mis a disposition, depuis le 2 juillet, la version beta 2 du Flash Player 10, qui inclue <a href="http://labs.adobe.com/technologies/flashplayer10/releasenotes.html#features" target="_blank">quelques nouveautés</a>, et la <a href="http://labs.adobe.com/technologies/flashplayer10/releasenotes.html#fixed" target="_blank">correction de quelques bugs</a>.</p>
<p><a href="http://labs.adobe.com/downloads/flashplayer10.html" target="_blank">Télécharger Flash Player 10 Beta 2 »</a><br />
<a href="http://www.tsoin.com/asblog/wp-content/uploads/2008/07/10.0.0.525_beta2.zip" target="_blank">Télécharger la DLL pour FlashSwitcher »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/07/09/flash-player-10-passe-en-beta-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pratique d’ActionScript 3 (v 0.1.2)</title>
		<link>http://www.tsoin.com/asblog/2008/07/04/pratique-d%e2%80%99actionscript-3-v-012/</link>
		<comments>http://www.tsoin.com/asblog/2008/07/04/pratique-d%e2%80%99actionscript-3-v-012/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 13:12:28 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[Documentation]]></category>

		<category><![CDATA[Pratique d'ActionScript 3]]></category>

		<category><![CDATA[thibault imbert]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=59</guid>
		<description><![CDATA[Avec un peu de retard sur la news du 11 juin  2008&#8230;
Thibault Imbert a sortie une nouvelle version de Pratique d&#8217;ActionScript 3, rien de fondamental, juste quelques coquilles corrigées&#8230;
Cliquer ici pour télécharger la version 0.1.2 »
]]></description>
			<content:encoded><![CDATA[<p>Avec un peu de retard sur la news du 11 juin  2008&#8230;</p>
<p>Thibault Imbert a sortie une nouvelle version de <a href="2008/04/29/pratique-das3/">Pratique d&#8217;ActionScript 3</a>, rien de fondamental, juste quelques coquilles corrigées&#8230;</p>
<p><a href="http://pratiqueactionscript3.bytearray.org/?p=14" target="_blank">Cliquer ici pour télécharger la version 0.1.2 »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/07/04/pratique-d%e2%80%99actionscript-3-v-012/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
