<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AS_Blog &#187; 3D</title>
	<atom:link href="http://www.tsoin.com/asblog/category/3d/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tsoin.com/asblog</link>
	<description>AS2, AS3, Flash, Flex, AIR....</description>
	<lastBuildDate>Tue, 22 Dec 2009 14:27:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Assassin&#8217;s Creed en Réalité augmentée</title>
		<link>http://www.tsoin.com/asblog/2009/04/16/assassins-creed-en-realite-augmentee/</link>
		<comments>http://www.tsoin.com/asblog/2009/04/16/assassins-creed-en-realite-augmentee/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 13:49:57 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Réalité augmentée]]></category>
		<category><![CDATA[Website]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=335</guid>
		<description><![CDATA[Premier grand coup marketing, à ma connaissance en tout cas, Ubisoft propose dans Métro et 20min, une publicité permettant de découvrir le héros de Assassin&#8217;s Creed II en réalité augmentée. Pour celà, il suffit d&#8217;aller sur le site assassincreed.com, de cliquer sur le dernier bouton (BOBUPNZ) de la navigation de gauche et de mettre la [...]]]></description>
			<content:encoded><![CDATA[<p>Premier grand coup marketing, à ma connaissance en tout cas, Ubisoft propose dans Métro et 20min, une publicité permettant de découvrir le héros de Assassin&#8217;s Creed II en réalité augmentée. Pour celà, il suffit d&#8217;aller sur le site <a href="http://www.assassincreed.com/" target="_blank">assassincreed.com</a>, de cliquer sur le dernier bouton (BOBUPNZ) de la navigation de gauche et de mettre la publicité devant la webcam, et avec un peu de patience, vous verrez le personnage apparaitre, sur la publicité&#8230;</p>
<p><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2009/04/ac.jpg" width="583" height="320" class="cadre" /></center></p>
<p>Il me semble que c&#8217;est la première fois que le grand public est la possibilité de la réalité augmentée, qui n&#8217;en est encore qu&#8217;à ces balbutiements sur Flash&#8230; à suivre&#8230;</p>
<p><em>Update : </em> Pour poursuivre sur le sujet, je viens de tomber sur un article de <a href="http://www.fredcavazza.net/2009/04/09/est-ce-la-mode-des-contenus-augmentes/" target"=_blank">Fred Cavazza</a> de la semaine dernière&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2009/04/16/assassins-creed-en-realite-augmentee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BBC Formula 1 circuit guides 2009 &#8211; Away3D</title>
		<link>http://www.tsoin.com/asblog/2009/03/31/bbc-formula-1-circuit-guides-2009-away3d/</link>
		<comments>http://www.tsoin.com/asblog/2009/03/31/bbc-formula-1-circuit-guides-2009-away3d/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 09:34:11 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Away3D]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=310</guid>
		<description><![CDATA[Excellent travail de Fabrice Closier &#8211; trace(myBitmapdata);, qui nous présente le site BBC Formula 1 circuit guides for the 2009 season, dans sa première version.

Au programme, visite des circuits détaillé ( tribune, lac, arbre, sable, herbe, vitesse maximum&#8230; ), possibilité de visualiser images, vidéos, et de vivre les différents passages du circuit, avec commentaires, avec [...]]]></description>
			<content:encoded><![CDATA[<p>Excellent travail de <a href="http://www.closier.nl/blog/?p=86" target="_blank">Fabrice Closier &#8211; trace(myBitmapdata);</a>, qui nous présente le site <a href="http://news.bbc.co.uk/sport1/hi/motorsport/formula_one/circuit_guide/default.stm#top" target="_blank">BBC Formula 1 circuit guides for the 2009 season</a>, dans sa première version.</p>
<p><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2009/03/bbctracks1.jpg" width="471" height="385" class="cadre" /></center></p>
<p>Au programme, visite des circuits détaillé ( tribune, lac, arbre, sable, herbe, vitesse maximum&#8230; ), possibilité de visualiser images, vidéos, et de vivre les différents passages du circuit, avec commentaires, avec la possibilité de modifier la position de la caméra</p>
<p><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2009/03/bbctracks2.jpg" width="471" height="346" class="cadre" /></center></p>
<p><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2009/03/bbctracks4.jpg" width="471" height="347" class="cadre" /></center></p>
<p>via <a href="http://www.closier.nl/blog/?p=86" target="_blank">trace(myBitmapdata);</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2009/03/31/bbc-formula-1-circuit-guides-2009-away3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Des nouveautés côtés 3D</title>
		<link>http://www.tsoin.com/asblog/2009/03/30/des-nouveautes-cotes-3d/</link>
		<comments>http://www.tsoin.com/asblog/2009/03/30/des-nouveautes-cotes-3d/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 12:26:27 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Alternativa3D]]></category>
		<category><![CDATA[Away3D]]></category>
		<category><![CDATA[Flash10]]></category>
		<category><![CDATA[Papervision3D]]></category>
		<category><![CDATA[Sandy3D]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=289</guid>
		<description><![CDATA[Étant en train de mettre à jour mon comparatif sur les moteurs 3D, que je publierais d&#8217;ici quelques jours, je suis tombé sur les nouveautés suivantes :
- Sandy3D 3.1.1 &#187;
- Away3D nouvelle version Flash 10 &#187; 
A noté aussi, quelques tutoriels Alternativa3D commencent a apparaitre :
- Alternativa3D &#8211; The Tech Labs &#187;
Et bien sur Papervision, [...]]]></description>
			<content:encoded><![CDATA[<p>Étant en train de mettre à jour mon comparatif sur les moteurs 3D, que je publierais d&#8217;ici quelques jours, je suis tombé sur les nouveautés suivantes :</p>
<p>- <a href="http://www.flashsandy.org/blog/sandy-as3-311-release.html" target="_blank">Sandy3D 3.1.1 &raquo;</a><br />
- <a href="http://away3d.com/away3d-33-flash-10-version-update" target="_blank">Away3D nouvelle version Flash 10 &raquo; </a></p>
<p>A noté aussi, quelques tutoriels Alternativa3D commencent a apparaitre :</p>
<p>- <a href="http://www.thetechlabs.com/tag/alternativa3d/" target="_blank">Alternativa3D &#8211; The Tech Labs &raquo;</a></p>
<p>Et bien sur Papervision, qui proposera d&#8217;ici peu une version prenant en compte les possibilités 3D de Flash10, donc a priori, un gain de performance&#8230; :</p>
<p>- <a href="http://blog.papervision3d.org/2009/03/16/papervisionx-what-it-is-and-what-it-isnt/" target="_blank">PapervisionX &raquo;</a></p>
<p>Pas mal de nouveautés concernant Flash10 ( ce qui n&#8217;a rien d&#8217;étonnant ), Away3D et Alternativa3D ayant déjà leur version dédiée, PapervisionX pointant son nez, on espère que les créateurs de Sandy3D auront le temps de nous sortir une version Flash10&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2009/03/30/des-nouveautes-cotes-3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fisherman&#8217;s Day &#8211; Away3D</title>
		<link>http://www.tsoin.com/asblog/2009/02/06/fishermans-day-away3d/</link>
		<comments>http://www.tsoin.com/asblog/2009/02/06/fishermans-day-away3d/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 16:34:42 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Away3D]]></category>
		<category><![CDATA[fisherman]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=248</guid>
		<description><![CDATA[Fisherman&#8217;s Day &#187; est un RPG dévelopé par Dangerous Rabbits &#187; avec Away3D, et le résultat est tout simplement bluffant, autant en terme de rendu visuel que de performances, l&#8217;animation reste fluide, et le fps quasi constant&#8230;

La version présenté n&#8217;étant qu&#8217;une version démo, que nous reserve donc la version finale &#8230; ???
encore un bon lien [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.dangerous-rabbits.com/independant-projects/fishermans-day/demo/" target="_blank">Fisherman&#8217;s Day &raquo;</a> est un RPG dévelopé par <a href="http://www.dangerous-rabbits.com" target="_blank">Dangerous Rabbits &raquo;</a> avec Away3D, et le résultat est tout simplement bluffant, autant en terme de rendu visuel que de performances, l&#8217;animation reste fluide, et le fps quasi constant&#8230;</p>
<p><center><a href="http://www.dangerous-rabbits.com/independant-projects/fishermans-day/demo/" target="_blank"><img src="http://www.tsoin.com/asblog/wp-content/uploads/2009/02/fisherman.jpg" alt="Fisherman's Day" title="Fisherman's Day" width="550" height="241" class="cadre"/></a></center></p>
<p>La version présenté n&#8217;étant qu&#8217;une version démo, que nous reserve donc la version finale &#8230; ???</p>
<p>encore un bon lien de <a href="http://www.hebiflux.com/blog/2009/02/06/flash-10-et-away3d-la-demo-du-vendredi/" target="_blank">hebiflux &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2009/02/06/fishermans-day-away3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparatif Moteurs 3D, et les plus performants sont&#8230;</title>
		<link>http://www.tsoin.com/asblog/2008/11/20/comparatif-moteurs-3d-et-les-plus-performants-sont/</link>
		<comments>http://www.tsoin.com/asblog/2008/11/20/comparatif-moteurs-3d-et-les-plus-performants-sont/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 17:04:46 +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[Comparatif]]></category>
		<category><![CDATA[moteur]]></category>
		<category><![CDATA[Papervision3D]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=142</guid>
		<description><![CDATA[Suite à mon comparatif de performance, makemepulse commentait que la dernière release de Papervision3D réglait le problème des fuites de mémoire. Ne pouvant rester sur une conclusion qui n&#8217;avait plus lieu d&#8217;être, j&#8217;ai donc refais mes tests avec la dernière version des moteurs ( excepté Sandy3D, n&#8217;ayant pas eu de nouvelle version depuis le début [...]]]></description>
			<content:encoded><![CDATA[<p>Suite à mon <a href="http://www.tsoin.com/asblog/2008/11/18/comparatifs-moteurs-3d-et-le-plus-performant-est/" target="_blank">comparatif de performance</a>, makemepulse commentait que la dernière release de Papervision3D réglait le problème des fuites de mémoire. Ne pouvant rester sur une conclusion qui n&#8217;avait plus lieu d&#8217;être, j&#8217;ai donc refais mes tests avec la dernière version des moteurs ( excepté Sandy3D, n&#8217;ayant pas eu de nouvelle version depuis le début de l&#8217;année ).</p>
<p>Voici donc les versions testées :<br />
- Papervision3D : Public Beta 2.0 &#8211; Great White / 2008.09.09 (revision 804)<br />
- Away3D : 2.2.0 / 2008.09.27<br />
- Alternativa3D : 5.5.0 / 2008.10.25</p>
<p>Je ne reprendrais pas les 3 premiers points du comparatif précédent, les différence étant minimes, surement du à la machine plus qu&#8217;au améliorations ( les différences de temps de créations sont inférieures à 0.5ms ). LE point important étant la mémoire, et la formidable amélioration de Papervision, qui vient changer la donne&#8230;</p>
<p>Alternativa3D reste le moteur qui gère le mieux la mémoire, mais Papervision3D vient coiffer Away3D au poteau&#8230; Même si la différence reste peu importante, le retard rattrapé par Papervision3D est remarquable, vous pouvez retrouver les explications de la fuite moiré sur <a href="http://www.sebleedelisle.com/?p=309" target="_blank">ce post de Seb Lee-Delisle &raquo;</a><br />
Vous retrouvez dans les graphes ci-dessous l&#8217;évolution de l&#8217;usage mémoire par chacun des trois moteurs 3D :</p>
<p><u>Alternativa3D</u><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/alternativa.jpg" class="cadre" /></center></p>
<p><u>Away3D</u><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/away.jpg" class="cadre" /></center></p>
<p><u>Papervision3D</u><center><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/papervision.jpg" class="cadre" /></center></p>
<p>Les conclusions sont donc différentes, et pouvoir assigner une &laquo;&nbsp;vraie&nbsp;&raquo; première place, me semble impossible.<br />
- Away3D : temps de création et mémoire utilisé à la création <em>les plus bas</em>, mais mémoire globale <em>plus haute</em><br />
- Alternativa3D : temps de création au <em>plus haut</em>, et mémoire à la création dans la <em>moyenne</em>, mais mémoire globale la <em>plus basse</em><br />
- Papervision3D : temps de création, mémoire à la création, et mémoire globale dans la <em>moyenne</em>.</p>
<p>Autant il est était facile de prendre une décision avec l&#8217;ancien comparatif, autant avec celui-ci, les écarts sont infimes, les choix difficiles, je dirais match nul&#8230;<br />
Reste à voir graphiquement lequel est celui qui s&#8217;en sort le mieux&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/11/20/comparatif-moteurs-3d-et-les-plus-performants-sont/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Audi Vorsprung durch Technik</title>
		<link>http://www.tsoin.com/asblog/2008/11/20/audi-vorsprung-durch-technik/</link>
		<comments>http://www.tsoin.com/asblog/2008/11/20/audi-vorsprung-durch-technik/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 12:46:28 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[audi]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=139</guid>
		<description><![CDATA[Aucun souvenir de mes cours d&#8217;allemand, donc je ne saurais dire ce que signifie le titre, mais l&#8217;essentiel n&#8217;est pas là : magnifique site pour Audi, Site of the day par The FWA

Visiter Audi Vorsprung durch Technik &#187;
]]></description>
			<content:encoded><![CDATA[<p>Aucun souvenir de mes cours d&#8217;allemand, donc je ne saurais dire ce que signifie le titre, mais l&#8217;essentiel n&#8217;est pas là : magnifique site pour Audi, Site of the day par <a href="http://thefwa.com/" target="_blank">The FWA</a><br />
<center><a href="http://www.neue-digitale.de/projects/audi_vorsprung_durch_technik" target="_blank"><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/audi1.jpg"  class="cadre" /></a></center></p>
<p><a href="http://www.neue-digitale.de/projects/audi_vorsprung_durch_technik" target="_blank">Visiter Audi Vorsprung durch Technik &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/11/20/audi-vorsprung-durch-technik/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparatif Moteurs 3D,  et le plus performant est&#8230;</title>
		<link>http://www.tsoin.com/asblog/2008/11/18/comparatifs-moteurs-3d-et-le-plus-performant-est/</link>
		<comments>http://www.tsoin.com/asblog/2008/11/18/comparatifs-moteurs-3d-et-le-plus-performant-est/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 15:52:42 +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[Comparatif]]></category>
		<category><![CDATA[Papervision3D]]></category>
		<category><![CDATA[Sandy3D]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=93</guid>
		<description><![CDATA[Suite aux derniers posts concernant les moteurs 3D ( Alterntiva3D, Away3D, Papervision3D &#38; Sandy3D), j&#8217;ai fait quelques tests afin de comparer les temps de création d&#8217;objet (Cube, Sphere, Cône et Plane) dans chacun des moteurs. 

!!! UPDATE !!!
Attention, suite aux dernières mises à jour du framework de Papervision3D, les problèmes de mémoire évoquer ci-dessous n&#8217;ont [...]]]></description>
			<content:encoded><![CDATA[<p>Suite aux derniers posts concernant les moteurs 3D ( Alterntiva3D, Away3D, Papervision3D &amp; Sandy3D), j&#8217;ai fait quelques tests afin de comparer les temps de création d&#8217;objet (Cube, Sphere, Cône et Plane) dans chacun des moteurs. </p>
<div class="codeAS">
<strong>!!! UPDATE !!!</strong><br />
Attention, suite aux dernières mises à jour du framework de Papervision3D, les problèmes de mémoire évoquer ci-dessous n&#8217;ont plus lieu d&#8217;être.<br />
Comparatif à jour &#038; complémentaire <a href="http://www.tsoin.com/asblog/2008/11/20/comparatif-moteurs-3d-et-les-plus-performants-sont/">ici &raquo;</a>
</div>
<p><u><strong>Mise à disposition des sources :</strong></u><br />
- <a href="http://www.tsoin.com/asblog/tutoriel/Alternativa3D.zip">Alternativa3D &raquo;</a> (le framework n&#8217;est pas inclus, n&#8217;étant pas en open-source)<br />
- <a href="http://www.tsoin.com/asblog/tutoriel/Away3D.zip">Away3D &raquo;</a><br />
- <a href="http://www.tsoin.com/asblog/tutoriel/PV3D.zip">Papervision3D &raquo;</a><br />
- <a href="http://www.tsoin.com/asblog/tutoriel/Sandy3D.zip">Sandy3D &raquo;</a></p>
<p>Ma méthode fut la suivante :<br />
- Implémentation au plus simple et identique pour chacun des moteurs.<br />
- Mécanique identique de création des objets, instance unique.<br />
- Une seule instance des materials ( filaire et texture )<br />
- Utilisation de calcul asynchrone afin de ne pas avoir de valeurs faussés ( la création de l&#8217;objet est faite quand le processeur le permet )<br />
- Test à la création de 1000 objets, avec différentes variables ( filaire ou bitmap, lissage de l&#8217;image ou non)<br />
- Stockage des données dans un tableau, les résultats utilisés sont les moyennes de temps de création et de mémoire utilisés par objet.<br />
- Vérification de la mémoire initiale, du pique de mémoire, ainsi que de la mémoire utilisé après les tests.</p>
<p>Version :<br />
- Papervision3D : Public Beta 2.0 &#8211; Great White / 2008.09.09 (revision 731)<br />
- Away3D : 2.1.0 / 2008.05.23<br />
- Sandy3D : 3.0.2 / 2008.02.25<br />
- Alternativa3D : 5.3.0 / 2008.08.12</p>
<p>Comme vous pourrez le remarquer les résultats sont très disparates suivant les moteurs, et même si les objets n&#8217;ont pas les mêmes caractéristiques (le nombre de segments d&#8217;un cube ne peut pas être augmenté dans Away3D &amp; Sandy3D, contrairement à Alternativa3D &amp; Papervision3D), les différences parlent d&#8217;elles mêmes&#8230; Vous le verrez dans les 4 points suivants :</p>
<p><strong>1. Poids SWF</strong><br />
L&#8217;exportation du fichier swf et le poids de celui ci (non négligeable au moment de l&#8217;accès au site, notamment pour les petites connexions) montre les premières différences entre les moteurs.<br />
Le premier cas importe les package de camera, vue et scene.<br />
Le second cas importe en plus les pacakge de Cube, Plane, Cone et Sphere.</p>
<table border="0">
<tbody>
<tr>
<td></td>
<td><em><center>Cas 1 : Implémentation du moteur</center></em></td>
<td>-</td>
<td><em><center>Cas 2 : Implémentation primitives</center></em></td>
</tr>
<tr>
<td><em>1. Sandy3D</em></td>
<td><em><center>60ko</center</em></td>
<td>-</td>
<td><em><center>87ko</center</em></td>
</tr>
<tr>
<td><em>2. Alternativa3D</em></td>
<td><em><center>70ko</center</em></td>
<td>-</td>
<td><em><center>94ko</center</em></td>
</tr>
<tr>
<td><em>3. Papervision3D</em></td>
<td><em><center>83ko</center</em></td>
<td>-</td>
<td><em><center>95ko</center</em></td>
</tr>
<tr>
<td><em>4. Away3D</em></td>
<td><em><center>105ko</center</em></td>
<td>-</td>
<td><em><center>132ko</center</em></td>
</tr>
</tbody>
</table>
<p><strong>2. Mémoire à l&#8217;initialisation du moteur:</strong><br />
Voyons maintenant l&#8217;espace mémoire pris lors de l&#8217;implémentation du moteur 3D. On test la mémoire sans lancer aucune création d&#8217;objet, et les moteurs montrent déjà que certains sont plus optimisés et d&#8217;autres, beaucoup, beaucoup moins :</p>
<p><em>1. Papervision3D &#8211; 167 ko<br />
2. Away3D &#8211; 199 ko<br />
3. Alternativa3D &#8211; 202 ko<br />
4. Sandy3D &#8211; 1 136 ko</em></p>
<p>Sandy3D part donc déjà avec un gros handicap, on verra par la suite que ce n&#8217;est pas le seul&#8230;</p>
<p><strong>3. Mémoire Globale:</strong><br />
L&#8217;écart se creuse encore, Papervision3D et Sandy3D ont une très mauvaise gestion de la mémoire, en effet malgré la suppression de l&#8217;objet sur la scène et de son instance, il est toujours en mémoire. L&#8217;application monte donc en mémoire, sans jamais redescendre, ce qui peut s&#8217;avérer extrêmement dangereux&#8230; Il est à noté que Away3D &amp; Alternativa3D gèrent par contre très bien la mémoire, et suppriment les éléments comme il faut. Après la création  de plusieurs milliers d&#8217;instance de plusieurs objets, on se retrouve avec une mémoire :</p>
<p><em>1. Away3D &#8211; 700 ko<br />
2. Alternativa3D &#8211; 876 ko<br />
3. Papervision3D &#8211; 50 784 ko<br />
4. Sandy3D &#8211; 175 552 ko</em></p>
<p>Les graphes ci-dessous montre bien la gestion de la mémoire par les 4 moteurs 3D, on remarque sur Alternativa3D &amp; Away3D, la mémoire qui évolue suivant les suppressions d&#8217;éléments et le lancement du Garbage Collector, alors que pour Papervision3D &amp; Sandy3D, ca monte, ca monte, ca monte&#8230;.</p>
<p><span style="text-decoration: underline;">Alternativa3D</span><br />
<center><img class="cadre" title="Alternativa3D" src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/alternativa3d.jpg" alt="Alternativa3D" /></center></p>
<p><span style="text-decoration: underline;">Away3D</span><br />
<center><img class="cadre" title="Away3D" src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/away3d.jpg" alt="Away3D" /></center></p>
<p><span style="text-decoration: underline;">Papervision3D</span><br />
<center><img class="cadre" title="Papervision3D" src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/papervision3d.jpg" alt="Papervision3D" /></center></p>
<p><span style="text-decoration: underline;">Sandy3D</span><br />
<center><img class="cadre" title="Sandy3D" src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/sandy3d.jpg" alt="Sandy3D" /></center></p>
<p><strong>4. Création d&#8217;objet :</strong><br />
Question de logique, plus l&#8217;objet à créer est compliqué, plus il faudra de temps pour le créer, et plus la mémoire utilisé par cet objet sera importante&#8230; Comparer les temps de création et d&#8217;espace mémoire entre chacun des moteurs objets est assez compliquer. En effet, malgré des valeurs identiques, les moteurs créer des objets plus ou moins complexes, je ne comparerais donc pas la forme de ces objets, le nombre de triangle étant assez identiques, l&#8217;appréciation de la qualité de l&#8217;objet est spécifique à chaque utilisateur&#8230;</p>
<p><center><br />
</center></p>
<table width="600" border="0" align="center" bgcolor="#CCCCCC" cellpadding="3" cellspacing="1">
<tr>
<td colspan="5" bgcolor="#FFFFFF">
<div align="center"><span style="text-decoration: underline;">Création d&#8217;un objet filaire</span></div>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">
<div align="center"></div>
</td>
<td bgcolor="#FFFFFF">Box</td>
<td bgcolor="#FFFFFF">Plane</td>
<td bgcolor="#FFFFFF">Cone</td>
<td bgcolor="#FFFFFF">Sphere</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Away3D</strong></td>
<td bgcolor="#FFFFFF">0.814ms &#8211; 23ko</td>
<td bgcolor="#FFFFFF">0.321ms &#8211; 9ko </td>
<td bgcolor="#FFFFFF">1.265ms &#8211; 37ko</td>
<td bgcolor="#FFFFFF">4.884ms &#8211; 138ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Alternativa3D</strong></td>
<td bgcolor="#FFFFFF">5.865ms &#8211; 95ko</td>
<td bgcolor="#FFFFFF">1.913ms &#8211; 20ko</td>
<td bgcolor="#FFFFFF">5.723ms &#8211; 102ko</td>
<td bgcolor="#FFFFFF">9.434ms &#8211; 179ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Papervision3D</strong></td>
<td bgcolor="#FFFFFF">4.961ms &#8211; 126ko</td>
<td bgcolor="#FFFFFF">0.872ms &#8211; 23ko</td>
<td bgcolor="#FFFFFF">2.996ms &#8211; 76ko</td>
<td bgcolor="#FFFFFF">4.126ms &#8211; 84ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Sandy3D</strong></td>
<td bgcolor="#FFFFFF">1.645ms &#8211; 16ko</td>
<td bgcolor="#FFFFFF">0.267ms &#8211; 12ko</td>
<td bgcolor="#FFFFFF">10.848ms &#8211; 222ko</td>
<td bgcolor="#FFFFFF">15.299ms &#8211; 314ko</td>
</tr>
</table>
<p></p>
<table width="600" border="0" align="center" bgcolor="#CCCCCC" cellpadding="3" cellspacing="1">
<tr>
<td colspan="5" bgcolor="#FFFFFF">
<div align="center"><span style="text-decoration: underline;">Création d&#8217;un objet avec bitmap non lissé</span></div>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">&nbsp;</td>
<td bgcolor="#FFFFFF">Box</td>
<td bgcolor="#FFFFFF">Plane</td>
<td bgcolor="#FFFFFF">Cone</td>
<td bgcolor="#FFFFFF">Sphere</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Away3D</strong></td>
<td bgcolor="#FFFFFF">1.292ms &#8211; 35ko</td>
<td bgcolor="#FFFFFF">0.817ms &#8211; 23ko</td>
<td bgcolor="#FFFFFF">1.67ms &#8211; 49ko</td>
<td bgcolor="#FFFFFF">5.159ms &#8211; 153ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Alternativa3D</strong></td>
<td bgcolor="#FFFFFF">5.909ms &#8211; 96ko</td>
<td bgcolor="#FFFFFF">1.966ms &#8211; 21ko</td>
<td bgcolor="#FFFFFF">5.733ms &#8211; 102ko</td>
<td bgcolor="#FFFFFF">9.478ms &#8211; 178ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Papervision3D</strong></td>
<td bgcolor="#FFFFFF">6.486ms &#8211; 169ko</td>
<td bgcolor="#FFFFFF">1.801ms &#8211; 70ko</td>
<td bgcolor="#FFFFFF"> 3.607ms &#8211; 121ko</td>
<td bgcolor="#FFFFFF">5.31ms &#8211; 130ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Sandy3D</strong></td>
<td bgcolor="#FFFFFF">1.856ms &#8211; 18ko</td>
<td bgcolor="#FFFFFF">0.254ms &#8211; 12ko</td>
<td bgcolor="#FFFFFF">11.389ms &#8211; 229ko</td>
<td bgcolor="#FFFFFF">16.295ms &#8211; 330ko</td>
</tr>
</table>
<p></p>
<table width="600" border="0" align="center" bgcolor="#CCCCCC" cellpadding="3" cellspacing="1">
<tr>
<td colspan="5" bgcolor="#FFFFFF">
<div align="center"><span style="text-decoration: underline;">Création d&#8217;un objet avec bitmap lissé</span></div>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">&nbsp;</td>
<td bgcolor="#FFFFFF">Box</td>
<td bgcolor="#FFFFFF">Plane</td>
<td bgcolor="#FFFFFF">Cone</td>
<td bgcolor="#FFFFFF">Sphere</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Away3D</strong></td>
<td bgcolor="#FFFFFF">1.319ms &#8211; 35ko</td>
<td bgcolor="#FFFFFF">0.843ms &#8211; 23ko</td>
<td bgcolor="#FFFFFF">1.722ms &#8211; 51ko</td>
<td bgcolor="#FFFFFF">5.195ms &#8211; 152ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Alternativa3D</strong></td>
<td bgcolor="#FFFFFF">5.811ms &#8211; 97ko</td>
<td bgcolor="#FFFFFF">1.954ms &#8211; 21ko</td>
<td bgcolor="#FFFFFF">5.764ms &#8211; 102ko</td>
<td bgcolor="#FFFFFF">9.475ms &#8211; 182ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Papervision3D</strong></td>
<td bgcolor="#FFFFFF">6.391ms &#8211; 169ko</td>
<td bgcolor="#FFFFFF">1.837ms &#8211; 70ko</td>
<td bgcolor="#FFFFFF"> 3.556ms &#8211; 121ko</td>
<td bgcolor="#FFFFFF">5.259ms &#8211; 128ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>Sandy3D</strong></td>
<td bgcolor="#FFFFFF">1.747ms &#8211; 18ko</td>
<td bgcolor="#FFFFFF">0.221ms &#8211; 12ko</td>
<td bgcolor="#FFFFFF">11.16ms &#8211; 228ko</td>
<td bgcolor="#FFFFFF">15.657ms &#8211; 330ko</td>
</tr>
</table>
<p><u>4.1 Temps</u><br />
De manière globale, Away3D est le plus rapide.<br />
Sandy3D a des performances équivalente voire meilleure pour la création de Box ou de Plane, mais est très très loin d&#8217;être aussi performant dans la création de Cône ou de Sphère, une fois de plus celui ci se démarque par sa singularité.<br />
Quelque soit le type de texture utilisé, Alternativa3D a des temps de création quasi similaires, il est donc moins performant lors de création d&#8217;objet filaire, mais cet handicap se réduit donc lors de la création d&#8217;objet &laquo;&nbsp;texturé&nbsp;&raquo;.<br />
Les temps de création d&#8217;objet par Papervision3D se situe dans la moyenne de celle d&#8217;Away3D et Alternativa3D, excepté pour les Box, ceci étant du aux nombres de segments crées par Papervision3D.</p>
<p>1. Away3D<br />
2. Papervision3D<br />
3. Alternativa3D<br />
4. Sandy3D</p>
<p><u>4.1 Mémoire</u><br />
Comme pour les temps de création, Away3D est le moins gourmand en général :<br />
- Sandy3D consomme moins de ressources lors de la création de Box ou de Plane, mais explose littéralement lors de la création de Cône et de Sphère<br />
- Papervision3D, consomme beaucoup moins de ressource lors de la création de Sphère, mais utilise presque 6 fois plus de mémoire qu&#8217;Away3D lors de la création de Box ( notamment du, comme pour le temps de création, au nombre de segments crées par Papervision3D )</p>
<p>Alternativa3D est quant à lui dans la moyenne haute des autres moteurs, sans pour autant être catastrophique.</p>
<p>1. Away3D<br />
2. Papervision3D / Alternativa3D<br />
4. Sandy3D</p>
<p>Différence de temps de création entre un objet filaire et un objet texturé :</p>
<table width="600" border="0" align="center" bgcolor="#CCCCCC" cellpadding="3" cellspacing="1">
<tbody>
<tr>
<td bgcolor="#FFFFFF">&nbsp;</td>
<td bgcolor="#FFFFFF">Box</td>
<td bgcolor="#FFFFFF">Plane</td>
<td bgcolor="#FFFFFF">Cone</td>
<td bgcolor="#FFFFFF">Sphere</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Away3D</td>
<td bgcolor="#FFFFFF"> +/- 0.5ms</td>
<td bgcolor="#FFFFFF"> +/- 0.5ms</td>
<td bgcolor="#FFFFFF"> +/- 0.5ms</td>
<td bgcolor="#FFFFFF"> +/- 0.3ms</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Alternativa3D</td>
<td bgcolor="#FFFFFF"> +/- 0.1ms</td>
<td bgcolor="#FFFFFF"> +/- 0.1ms</td>
<td bgcolor="#FFFFFF"> +/- 0.1ms</td>
<td bgcolor="#FFFFFF"> +/- 0.1ms</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Papervision3D</td>
<td bgcolor="#FFFFFF"> +/- 1.5ms</td>
<td bgcolor="#FFFFFF"> +/- 1.0ms</td>
<td bgcolor="#FFFFFF"> +/- 0.7ms</td>
<td bgcolor="#FFFFFF"> +/- 1.2ms</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Sandy3D</td>
<td bgcolor="#FFFFFF"> +/- 0.1ms</td>
<td bgcolor="#FFFFFF"> +/- 0.1ms</td>
<td bgcolor="#FFFFFF"> +/- 0.5ms</td>
<td bgcolor="#FFFFFF">+/- 1.5ms</td>
</tr>
</tbody>
</table>
<p>Ces écarts de temps de création sont à corrélés avec la mémoire utilisés par la création de cet objet :</p>
<table width="600" border="0" align="center" bgcolor="#CCCCCC" cellpadding="3" cellspacing="1">
<tbody>
<tr>
<td bgcolor="#FFFFFF">&nbsp;</td>
<td bgcolor="#FFFFFF">Box</td>
<td bgcolor="#FFFFFF">Plane</td>
<td bgcolor="#FFFFFF">Cone</td>
<td bgcolor="#FFFFFF">Sphere</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Away3D</td>
<td bgcolor="#FFFFFF"> +/- 12ko</td>
<td bgcolor="#FFFFFF"> +/- 14ko</td>
<td bgcolor="#FFFFFF"> +/- 13ko</td>
<td bgcolor="#FFFFFF"> +/- 14ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Alternativa3D</td>
<td bgcolor="#FFFFFF"> +/- 1ko</td>
<td bgcolor="#FFFFFF"> +/- 1ko</td>
<td bgcolor="#FFFFFF"> +/- 1ko</td>
<td bgcolor="#FFFFFF"> +/- 3ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Papervision3D</td>
<td bgcolor="#FFFFFF"> +/- 43ko</td>
<td bgcolor="#FFFFFF"> +/- 47ko</td>
<td bgcolor="#FFFFFF"> +/- 45ko</td>
<td bgcolor="#FFFFFF"> +/- 46ko</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Sandy3D</td>
<td bgcolor="#FFFFFF"> +/- 2ko</td>
<td bgcolor="#FFFFFF"> +/- 2ko</td>
<td bgcolor="#FFFFFF"> +/- 6ko</td>
<td bgcolor="#FFFFFF"> +/- 15ko</td>
</tr>
</tbody>
</table>
<p>On peut remarquer que ces écarts sont quasi idem pour chacun des objets crée par chaque moteurs 3D, Alternativa3D ayant un delta proche de zéro, on peut conclure que la gestion de texture filaire ou bitmap se fait de la même façon. On remarque aussi les différences de delta pour Sandy3D entre les objets Box/Plane et Cône/Sphère.</p>
<p><strong>5. Conclusion</strong><br />
Les tests effectués ne sont peut être pas représentatifs de la création d&#8217;une application, ou d&#8217;un site internet, mais ils nous montrent comment réagissent ces moteurs 3D dans des cas extrêmes, et si certains cas semblent dangereux (notamment la gestion de la mémoire), il faut garder en mémoire que tout le monde n&#8217;a pas de machine surpuissante, et qu&#8217;il faut toujours penser à qui est destiné le développement que l&#8217;ont fait (et pas se dire, si ca marche sur ma machine, y&#8217;a pas de raison que ca marche pas ailleurs, comme je l&#8217;entend assez souvent&#8230;).</p>
<p>De plus, ce comparatif ne prend pas en compte les différentes possibilités offertes par certains moteurs 3D (réélections&#8230;), il faut donc choisir judicieusement  le moteur en fonction de ces possibilités ainsi que de ces performances.</p>
<p>Concernant les performances, venons en donc aux conclusions.</p>
<p>4.  &#8211; Sandy3D et la mémoire, ce n&#8217;est pas un histoire d&#8217;amour, et ce, dès l&#8217;initialisation du moteur, et même si les performances lors de la création de Box et de Plane sont parmi les meilleures, la gestion de la mémoire (pas de suppressions des instances), les performances &laquo;&nbsp;catastrophiques&nbsp;&raquo; pour la création de Cône et de Sphère (donc d&#8217;éléments complexes), montrent les lacunes de Sandy3D. Au vue des résultats, c&#8217;est le seul moteur qui ne réagit pas de façon homogène, si vous l&#8217;utiliser il faut rester dans des formes simples, et peu nombreuses&#8230;</p>
<p>2. ex aequo  &#8211; Les temps de création de Papervision3D se situe dans la moyenne, c&#8217;est au niveau de la mémoire que ça se gâte, malgré une bonne gestion lors de la création de Sphère, il est bien plus gourmand lors de la création de Box et de Plane. Nous avons pu voir que Papervision3D ne supprime pas ces instances et rencontre donc le même problème que Sandy3D, sans pour autant cumuler au même sommet mais c&#8217;est à surveiller lors de création et suppression de nombreux éléments&#8230;</p>
<p>2. ex aequo  &#8211; Alternativa3D, dernier venu dans le monde des moteurs 3D, gère extrêmement bien (ou plutôt normalement !?) la mémoire, il est cependant plus gourmand en temps de création (entre 2 et 5 fois plus) que les autres moteurs. Malgré son coup de licence qui peut freiner, ces performances en font un des meilleurs moteurs 3D actuels.</p>
<p>1. Et pour finir, Away3D. Temps de création les plus bas du comparatifs, mémoire nécessaire à la création les plus bas aussi, excepté sur quelques points (Box et Sphère), mais qui reste excellents, et gestion de la mémoire globale excellente aussi. Bref le moteur 3D que je conseillerai (en terme de performance, encore une fois, et pas de possibilité de rendu graphique ).</p>
<p><em>Merci à Philippe, dit &laquo;&nbsp;Papa&nbsp;&raquo;, pour sa relecture !</em></p>
<p><em>NB:<br />
- Comparatif réalisé avec le Flash Player 10<br />
- J&#8217;ai utilisé le terme Box de façon générale, la classe exacte pour Away3D et Papervision est Cube, il en est de même pour Plane3D dans Sandy3D</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/11/18/comparatifs-moteurs-3d-et-le-plus-performant-est/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Nouvelles démos pour Alternativa3D</title>
		<link>http://www.tsoin.com/asblog/2008/11/17/nouvelles-demos-pour-alternativa3d/</link>
		<comments>http://www.tsoin.com/asblog/2008/11/17/nouvelles-demos-pour-alternativa3d/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 16:00:57 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Alternativa3D]]></category>
		<category><![CDATA[Démo]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=134</guid>
		<description><![CDATA[
Cliquer pour voir &#187;
]]></description>
			<content:encoded><![CDATA[<p><center><a href="http://blog.alternativaplatform.com/en/2008/11/05/new-demos/" target="_blank"><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/phonealternativa.jpg" title="phonealternativa" class="cadre" border="0"/></a></center></p>
<p><a href="http://blog.alternativaplatform.com/en/2008/11/05/new-demos/" target="_blank">Cliquer pour voir &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/11/17/nouvelles-demos-pour-alternativa3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pepsi.se : GuitarHero &amp; 3D</title>
		<link>http://www.tsoin.com/asblog/2008/11/04/pepsise-guitarhero-3d/</link>
		<comments>http://www.tsoin.com/asblog/2008/11/04/pepsise-guitarhero-3d/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 13:51:15 +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=122</guid>
		<description><![CDATA[Pespi surf sur le succès de GuitarHero, et propose sur son site suédois &#187;, un jeu en Flash utilisant la 3D..

Pepsi.se &#187;
via Hebiflux &#187;
]]></description>
			<content:encoded><![CDATA[<p>Pespi surf sur le succès de GuitarHero, et propose sur son <a href="http://www.pepsi.se" target="blank">site suédois &raquo;</a>, un jeu en Flash utilisant la 3D..</p>
<p><center><a href="http://www.pepsi.se" target="blank"><img src="http://www.tsoin.com/asblog/wp-content/uploads/2008/11/pepsi.jpg" alt="" title="pepsi" width="500" height="340" class="cadre" /></a></center></p>
<p><a href="http://www.pepsi.se" target="blank">Pepsi.se &raquo;</a></p>
<p>via <a href="http://www.hebiflux.com/blog/2008/11/04/advergame-pour-pepsi-flash-3d-et-enfin-des-personnages-animes/" target="_blank">Hebiflux &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/11/04/pepsise-guitarhero-3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Birdman</title>
		<link>http://www.tsoin.com/asblog/2008/10/28/birdman/</link>
		<comments>http://www.tsoin.com/asblog/2008/10/28/birdman/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 15:47:02 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Website]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=109</guid>
		<description><![CDATA[
Excellent site, mélangeant video, 3D, design, seul bémol : le design du personnage&#8230;.
http://www.birdman.ne.jp &#187;
]]></description>
			<content:encoded><![CDATA[<p><center><a href="http://www.birdman.ne.jp" target="_blank"><img class="cadre" src="http://www.tsoin.com/asblog/wp-content/uploads/2008/10/birdman.jpg" alt="" /></a></center></p>
<p>Excellent site, mélangeant video, 3D, design, seul bémol : le design du personnage&#8230;.<br />
<a href="http://www.birdman.ne.jp" target="_blank">http://www.birdman.ne.jp &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/10/28/birdman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sandy3D, partie II</title>
		<link>http://www.tsoin.com/asblog/2008/10/14/sandy3d-partie-ii/</link>
		<comments>http://www.tsoin.com/asblog/2008/10/14/sandy3d-partie-ii/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 16:01:53 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Sandy3D]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=97</guid>
		<description><![CDATA[Suite au tutoriel d&#8217;introduction à Sandy3D, passons directement à l&#8217;étape texture et lissage&#8230;
[kml_flashembed movie="http://www.tsoin.com/asblog/tutoriel/Sandy3D/004/Sandy3D_004.swf" height="400" width="600" /]
Voir &#38; Télécharger les sources »
]]></description>
			<content:encoded><![CDATA[<p>Suite au tutoriel d&#8217;introduction à Sandy3D, passons directement à l&#8217;étape texture et lissage&#8230;<br />
<center>[kml_flashembed movie="http://www.tsoin.com/asblog/tutoriel/Sandy3D/004/Sandy3D_004.swf" height="400" width="600" /]</center><br />
<a href="http://www.tsoin.com/asblog/tutoriel/Sandy3D/004/" target="_blank">Voir &amp; Télécharger les sources »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/10/14/sandy3d-partie-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sandy3D, partie I</title>
		<link>http://www.tsoin.com/asblog/2008/10/14/sandy3d-partie-i/</link>
		<comments>http://www.tsoin.com/asblog/2008/10/14/sandy3d-partie-i/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 15:47:38 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Sandy3D]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=96</guid>
		<description><![CDATA[Sandy3D
 &#8211; Site »
 &#8211; Téléchargement  »
 &#8211; Documentation »
 &#8211; Tutorial »
Premier moteur 3D à pointer sa camera sur le web, Sandy3D est aussi un des moins actifs ces derniers mois, à l&#8217;heure où les autres moteurs 3D continuent leur chemin&#8230; La mise en place du moteur Sandy3D est aussi simple que celui [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Sandy3D</strong><br />
<a href="http://www.flashsandy.org/" target="_blank"> &#8211; Site »</a><br />
<a href="http://www.flashsandy.org/download" target="_blank"> &#8211; Téléchargement  »</a><br />
<a href="http://www.flashsandy.org/documentation/3.0/" target="_blank"> &#8211; Documentation »</a><br />
<a href="http://www.flashsandy.org/tutorials" target="_blank"> &#8211; Tutorial »</a></p>
<p>Premier moteur 3D à pointer sa camera sur le web, Sandy3D est aussi un des moins actifs ces derniers mois, à l&#8217;heure où les autres moteurs 3D continuent leur chemin&#8230; La mise en place du moteur Sandy3D est aussi simple que celui de Away3D, mais alors que tous les autres moteurs ont opté pour une classe de vue logiquement appelé (Papervision3D: Viewport3D, Away3D: View3D, Alternativa3D: View), Sandy3D définit un Group&#8230;</p>
<p><span id="more-96"></span><br />
Pour faire le rendu, il faut appeler la fonction :<br />
- <em>Scene3D.render(); </em></p>
<p>Voici une utilisation du moteur :</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: 14.10.2008<br />
&nbsp;&nbsp;&nbsp;* Website: http://www.tsoin.com<br />
&nbsp;&nbsp;&nbsp;* Description: Sandy3D &#8211; Intégration du moteur<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;**/</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;import sandy.core.Scene3D;<br />
&nbsp;&nbsp;&nbsp;import sandy.core.scenegraph.Camera3D;<br />
&nbsp;&nbsp;&nbsp;import sandy.core.scenegraph.Group;</p>
<p>&nbsp;&nbsp;&nbsp;[SWF(backgroundColor="#000000", frameRate="100", width="600", height="400")]</p>
<p>&nbsp;&nbsp;&nbsp;public class Sandy3D_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 group:Group;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var _timer:Number = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var _diff:Number = 0;<br />
&nbsp;&nbsp;&nbsp;vprivate var _tempsMoyen:Number = 0;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function Sandy3D_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(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;camera = new Camera3D(600, 400);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera.z = -300;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;group = new Group(&laquo;&nbsp;Group&nbsp;&raquo;);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene = new Scene3D(&laquo;&nbsp;scene&nbsp;&raquo;, this, camera, group);<br />
&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;scene.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/Sandy3D/001/" target="_blank">Voir &amp; Télécharger les sources »</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>[kml_flashembed movie="http://www.tsoin.com/asblog/tutoriel/Sandy3D/002/Sandy3D_002.swf" height="400" width="600" /]</p>
<div class="codeAS">package {</p>
<p>&nbsp;&nbsp;&nbsp;/**<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;* Auteur: Vincent Helwig</p>
<p>&nbsp;&nbsp;&nbsp;* Date: 14.10.2008<br />
&nbsp;&nbsp;&nbsp;* Website: http://www.tsoin.com<br />
&nbsp;&nbsp;&nbsp;* Description: Sandy3D &#8211; Création d’un cube<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;**/</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;import sandy.core.Scene3D;<br />
&nbsp;&nbsp;&nbsp;import sandy.core.scenegraph.Camera3D;<br />
&nbsp;&nbsp;&nbsp;import sandy.core.scenegraph.Group;<br />
&nbsp;&nbsp;&nbsp;import sandy.materials.Appearance;<br />
&nbsp;&nbsp;&nbsp;import sandy.materials.ColorMaterial;<br />
&nbsp;&nbsp;&nbsp;import sandy.materials.Material;<br />
&nbsp;&nbsp;&nbsp;import sandy.materials.attributes.LineAttributes;<br />
&nbsp;&nbsp;&nbsp;import sandy.materials.attributes.MaterialAttributes;<br />
&nbsp;&nbsp;&nbsp;import sandy.primitive.Box;</p>
<p>&nbsp;&nbsp;&nbsp;[SWF(backgroundColor="#000000", frameRate="100", width="600", height="400")]</p>
<p>&nbsp;&nbsp;&nbsp;public class Sandy3D_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 group:Group;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var box:Box;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var _timer:Number = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var _diff:Number = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var _tempsMoyen:Number = 0;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function Sandy3D_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(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;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;camera = new Camera3D(600, 400);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera.z = -300;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;group = new Group(&laquo;&nbsp;Group&nbsp;&raquo;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;box = new Box(&laquo;&nbsp;box&nbsp;&raquo;, 100, 100, 100);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var skin:MaterialAttributes = new MaterialAttributes(new LineAttributes(1, 0&#215;789789) );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var material03:Material = new ColorMaterial( 0&#215;000000, 1, skin )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;box.appearance = new Appearance( material03 );<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;group.addChild( box );</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene = new Scene3D(&laquo;&nbsp;scene&nbsp;&raquo;, this, camera, group);<br />
&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;scene.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;box.rotateX = ( stage.mouseY * 180 ) / stage.stageHeight &#8211; 90;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;box.rotateY = ( stage.mouseX * 180 ) / stage.stageWidth &#8211; 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/Sandy3D/002/" target="_blank">Voir &amp; Télécharger les sources »</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/10/14/sandy3d-partie-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Papervision3D, partie II</title>
		<link>http://www.tsoin.com/asblog/2008/10/14/papervision3d-partie-ii/</link>
		<comments>http://www.tsoin.com/asblog/2008/10/14/papervision3d-partie-ii/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 14:06:47 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Papervision3D]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=95</guid>
		<description><![CDATA[Suite au tutoriel d&#8217;introduction à Papervision3D, passons directement à l&#8217;étape texture et lissage&#8230;
[kml_flashembed movie="http://www.tsoin.com/asblog/tutoriel/Papervision3D/004/Papervision_004.swf" height="400" width="600" /]
Voir &#38; Télécharger les sources »
]]></description>
			<content:encoded><![CDATA[<p>Suite au tutoriel d&#8217;introduction à Papervision3D, passons directement à l&#8217;étape texture et lissage&#8230;<br />
<center>[kml_flashembed movie="http://www.tsoin.com/asblog/tutoriel/Papervision3D/004/Papervision_004.swf" height="400" width="600" /]</center><br />
<a href="http://www.tsoin.com/asblog/tutoriel/Papervision3D/004/" target="_blank">Voir &amp; Télécharger les sources »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/10/14/papervision3d-partie-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Papervision3D, partie I</title>
		<link>http://www.tsoin.com/asblog/2008/10/14/papervision3d-partie-i/</link>
		<comments>http://www.tsoin.com/asblog/2008/10/14/papervision3d-partie-i/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 13:23:16 +0000</pubDate>
		<dc:creator>Vincent Helwig</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Papervision3D]]></category>

		<guid isPermaLink="false">http://www.tsoin.com/asblog/?p=94</guid>
		<description><![CDATA[Papervision3D &#8211; Great White (2.0)
 &#8211; Site »
 &#8211; Téléchargement  »
 &#8211; Documentation »
 &#8211; Tutorial »
Papervision3D &#8211; GreatWhite se situe, au niveau complexité de mise en place, entre Away3D et Alternativa3D. On retrouve, comme pour Away3D, une scène 3D (Scene3D), contenant les objets 3D, une camera (Camera3D), et une vue (Viewport3D). La différence [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Papervision3D &#8211; Great White (2.0)</strong><br />
<a href="http://www.papervision3d.org/" target="_blank"> &#8211; Site »</a><br />
<a href="http://code.google.com/p/papervision3d/downloads/list" target="_blank"> &#8211; Téléchargement  »</a><br />
<a href="http://www.papervision3d.org/docs/as3/" target="_blank"> &#8211; Documentation »</a><br />
<a href="http://wiki.papervision3d.org/index.php?title=Tutorials" target="_blank"> &#8211; Tutorial »</a></p>
<p>Papervision3D &#8211; GreatWhite se situe, au niveau complexité de mise en place, entre Away3D et Alternativa3D. On retrouve, comme pour Away3D, une scène 3D (<em>Scene3D</em>), contenant les objets 3D, une camera (<em>Camera3D</em>), et une vue (<em>Viewport3D</em>). La différence avec Away3D se faisant au niveau du rendu, PV3D utilise un moteur de rendu (<em>BasicRenderEngine</em>).</p>
<p>Pour faire le rendu, il faut appeler la fonction :<br />
- <em>BasicRenderEngine.renderScene(Scene3D, Camera3D, Viewport3D); </em></p>
<p>Pour l&#8217;installation de papervision, <a href="http://wiki.papervision3d.org/index.php?title=Getting_Started_FAQ#Getting_Started_Walkthrough" target="_blank">cliquer ici &raquo;</a>.<br />
Je vous conseille fortement d&#8217;avoir une copie de travail du dossier papervision pour le projet sur lequel vous travaillez, surtout si vous travaillez en équipe, afin d&#8217;être sur d&#8217;avoir la même version de PV3D, et d&#8217;éviter les mises à jours automatiques, qui pourraient créer des bugs&#8230;<br />
<span id="more-94"></span><br />
Voici une utilisation du moteur :</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: 14.10.2008<br />
&nbsp;&nbsp;&nbsp;* Website: http://www.tsoin.com<br />
&nbsp;&nbsp;&nbsp;* Description: Papervision3D &#8211; Intégration du moteur<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;**/</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;import org.papervision3d.cameras.Camera3D;<br />
&nbsp;&nbsp;&nbsp;import org.papervision3d.render.BasicRenderEngine;<br />
&nbsp;&nbsp;&nbsp;import org.papervision3d.scenes.Scene3D;<br />
&nbsp;&nbsp;&nbsp;import org.papervision3d.view.Viewport3D;</p>
<p>&nbsp;&nbsp;&nbsp;[SWF(backgroundColor="#000000", frameRate="100", width="600", height="400")]</p>
<p>&nbsp;&nbsp;&nbsp;public class Papervision_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 viewport:Viewport3D;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var renderer:BasicRenderEngine;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function Papervision_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 {<br />
&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();<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.focus = 50;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera.zoom = 10;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewport = new Viewport3D(600, 400);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild( viewport );</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderer = new BasicRenderEngine();<br />
&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;renderer.renderScene(scene, camera, viewport);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;}</p>
<p>}</p>
<p><a href="http://www.tsoin.com/asblog/tutoriel/Papervision3D/001/" target="_blank">Voir &amp; Télécharger les sources »</a></p>
</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>[kml_flashembed movie="http://www.tsoin.com/asblog/tutoriel/Papervision3D/002/Papervision_002.swf" height="400" width="600" /]</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: 14.10.2008<br />
&nbsp;&nbsp;&nbsp;* Website: http://www.tsoin.com<br />
&nbsp;&nbsp;&nbsp;* Description: Papervision3D &#8211; Création d’un cube<br />
&nbsp;&nbsp;&nbsp;*<br />
&nbsp;&nbsp;&nbsp;**/</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;import org.papervision3d.cameras.Camera3D;<br />
&nbsp;&nbsp;&nbsp;import org.papervision3d.materials.WireframeMaterial;<br />
&nbsp;&nbsp;&nbsp;import org.papervision3d.materials.utils.MaterialsList;<br />
&nbsp;&nbsp;&nbsp;import org.papervision3d.objects.primitives.Cube;<br />
&nbsp;&nbsp;&nbsp;import org.papervision3d.render.BasicRenderEngine;<br />
&nbsp;&nbsp;&nbsp;import org.papervision3d.scenes.Scene3D;<br />
&nbsp;&nbsp;&nbsp;import org.papervision3d.view.Viewport3D;</p>
<p>&nbsp;&nbsp;&nbsp;[SWF(backgroundColor="#000000", frameRate="100", width="600", height="400")]</p>
<p>&nbsp;&nbsp;&nbsp;public class Papervision_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 viewport:Viewport3D;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var renderer:BasicRenderEngine;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private var cube:Cube;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public function Papervision_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 {<br />
&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();<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.focus = 50;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;camera.zoom = 10;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewport = new Viewport3D(600, 400);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addChild( viewport );</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;renderer = new BasicRenderEngine();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var ml:MaterialsList = new MaterialsList({all: new WireframeMaterial( 0&#215;00FF00, 1 )});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cube = new Cube(ml, 100, 100, 100, 3, 3, 3);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scene.addChild( cube );<br />
&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;renderer.renderScene(scene, camera, viewport);<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 &#8211; 90;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cube.rotationY = ( stage.mouseX * 180 ) / stage.stageWidth &#8211; 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/Papervision3D/002/" target="_blank">Voir &amp; Télécharger les sources »</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/10/14/papervision3d-partie-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>
		<category><![CDATA[Away3D]]></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;
[kml_flashembed movie="http://www.tsoin.com/asblog/tutoriel/Away3D/004/Away3D_004.swf" height="400" width="600" /]
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>[kml_flashembed movie="http://www.tsoin.com/asblog/tutoriel/Away3D/004/Away3D_004.swf" height="400" width="600" /]</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>
		<slash:comments>0</slash:comments>
		</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
 &#8211; Site »
 &#8211; Téléchargement  »
 &#8211; Documentation »
 &#8211; 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"> &#8211; Site »</a><br />
<a href="http://away3d.com/downloads" target="_blank"> &#8211; Téléchargement  »</a><br />
<a href="http://away3d.com/documentation" target="_blank"> &#8211; Documentation »</a><br />
<a href="http://away3d.com/tutorials" target="_blank"> &#8211; 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 la fonction :<br />
- <em>View3D.render(); </em></p>
<p>Voici une utilisation du moteur :</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 &#8211; 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>[kml_flashembed movie="http://www.tsoin.com/asblog/tutoriel/Away3D/002/Away3D_002.swf" height="400" width="600" /]</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 &#8211; 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 &#8211; 90;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cube.rotationY = ( stage.mouseX * 180 ) / stage.stageWidth &#8211; 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>
		<slash:comments>0</slash:comments>
		</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;.
[kml_flashembed movie="http://www.tsoin.com/asblog/tutoriel/Alternativa3D/004/Alternativa3D_004.swf" height="400" width="600" /]
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>[kml_flashembed movie="http://www.tsoin.com/asblog/tutoriel/Alternativa3D/004/Alternativa3D_004.swf" height="400" width="600" /]</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>
		<slash:comments>0</slash:comments>
		</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;
[kml_flashembed movie="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/Alternativa3D_003.swf" width="600" height="400" /]
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>[kml_flashembed movie="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/Alternativa3D_003.swf" width="600" height="400" /]</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>
		<slash:comments>0</slash:comments>
		</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
 &#8211; Site »
 &#8211; Téléchargement ( enregistrement obligatoire ) »
 &#8211; 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"> &#8211; Site »</a><br />
<a href="http://alternativaplatform.com/en/alternativa3d/license.html" target="_blank"> &#8211; Téléchargement ( enregistrement obligatoire ) »</a><br />
<a href="http://docs.alternativaplatform.com/display/TDEN/Home" target="_blank"> &#8211; 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 &laquo;&nbsp;vide&nbsp;&raquo;, 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 &#8211; 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 + / &#8211; 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>[kml_flashembed movie="http://www.tsoin.com/asblog/wp-content/uploads/2008/09/Alternativa3D_002.swf" width="600" height="400" /]</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 &#8211; 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 &#8211; 90 ) / 180;</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>box.rotationY = Math.PI * ( ( stage.mouseX * 180 ) / stage.stageWidth &#8211; 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>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moteurs 3D : Alternativa3D, Away3D, Papervision3D &amp; 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>
<p></p>
<li><a href="http://www.tsoin.com/asblog/2008/10/14/papervision3d-partie-i/">Papervision3D, partie I</a></li>
<li><a href="http://www.tsoin.com/asblog/2008/10/14/papervision3d-partie-ii/">Papervision3D, partie II</a></li>
<p></p>
<li><a href="http://www.tsoin.com/asblog/2008/10/14/sandy3d-partie-i/">Sandy3D, partie I</a></li>
<li><a href="http://www.tsoin.com/asblog/2008/10/14/sandy3d-partie-ii/">Sandy3D, partie II</a></li>
</ul>
<p>Conclusion : <a href="http://www.tsoin.com/asblog/2008/11/18/comparatifs-moteurs-3d-et-le-plus-performant-est/">Comparatifs Moteurs 3D, et le plus performant est… &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tsoin.com/asblog/2008/09/26/moteurs-3d-alternativa3d-away3d-papervision3d-sandy3d/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
