<?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>Segmentation fault &#187; 3D</title>
	<atom:link href="https://www.segmentationfault.fr/tag/3d/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.segmentationfault.fr</link>
	<description>Projets d’un consultant en sécurité informatique</description>
	<lastBuildDate>Fri, 15 Feb 2019 08:02:10 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Computer Graphics Videos</title>
		<link>https://www.segmentationfault.fr/videos/computer-graphics-videos/</link>
		<comments>https://www.segmentationfault.fr/videos/computer-graphics-videos/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 22:53:40 +0000</pubDate>
		<dc:creator>Emilien Girault</dc:creator>
				<category><![CDATA[Videos]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[vidéo]]></category>

		<guid isPermaLink="false">http://www.segmentationfault.fr/?p=400</guid>
		<description><![CDATA[En cours de Computer Graphics, j&#8217;ai eu l&#8217;occasion de voir plusieurs vidéos illustrant ce qu&#8217;il est possible de faire de nos jours, et j&#8217;en ai trouvé plusieurs assez impressionnantes. En voici une sélection, rien que pour vous. Illustrations Ces vidéos illustrent certains concepts de ce que j&#8217;ai vu en cours et présentent des travaux de [...]]]></description>
			<content:encoded><![CDATA[<p>En cours de <em>Computer Graphics</em>, j&rsquo;ai eu l&rsquo;occasion de voir plusieurs vidéos illustrant ce qu&rsquo;il est possible de faire de nos jours, et j&rsquo;en ai trouvé plusieurs assez impressionnantes. En voici une sélection, rien que pour vous.<span id="more-400"></span></p>
<h3>Illustrations</h3>
<p>Ces vidéos illustrent certains concepts de ce que j&rsquo;ai vu en cours et présentent des travaux de recherche.</p>
<h4>Watch the worlds</h4>
<p>Peut-on reproduire un environnement 3D à partir d&rsquo;une œuvre d&rsquo;art 2D (un tableau, en l&rsquo;occurrence) ? L&rsquo;auteur de cette vidéo montre que c&rsquo;est possible, en choisissant de recréer un tableau de Van Gogh (<em>Starry Night</em>)  à l&rsquo;intérieur même de Second Life. On assiste aux différentes étapes de création de l&rsquo;environnement, et le résultat est assez surprenant. La musique, <em>Vincent</em> de Don Mclean, colle parfaitement.</p>
<p><a href="https://www.segmentationfault.fr/videos/computer-graphics-videos/"><em>Cliquer ici pour voir la vidéo.</em></a></p>
<h4>Image Resize</h4>
<p>Redimensionner des images avec des logiciels classiques  ne donne pas toujours des bons résultats. Des traveaux de recherche ont été fait dans ce domaine, et cette vidéo en présente quelques applications. En particulier, il est montré comment on peut redimensionner une image juste en modifiant une seule des dimension (verticale ou horizontale) tout en gardant une image nette et sans bruit. La méthode présentée consiste à éliminer une ou plusieurs colonnes ou lignes de pixels jugés &laquo;&nbsp;peu importants&nbsp;&raquo; dans l&rsquo;image, et c&rsquo;est justement la détermination de ces pixels qui est difficile. Enfin, l&rsquo;auteur montre comment il est possible avec cette technique de faire disparaître certains éléments d&rsquo;une image tels que des personnages. Impressionnant&#8230;</p>
<p><a href="https://www.segmentationfault.fr/videos/computer-graphics-videos/"><em>Cliquer ici pour voir la vidéo.</em></a></p>
<h3>Vidéos SIGGRAPH</h3>
<p>Chaque année a lieu la conférence SIGGRAPH qui a pour but de présenter les mielleurs vidéos réalisées en utilisant des machines. Mon premier <em>homework</em> a été d&rsquo;en regarder un certain nombre et de les résumer. Voici celles que j&rsquo;ai préféré.</p>
<h4>Doll Face</h4>
<p>Il s&rsquo;agit d&rsquo;un court métrage 3D. Plutôt que de vous spoiler, je vous laisse le découvrir&#8230;</p>
<p><a href="https://www.segmentationfault.fr/videos/computer-graphics-videos/"><em>Cliquer ici pour voir la vidéo.</em></a></p>
<h4>The Snowman</h4>
<p>Un autre court métrage, plus humoristique que le précédent</p>
<p><a href="https://www.segmentationfault.fr/videos/computer-graphics-videos/"><em>Cliquer ici pour voir la vidéo.</em></a></p>
<h4>Panic Room</h4>
<p>Il s&rsquo;agit d&rsquo;un extrait de Panic Room, film de David Flincher sorti en 2002. Plus précisément, il s&rsquo;agit de ce que je considère être le meilleur plan du film, à savoir le long plan séquence qui introduit l&rsquo;action dans le film. La scène dure plus de 2 minutes, la caméra n&rsquo;arrête pas de se déplacer, se déplace dans les moindre recoins de la maison, et ne coupe jamais. Pour réaliser cette prouesse technique, denombreux effets spéciaux sont utilisés, et visibles dans cette vidéo qui fait office de <em>making of</em>.</p>
<p><a href="https://www.segmentationfault.fr/videos/computer-graphics-videos/"><em>Cliquer ici pour voir la vidéo.</em></a></p>
<h4>Respire, Mikey 3D</h4>
<p>Enfin, voici le clip de <em>Respire</em>, chanson de Mickey 3D, qui dénonce l&rsquo;impact de l&rsquo;Homme sur son environnement. Ce n&rsquo;est pas tant la technique que j&rsquo;ai aimé dans cette vidéo, mais plutôt le côté artistique et le message qu&rsquo;elle fait passer.</p>
<p><a href="https://www.segmentationfault.fr/videos/computer-graphics-videos/"><em>Cliquer ici pour voir la vidéo.</em></a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.segmentationfault.fr/videos/computer-graphics-videos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Teapot Colony Wars : Le premier simulateur de stratégies comportementales pour théières</title>
		<link>https://www.segmentationfault.fr/projets/teapot-colony-wars/</link>
		<comments>https://www.segmentationfault.fr/projets/teapot-colony-wars/#comments</comments>
		<pubDate>Mon, 04 Feb 2008 20:47:56 +0000</pubDate>
		<dc:creator>Emilien Girault</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Projets]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[projet]]></category>

		<guid isPermaLink="false">http://www.segmentationfault.fr/dev/teapot-colony-wars-le-premier-simulateur-de-strategies-comportementales-pour-theieres/</guid>
		<description><![CDATA[Dans le cadre de mes cours de programmation et de modélisation orientée objets, il nous a récemment été demandé de réaliser un projet en binôme. A vrai dire, nous l&#8217;avons rendu aujourd&#8217;hui&#8230; Le but était de modéliser et de concevoir une application simulant l&#8217;évolution de colonies d&#8217;individus sur un terrain. Le sujet décrivait les règles [...]]]></description>
			<content:encoded><![CDATA[<p>Dans le cadre de mes cours de programmation et de modélisation orientée objets, il nous a récemment  été demandé de réaliser un projet en binôme. A vrai dire, nous l&rsquo;avons rendu aujourd&rsquo;hui&#8230; Le but était de modéliser et de concevoir une application simulant l&rsquo;évolution de colonies d&rsquo;individus sur un terrain. Le sujet décrivait les règles de la simulation et de fonctionnement du monde dans lequel les colonies seraient amenées à évoluer. L&rsquo;objectif n&rsquo;était pas tant de coder une belle interface avec une intelligence artificielle hors du commun, mais plutôt de s&rsquo;attacher à bien concevoir l&rsquo;application, en utilisant les techniques habituelles comme le langage UML et les Designs Patterns.</p>
<p><img src="http://sourceforge.net/dbimage.php?id=158263" alt="Screenshot du projet" hspace="10" vspace="10" width="237" height="148" align="right" /></p>
<p>Avec un ami, nous avons eu une idée commune : tant qu&rsquo;à faire une application de simulation, autant se faire plaisir et la réaliser en 3D. Fans des technologies libres, nous avons donc choisi OpenGL et Glut. Nous avions tous les deux une petite expérience en OpenGL, pour ma part ce fut mon deuxième projet C++/OpenGL, bien que je trouve bien plus complexe que le 1er. Étant donné que nous n&rsquo;avions pas des talents d&rsquo;artistes, nous avons choisi de faire simple pour ce qui était de la représentation du monde et des individus. Les adeptes de Glut ou plus généralement de la 3D connaissent probablement la fameuse <a href="http://fr.wikipedia.org/wiki/Th%C3%A9i%C3%A8re_de_l'Utah">Théière de l&rsquo;Utah</a> utilisée dans un certain nombre d&rsquo;applications 3D. Ce modèle étant déjà présent par défaut dans la bibliothèque GLUT, nous avons décidé de l&rsquo;utiliser pour représenter les individus de nos colonies. Et nous en avons profité pour baptiser notre projet «Teapot Colony Wars».<span id="more-14"></span></p>
<p>Nous avions le choix du langage, et nous avons choisi le C++ non seulement pour sa rapidité, sa portabilité, mais aussi parce que nous souhaitions progresser dans ce domaine. Et tant qu&rsquo;à faire, nous l&rsquo;avons développé dans le but de le diffuser sous licence GPL 2, pour qu&rsquo;il continue à vivre et évoluer si certains veulent le reprendre. De plus, nous avons vraiment eu la volonté de développer un projet en nous rapprochant du monde professionnel, tout en n&rsquo;utilisant que des logiciels libres. Nous avons utilisé Subversion, un excellent outil de gestion de versions qui nous a bien simplifié la tâche pour le développement, ainsi que Doxygen, pour la génération de la documentation. Le rapport de conception a été réalisé en LaTeX, et la compilation de l&rsquo;exécutable a été grandement facilité par l&rsquo;emploi des Autotools (AutoConf, AutoMake, &#8230;).</p>
<p>Au final, Teapot Colony Wars, c&rsquo;est :</p>
<ul>
<li><strong> 96 fichiers sources</strong> (uniquement les .h et .cpp)</li>
<li>Un diagramme de <strong>45 classes</strong></li>
<li>Plus de <strong>9600 lignes</strong> de code C++</li>
<li>Un délai de <strong>6 semaines</strong> pour réaliser le projet (pendant lesquelles nous avons eu des examens&#8230;)</li>
<li>Plus de <strong>280 heures</strong> de travail</li>
<li><strong>268 révisions</strong> dans le dépot Subversion</li>
<li>Une documentation PDF de <strong>449 pages</strong> générée par Doxygen</li>
<li>Un rapport de <strong>28 pages</strong> décrivant la modélisation et nos choix conceptuels</li>
</ul>
<p>Nous avons profité de la livraison du projet pour publier la version 1 sur Sourceforge.net. Voici quelques unes des caractéristiques de l&rsquo;application :</p>
<ul>
<li>Le monde est composé de plusieurs colonies, chacune ayant sa couleur.</li>
<li>Chaque colonie peut créer des individus qui possèdent des caractéristiques propres comme sa taille. Une colonie consomme de la nourriture pour créer un individu.</li>
<li>Le monde est composé d&rsquo;une grille de cellules qui ont chacune des propriétés. Certaines sont inaccessibles (murs), d&rsquo;autres contiennent de la nourriture qui se renouvelle au fur et à mesure de la simulation (certaines sont à renouvellement instantané, mais pas d&rsquo;autres). Certaines cases sont des couloirs et inaccessibles aux individus trop grands.</li>
<li>Les individus évoluent selon certaines stratégies comportementales que la colonie leur impose. Leur but est de trouver de la nourriture et de la ramener à la colonie. Mais à chaque pas, un individu consomme de la nourriture proportionnellement à sa taille.</li>
<li>Chaque individu ne peut voir que les 8 cases adjacentes et a une très petite mémoire : il ne peut se souvenir que de la dernière case qu&rsquo;il a franchie. Mais pour l&rsquo;aider, il peut déposer des phéromones sur son passage. Chaque colonie définit ainsi 3 phéromones qui ne peuvent être comprises que par ses individus. Chaque phéromone a une durée de vie et se dégrade au fur et à mesure, jusqu&rsquo;à disparaître.</li>
<li>Quand deux individus ennemis se croisent, il y a combat. C&rsquo;est le plus fort qui gagne ! Le vainqueur peut alors se nourrir du cadavre de ses adversaires.</li>
<li>L&rsquo;utilisateur peut à sa guise faire une offrande en déposant une source de nourriture sur le terrain.</li>
<li>Il était demandé de tester deux stratégies différentes pour les individus. Les algorithmes heuristiques, qui peuvent être simples mais souvent imparfaits, et les algorithmes génétiques, consistant à définir des gènes pour les individus et effectuer un brassage génétique de la population en sélectionnant les meilleurs.</li>
</ul>
<p>Les commandes souris et clavier du simulateur sont les suivantes :</p>
<ul>
<li> Pavé numérique (4, 6 8, 2) : déplacements horizontaux et verticaux</li>
<li>Molette ou touches + et &#8211; : zoom</li>
<li>Maintien de Ctrl et défilement de la molette (ou + et -) : inclinaison verticale</li>
<li>Maintien de Ctrl + Clic gauche ou droit : rotation à gauche ou à droite</li>
<li>Espace : Activer / enlever le mode pause</li>
<li>Clic gauche : effectuer une itération</li>
<li>Étoile (*) : donner une offrande aux individus, qui apparaîtra sur le curseur de sélection (tore en bleu clair)</li>
</ul>
<p><img src="http://sourceforge.net/dbimage.php?id=158255" alt="Screenshot du projet" hspace="10" vspace="10" width="248" height="155" align="left" />Nous sommes globalement très satisfaits de ce projet, car nous avons pu finir dans les temps, même si nous aurions aimé rajouter quelques fonctionnalités supplémentaires. Mais cela restera tout à fait possible étant donné la grande extensibilité de notre application. En effet, grâce à un usage intensif de toutes les techniques propres à la modélisation orientée objet, comme le polymorphisme et les designs patterns, nous avons construit un ensemble de classes génériques, qui peuvent s&rsquo;apparenter à un framework. Il est ainsi tout à fait possible de rajouter à moindre coût des nouvelles cases, des nouveaux types d&rsquo;individus, changer leur représentation (pour ceux qui n&rsquo;aiment pas les théières&#8230;), changer le système de combat, et même pourquoi pas rajouter de nouveaux mouvements (comme le saut ou la téléportation).</p>
<p>Si cela vous intéresse, vous pouvez télécharger la version 1.0 du projet, tel que nous l&rsquo;avons rendu à nous professeurs. Les sources sont disponibles, ainsi que les exécutables pour Linux et Windows. Attention toutefois pour ce dernier, il semble que la portabilité soit encore un tout petit peu imparfaite ; en effet nous n&rsquo;avons pas encore eu le temps de changer quelques détails qui peuvent bloquer la génération de l&rsquo;exécutable selon le compilateur utilisé. Mais nous allons bientôt remédier à cela&#8230;</p>
<p>Voici les liens pour accéder aux ressources du projet :</p>
<ul>
<li><a href="http://sourceforge.net/projects/colonywars/">Site du projet sur Sourceforge.net</a></li>
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=213004">La page de téléchargement</a></li>
<li><a href="http://colonywars.svn.sourceforge.net/viewvc/colonywars/">Le dépot SVN accessible en ligne</a></li>
<li><a href="http://sourceforge.net/svn/?group_id=213004">Les détails pour effectuer un check-out du SVN</a></li>
<li><a href="http://colonywars.sourceforge.net/doc/">La documentation HTML en ligne</a></li>
</ul>
<p>Pour lancer l&rsquo;application sous Windows, vous avez juste à lancer l&rsquo;exécutable. Sous Linux, pensez toutefois à lancer l&rsquo;application en mode console pour éviter les surprises ; en effet, il faut que le dossier de textures se trouve dans le dossier courant.</p>
<p>Pour compiler le projet sous Linux, assurez-vous de disposer des bibliothèques pour le développement d&rsquo;application graphiques, en particulier Glut. Décompressez l&rsquo;archive dans un répertoire, puis tapez les instructions suivantes :</p>
<blockquote>
<pre>$ ./configure --prefix=$HOME</pre>
<pre>$ make</pre>
<pre>$ make install</pre>
</blockquote>
<p>L&rsquo;application s&rsquo;installera automatiquement dans votre homedir, dans le dossier bin. Si la documentation vous tente, vous pouvez générer le HTML et les fichiers LaTeX en tapant :</p>
<blockquote>
<pre>$ doxygen Doxyfile</pre>
</blockquote>
<p>Ensuite, placez-vous dans le dossier doc/latex et tapez simplement :</p>
<blockquote>
<pre>$ make</pre>
</blockquote>
<p>Le PDF résultat se nomme  «refman.pdf» et sera généré dans le dossier courant. Bonne lecture&#8230;</p>
<p>Un site internet du projet verra peut-être le jour au courant de l&rsquo;année, si je trouve un peu de temps à y consacrer. N&rsquo;hésitez pas à me faire part de tous vos commentaires sur ce projet. Profitez de sa licence et faites le vivre !</p>
]]></content:encoded>
			<wfw:commentRss>https://www.segmentationfault.fr/projets/teapot-colony-wars/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
