<?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>3D Archives - InfoD 74</title>
	<atom:link href="https://www.info-d-74.com/tag/3d/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.info-d-74.com/tag/3d/</link>
	<description>Développeur web freelance</description>
	<lastBuildDate>Fri, 21 Apr 2023 11:28:58 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.info-d-74.com/wp-content/uploads/2015/12/info-d-74-logo-96x96.png</url>
	<title>3D Archives - InfoD 74</title>
	<link>https://www.info-d-74.com/tag/3d/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Universe Experience</title>
		<link>https://www.info-d-74.com/universe-experience/</link>
					<comments>https://www.info-d-74.com/universe-experience/#respond</comments>
		
		<dc:creator><![CDATA[info74]]></dc:creator>
		<pubDate>Wed, 14 Dec 2022 12:02:25 +0000</pubDate>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[particule]]></category>
		<category><![CDATA[three js]]></category>
		<category><![CDATA[univers]]></category>
		<guid isPermaLink="false">https://www.info-d-74.com/?p=3271</guid>

					<description><![CDATA[<p>Une petite démonstration 3D que j&#8217;ai appelé « Universe Experience » : Elle simule les interactions entre les particules dans notre univers. Vous pouvez changer leurs paramètres : nombre,  masse et charge. Et aussi modifier les distances pour la gravité et le magnétisme. Développée avec Three JS et inspiré de cette vidéo « Artificial Particle Life » :</p>
<p>L’article <a href="https://www.info-d-74.com/universe-experience/">Universe Experience</a> est apparu en premier sur <a href="https://www.info-d-74.com">InfoD 74</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Une petite démonstration 3D que j&rsquo;ai appelé « Universe Experience » :</p>
<p><a href="https://www.info-d-74.com/demos/universe_experience/" target="_blank" rel="noopener"><img fetchpriority="high" decoding="async" class="alignnone wp-image-3272 size-large" src="https://www.info-d-74.com/wp-content/uploads/2022/12/preview-1024x670.jpg" alt="" width="900" height="589" srcset="https://www.info-d-74.com/wp-content/uploads/2022/12/preview-1024x670.jpg 1024w, https://www.info-d-74.com/wp-content/uploads/2022/12/preview-600x393.jpg 600w, https://www.info-d-74.com/wp-content/uploads/2022/12/preview-300x196.jpg 300w, https://www.info-d-74.com/wp-content/uploads/2022/12/preview-150x98.jpg 150w, https://www.info-d-74.com/wp-content/uploads/2022/12/preview.jpg 1320w" sizes="(max-width: 900px) 100vw, 900px" /></a></p>
<p>Elle simule les interactions entre les particules dans notre univers. Vous pouvez changer leurs paramètres : nombre,  masse et charge. Et aussi modifier les distances pour la gravité et le magnétisme.</p>
<p>Développée avec <a href="https://threejs.org/" target="_blank" rel="noopener">Three JS</a> et inspiré de cette vidéo « Artificial Particle Life » :</p>
<p><a href="https://www.youtube.com/watch?v=0Kx4Y9TVMGg">https://www.youtube.com/watch?v=0Kx4Y9TVMGg</a></p>
<p>L’article <a href="https://www.info-d-74.com/universe-experience/">Universe Experience</a> est apparu en premier sur <a href="https://www.info-d-74.com">InfoD 74</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.info-d-74.com/universe-experience/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Iron Maiden 3D Concert (démo Three JS)</title>
		<link>https://www.info-d-74.com/iron-maiden-3d-concert-demo-three-js/</link>
					<comments>https://www.info-d-74.com/iron-maiden-3d-concert-demo-three-js/#respond</comments>
		
		<dc:creator><![CDATA[info74]]></dc:creator>
		<pubDate>Tue, 29 Aug 2017 09:19:23 +0000</pubDate>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[concert]]></category>
		<category><![CDATA[iron maiden]]></category>
		<category><![CDATA[three js]]></category>
		<category><![CDATA[vidéo]]></category>
		<category><![CDATA[webgl]]></category>
		<guid isPermaLink="false">https://www.info-d-74.com/?p=1714</guid>

					<description><![CDATA[<p>Une petite démo de ce qu&#8217;on peut faire avec Three JS (moteur 3D webGL). Cliquez sur l&#8217;image pour accéder à la démo : Le site officiel de Three JS : https://threejs.org/ Un petit tuto pour bien débuter avec Three JS : https://www.alsacreations.com/tuto/lire/1572-webgl-3d-three-canvas-threejs.html</p>
<p>L’article <a href="https://www.info-d-74.com/iron-maiden-3d-concert-demo-three-js/">Iron Maiden 3D Concert (démo Three JS)</a> est apparu en premier sur <a href="https://www.info-d-74.com">InfoD 74</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Une petite démo de ce qu&rsquo;on peut faire avec Three JS (moteur 3D webGL). Cliquez sur l&rsquo;image pour accéder à la démo :</p>
<p><a href="http://www.info-d-74.com/demos/video_3d/"><img decoding="async" class="alignnone size-large wp-image-1715" src="https://www.info-d-74.com/wp-content/uploads/2017/08/iron_maiden_three_js-1024x556.jpg" alt="Iron Maiden 3D Concert (Three JS)" width="900" height="489" srcset="https://www.info-d-74.com/wp-content/uploads/2017/08/iron_maiden_three_js-1024x556.jpg 1024w, https://www.info-d-74.com/wp-content/uploads/2017/08/iron_maiden_three_js-600x326.jpg 600w, https://www.info-d-74.com/wp-content/uploads/2017/08/iron_maiden_three_js-300x163.jpg 300w, https://www.info-d-74.com/wp-content/uploads/2017/08/iron_maiden_three_js-150x81.jpg 150w, https://www.info-d-74.com/wp-content/uploads/2017/08/iron_maiden_three_js.jpg 1426w" sizes="(max-width: 900px) 100vw, 900px" /></a></p>
<p>Le site officiel de Three JS : <a href="https://threejs.org/" target="_blank" rel="noopener">https://threejs.org/</a></p>
<p>Un petit tuto pour bien débuter avec Three JS : <a href="https://www.alsacreations.com/tuto/lire/1572-webgl-3d-three-canvas-threejs.html" target="_blank" rel="noopener">https://www.alsacreations.com/tuto/lire/1572-webgl-3d-three-canvas-threejs.html</a></p>
<p>L’article <a href="https://www.info-d-74.com/iron-maiden-3d-concert-demo-three-js/">Iron Maiden 3D Concert (démo Three JS)</a> est apparu en premier sur <a href="https://www.info-d-74.com">InfoD 74</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.info-d-74.com/iron-maiden-3d-concert-demo-three-js/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Island &#8211; Démo WebGL (Babylon JS)</title>
		<link>https://www.info-d-74.com/island-demo-babylon-js-webgl/</link>
					<comments>https://www.info-d-74.com/island-demo-babylon-js-webgl/#respond</comments>
		
		<dc:creator><![CDATA[info74]]></dc:creator>
		<pubDate>Thu, 21 Jan 2016 16:44:56 +0000</pubDate>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[babylon js]]></category>
		<category><![CDATA[babylonjs]]></category>
		<category><![CDATA[démo]]></category>
		<category><![CDATA[island]]></category>
		<category><![CDATA[webgl]]></category>
		<guid isPermaLink="false">https://www.info-d-74.com/?p=1071</guid>

					<description><![CDATA[<p>Une petite démo WebGL crée avec l&#8217;excellente librairie BabylonJS : Je mettrais à jour régulièrement cet article au fur et à mesure de l&#8217;avancement du projet 🙂 Mise à jour du 01/02/2016 Ajout d&#8217;un papillon et d&#8217;un peu de végétation :</p>
<p>L’article <a href="https://www.info-d-74.com/island-demo-babylon-js-webgl/">Island &#8211; Démo WebGL (Babylon JS)</a> est apparu en premier sur <a href="https://www.info-d-74.com">InfoD 74</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Une petite démo WebGL crée avec l&rsquo;excellente librairie <a href="http://www.babylonjs.com/" target="_blank">BabylonJS</a> :</p>
<p><a href="https://www.info-d-74.com/demos/island/" target="_blank" rel="attachment wp-att-1072"><img decoding="async" class="alignnone wp-image-1072 size-large" src="https://www.info-d-74.com/wp-content/uploads/2016/01/version_1-1024x617.jpg" alt="Island - démo WebGL (BabylonJS)" width="900" height="542" srcset="https://www.info-d-74.com/wp-content/uploads/2016/01/version_1-1024x617.jpg 1024w, https://www.info-d-74.com/wp-content/uploads/2016/01/version_1-600x362.jpg 600w, https://www.info-d-74.com/wp-content/uploads/2016/01/version_1-300x181.jpg 300w, https://www.info-d-74.com/wp-content/uploads/2016/01/version_1-150x90.jpg 150w, https://www.info-d-74.com/wp-content/uploads/2016/01/version_1-250x150.jpg 250w, https://www.info-d-74.com/wp-content/uploads/2016/01/version_1.jpg 1440w" sizes="(max-width: 900px) 100vw, 900px" /></a></p>
<p>Je mettrais à jour régulièrement cet article au fur et à mesure de l&rsquo;avancement du projet <img alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" consent-original-src-_="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" consent-required="3358" consent-by="services" consent-id="3360"/></p>
<p><strong>Mise à jour du 01/02/2016</strong></p>
<p>Ajout d&rsquo;un papillon et d&rsquo;un peu de végétation :</p>
<p><a href="https://www.info-d-74.com/wp-content/uploads/2016/01/papillon.jpg" rel="attachment wp-att-1076"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-1076" src="https://www.info-d-74.com/wp-content/uploads/2016/01/papillon-300x190.jpg" alt="papillon" width="300" height="190" srcset="https://www.info-d-74.com/wp-content/uploads/2016/01/papillon-300x190.jpg 300w, https://www.info-d-74.com/wp-content/uploads/2016/01/papillon-600x380.jpg 600w, https://www.info-d-74.com/wp-content/uploads/2016/01/papillon.jpg 1024w, https://www.info-d-74.com/wp-content/uploads/2016/01/papillon-237x150.jpg 237w, https://www.info-d-74.com/wp-content/uploads/2016/01/papillon-150x95.jpg 150w" sizes="(max-width: 300px) 100vw, 300px" /></a> <a href="https://www.info-d-74.com/wp-content/uploads/2016/01/vegetation.jpg" rel="attachment wp-att-1077"><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-1077" src="https://www.info-d-74.com/wp-content/uploads/2016/01/vegetation-300x190.jpg" alt="vegetation" width="300" height="190" srcset="https://www.info-d-74.com/wp-content/uploads/2016/01/vegetation-300x190.jpg 300w, https://www.info-d-74.com/wp-content/uploads/2016/01/vegetation-600x380.jpg 600w, https://www.info-d-74.com/wp-content/uploads/2016/01/vegetation.jpg 1024w, https://www.info-d-74.com/wp-content/uploads/2016/01/vegetation-237x150.jpg 237w, https://www.info-d-74.com/wp-content/uploads/2016/01/vegetation-150x95.jpg 150w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>L’article <a href="https://www.info-d-74.com/island-demo-babylon-js-webgl/">Island &#8211; Démo WebGL (Babylon JS)</a> est apparu en premier sur <a href="https://www.info-d-74.com">InfoD 74</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.info-d-74.com/island-demo-babylon-js-webgl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Utiliser WebGL avec CubicVR</title>
		<link>https://www.info-d-74.com/utiliser-webgl-avec-cubicvr/</link>
					<comments>https://www.info-d-74.com/utiliser-webgl-avec-cubicvr/#respond</comments>
		
		<dc:creator><![CDATA[info74]]></dc:creator>
		<pubDate>Thu, 06 Dec 2012 14:11:59 +0000</pubDate>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Tutoriaux]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[Cubic VR]]></category>
		<category><![CDATA[cubicvr]]></category>
		<category><![CDATA[webgl]]></category>
		<guid isPermaLink="false">https://www.info-d-74.com/?p=398</guid>

					<description><![CDATA[<p>Qu&#8217;est ce que WebGL ? WebGL, voila une des grandes nouveautés qu&#8217;amène HTML5 ! En effet WebGL permet de faire tourner des applications 3D dans votre navigateur sans installation préalable d&#8217;un quelconque plugin (Flash ou Java pour ne citer qu&#8217;eux). Démonstration WebGL (CubicVR) WebGL est donc un standard de HTML5 qui est déjà pris en [&#8230;]</p>
<p>L’article <a href="https://www.info-d-74.com/utiliser-webgl-avec-cubicvr/">Utiliser WebGL avec CubicVR</a> est apparu en premier sur <a href="https://www.info-d-74.com">InfoD 74</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Qu&rsquo;est ce que WebGL ?</h2>
<p>WebGL, voila une des grandes nouveautés qu&rsquo;amène HTML5 ! En effet WebGL permet de faire tourner des applications 3D dans votre navigateur sans installation préalable d&rsquo;un quelconque plugin (Flash ou Java pour ne citer qu&rsquo;eux).</p>
<p><a title="Démo WebGL + CubicVR (HTML5)" href="https://www.info-d-74.com/demos/webGL_CubicVR_HTML5/" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-786" src="https://www.info-d-74.com/wp-content/uploads/2015/12/webgl_cubicvr_html5_demo.jpg" alt="webgl_cubicvr_html5_demo" width="461" height="321" srcset="https://www.info-d-74.com/wp-content/uploads/2015/12/webgl_cubicvr_html5_demo.jpg 461w, https://www.info-d-74.com/wp-content/uploads/2015/12/webgl_cubicvr_html5_demo-300x209.jpg 300w, https://www.info-d-74.com/wp-content/uploads/2015/12/webgl_cubicvr_html5_demo-215x150.jpg 215w, https://www.info-d-74.com/wp-content/uploads/2015/12/webgl_cubicvr_html5_demo-150x104.jpg 150w" sizes="(max-width: 461px) 100vw, 461px" /><br />
Démonstration WebGL (CubicVR)<br />
</a></p>
<p><span id="more-398"></span></p>
<p>WebGL est donc un standard de HTML5 qui est déjà pris en charge par de nombreux navigateurs.</p>
<h2>Compatibilité de WebGL</h2>
<p>Voici une démo que j&rsquo;ai réalisé et que nous allons mettre en place pas à pas dans ce tutoriel : <a title="Démo WebGL + CubicVR (HTML5)" href="https://www.info-d-74.com/demos/webGL_CubicVR_HTML5/" target="_blank" rel="noopener">https://www.info-d-74.com/demos/webGL_CubicVR_HTML5/</a></p>
<p>A noter que j&rsquo;ai réussi à la faire tourner uniquement dans Firefox (16.0.2) et Chrome (23.0.1271.95). Sous Opera l&rsquo;affichage ne se fait pas correctement (bug de textures) et Safari ne prend en charge WebGL qu&rsquo;à partir de la version 5.2 apparemment. Pour IE8, 9 et 10 il existe <a href="http://iewebgl.com/" target="_blank" rel="noopener">IEWebGL</a> qui permet la prise en charge de WebGL. Malheureusement sous IE8 il y a de nombreuses erreurs javascript lors du chargement des librairies <a title="CubicVR" href="https://github.com/cjcliffe/CubicVR.js/" target="_blank" rel="noopener">CubicVR</a> (peut être que cela fonctionne sous IE9 et 10, je n&rsquo;ai pas testé).</p>
<p>Un autre point important, <strong>WebGL est souvent désactiver par défaut</strong> : il vous faut l&rsquo;activer manuellement. Voici pour chaque navigateur les manipulations à faire :</p>
<ul>
<li>FireFox : taper <strong><em>about:config</em></strong> dans la barre d&rsquo;adresse, puis taper &lsquo;WebGL&rsquo; dans la barre de recherche. Mettez <strong>true</strong> à l&rsquo;option <strong>webgl.force-enabled</strong></li>
<li>Chrome : activé par défaut il me semble</li>
<li>Safari : allez dans les préférences puis &lsquo;Avancées&rsquo; et cocher &lsquo;Afficher le menu Développement&#8230;&rsquo;. Ensuite allez dans le <strong>menu &lsquo;Développement&rsquo;</strong> et cliquez sur <strong>&lsquo;Activer WebGL&rsquo;</strong></li>
<li>Opera : taper <strong><em>opera:config</em></strong> dans la barre d&rsquo;adresse, puis taper &lsquo;WebGL&rsquo; dans la barre de recherche. Mettez <strong>1</strong> à l&rsquo;option <strong>Enable WebGL</strong></li>
<li>Internet Explorer : installez <a title="IEWebGL" href="http://iewebgl.com/" target="_blank" rel="noopener">IEWebGL</a></li>
</ul>
<h2>Télécharger CubicVR</h2>
<p><a title="CubicVR" href="http://www.cubicvr.org/">CubicVR</a> est un moteur 3D disponible en Javascript et C++. Je le trouve simple d&rsquo;utilisation et puissant. Il propose de nombreuses possibilités :</p>
<ul>
<li>prise en charge des fichiers 3D Collada (<a title="Démos CubicVR" href="https://www.youtube.com/watch?v=JqmjK-4jh8M" target="_blank" rel="noopener">tuto pour plus d&rsquo;infos</a>)</li>
<li>gestion de la physique</li>
<li>prise en charge du bump mapping</li>
<li>etc&#8230;</li>
</ul>
<p>Nous allons donc l&rsquo;utiliser dans ce tutoriel pour réaliser la démo vu plus haut. Rendez-vous à cette adresse pour télécharger CubicVR : <a href="https://github.com/cjcliffe/CubicVR.js/">https://github.com/cjcliffe/CubicVR.js/</a></p>
<p>Dézipper le contenu de l&rsquo;archive. Vous pouvez tester les exemples présents dans le dossier samples. <strong>Attention pour fonctionner il faut placer les fichiers sur un serveur Web (local ou distant), si vous ouvrez le fichier directement depuis votre disque dur dans votre navigateur cela ne fonctionnera pas.</strong></p>
<h2>Charger CubiCVR</h2>
<p>Commençons par définir notre page HTML5 et chargeons CubicVR :</p>
<blockquote>
<pre>&lt;!DOCTYPE html&gt;
&lt;head&gt;
&lt;meta charset="UTF-8" /&gt;
&lt;script type="text/javascript" src="js/ammo.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="js/CubicVR.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
function webGLStart() {
  var gl = CubicVR.init();
  var canvas = CubicVR.getCanvas();
  var scene = new CubicVR.Scene(canvas.width, canvas.height, 80);
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body onLoad="CubicVR.start('auto',webGLStart);"&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</blockquote>
<p>On charge CubicVR et Ammo (qui servira pour la gestion de la physique) et on demande d&rsquo;initialiser WebGL au chargement de la page. Ensuite on définit la scène avec une caméra qui affichera la scène de la taille du canvas avec un champ vision de 80°.<br />
A ce stade si vous testez vous obtiendrez une page noir qui indique que CubicVR a bien initialisé un canvas WebGL sur toute la page.</p>
<h2>Afficher un sphère</h2>
<p>Nous allons maintenant ajouter une sphère à la scène. Ajoutez ce code après<em> var scene = new CubicVR.Scene(canvas.width,canvas.height, 80);</em> :</p>
<blockquote>
<pre>var sphereMat = new CubicVR.Material({
  color: [1.0, 0.2, 0]
});
var sphereMesh = new CubicVR.Mesh({
  primitive: {
    type: "sphere",
    radius: 1.5,
    lat: 60,
    lon: 60,
    material: sphereMat
  }, compile: true
});
var sphereObject = new CubicVR.SceneObject({mesh:sphereMesh, position:[0,0,0]});
scene.bindSceneObject(sphereObject);
scene.camera.position = [-10, 0, 0];
scene.camera.target = [0, 0, 0];

CubicVR.setGlobalAmbient([1.0,1.0,1.0]);
CubicVR.MainLoop(function(timer, gl) {
  scene.render();
});</pre>
</blockquote>
<p>On définit un matériau avec une couleur Orange pour la sphère ([1.0, 0.2, 0]).<br />
On crée ensuite la sphère avec un rayon de 1.5, latitude et longitude de 60 et on l&rsquo;ajoute à la scène en position 0, 0, 0. La caméra est ensuite placer en -10, 0, 0 et regarde vers la sphère (0, 0, 0). Enfin on définit une lumière ambiante blanche (sinon on ne verra rien&#8230;) et on spécifie affiche le rendu de la scène. Voilà le résultat que vous devez obtenir :</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-827" src="https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_webgl_cubicvr.jpg" alt="sphere_webgl_cubicvr" width="461" height="300" srcset="https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_webgl_cubicvr.jpg 461w, https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_webgl_cubicvr-300x195.jpg 300w, https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_webgl_cubicvr-231x150.jpg 231w, https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_webgl_cubicvr-150x98.jpg 150w" sizes="(max-width: 461px) 100vw, 461px" /></p>
<p>Ajoutons maintenant une texture pour rendre notre sphère plus jolie. Voici la texture que nous allons utiliser : <a href="demos/webGL_CubicVR_HTML5/textures/metal.png" target="_blank" rel="noopener">Texture metal</a></p>
<p>Modifions note code comme ceci :</p>
<blockquote>
<pre>var sphereMat = new CubicVR.Material({
  textures: {
    color: "textures/metal.png"
  }
});
var sphereMesh = new CubicVR.Mesh({
  primitive: {
    type: "sphere",
    radius: 1.5,
    lat: 60,
    lon: 60,
    material: sphereMat,
    uvmapper:  {
      projectionMode: CubicVR.enums.uv.projection.CUBIC,
      scale: [3, 3, 3]
    }
  }, compile: true
});</pre>
</blockquote>
<p>On donne donc notre texture au matériau au lieu d&rsquo;une simple couleur et on ajoute le paramètre <em>uvmapper</em> à la création de la sphère. Ce paramètre permet à CubicVR de savoir comment appliquer la texture sur l&rsquo;objet. A noter que pour une raison que j&rsquo;ignore le résultat est plus jolie avec le <em>projectionMode</em> en mode CUBIC plutôt que SPHERICAL (tester avec <em>CubicVR.enums.uv.projection.SPHERICAL</em> vous verrez). Modifiez le <em>scale</em> permet de changer la taille de la texture sur l&rsquo;objet. Voila le résultat :</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-826" src="https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_texture_webgl_cubicvr.jpg" alt="sphere_texture_webgl_cubicvr" width="460" height="300" srcset="https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_texture_webgl_cubicvr.jpg 460w, https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_texture_webgl_cubicvr-300x196.jpg 300w, https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_texture_webgl_cubicvr-230x150.jpg 230w, https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_texture_webgl_cubicvr-150x98.jpg 150w" sizes="(max-width: 460px) 100vw, 460px" /></p>
<h2>Afficher un sol et gérer la physique</h2>
<p>Ajoutons maintenant un sol au dessous de notre sphère. Voici la texture que nous allons utiliser : <a href="demos/webGL_CubicVR_HTML5/textures/carrelage.png" target="_blank" rel="noopener">Texture carrelage</a></p>
<p>Ajouter ce code après <em>scene.bindSceneObject(sphereObject);</em> :</p>
<blockquote>
<pre>var solMat = new CubicVR.Material({
  textures: {
    color: "textures/carrelage.png"
  },
});
var solUV = {
  projectionMode: "cubic",
  scale: [0.25, 1, 0.25]
};
var solMesh = new CubicVR.Mesh({
  primitive: {
    type: "box",
    size: 1.0,
    material: solMat,
    uvmapper: {
      projectionMode: "cubic",
      scale: [0.25, 1, 0.25]
    }
  },
  compile: true
});
var solObject = new CubicVR.SceneObject({mesh:solMesh, scale: [50, 1, 50], position:[0, -10, 0]});
scene.bindSceneObject(solObject);</pre>
</blockquote>
<p>De la même manière que pour la sphère nous créer le sol mais type box (boite). On lui définit une taille de 50x1x50 et on le place juste en dessous de la sphère (0, -10, 0). Le <em>scale</em> du <em>uvmapper</em> permet de réduire la texture  pour qu&rsquo;elle ne soit pas trop grande sur les axe x et z (0.25, 1, 0.25) :</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-825" src="https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_sol_webgl_cubicvr.jpg" alt="sphere_sol_webgl_cubicvr" width="460" height="300" srcset="https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_sol_webgl_cubicvr.jpg 460w, https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_sol_webgl_cubicvr-300x196.jpg 300w, https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_sol_webgl_cubicvr-230x150.jpg 230w, https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_sol_webgl_cubicvr-150x98.jpg 150w" sizes="(max-width: 460px) 100vw, 460px" /></p>
<p>Ajouter maintenant la gestion de la physique. Notre sphère devrait tomber sur le sol suivant la loi de la gravité. Voici comment faire (à ajouter juste après le code précédant) :</p>
<blockquote>
<pre>var physics = new CubicVR.ScenePhysics();

var rigidSphere = new CubicVR.RigidBody(sphereObject, {
  type: "dynamic",
  mass:400,
  collision: {
    type: "sphere",
    mesh: sphereMesh,
    radius: 1.5
  }
});
physics.bind(rigidSphere);

var rigidFloor = new CubicVR.RigidBody(solObject, {
  type: "static",
  mass: 0,
  collision: {
    type: "box",
    size: solObject.scale
  }
});
physics.bind(rigidFloor);</pre>
</blockquote>
<p>On définit pour la sphère un &lsquo;corps rigide&rsquo; dynamique (elle peut bouger), d&rsquo;une masse de 400 et son type de collision est <em>sphere</em>. Pour le sol c&rsquo;est pareil sauf qu&rsquo;il est statique (il ne bouge pas), qu&rsquo;il ne possède pas de masse et que son type de collision est de type <em>box. </em>Il ne reste plus qu&rsquo;a ajouter la prise en compte de la physique dans le <em>MainLoop</em> :</p>
<blockquote>
<pre>CubicVR.MainLoop(function(timer, gl) {
  physics.stepSimulation(timer.getLastUpdateSeconds());
  scene.render();
});</pre>
</blockquote>
<p>Si vous testez votre sphère doit tomber sur le sol.</p>
<h2>Dernière étape : mur de briques et cône</h2>
<p>Pour terminer nous allons ajouter un mur de brique et faire en sorte que la sphère aille taper dedans. Pour cela nous allons dévier sa trajectoire à l&rsquo;aide d&rsquo;un cône placé en dessous de la sphère.</p>
<p>Commençons déjà par créer notre mur de brique : <a href="demos/webGL_CubicVR_HTML5/textures/brique.png" target="_blank" rel="noopener">Texture brique</a><br />
Voila le code :</p>
<blockquote>
<pre>var WALL_WIDTH = 10;
var WALL_HEIGHT = 10;

var briqueMat = new CubicVR.Material({
  textures: {
    color: "textures/brique.png"
  }
});

var briqueMesh = new CubicVR.Mesh({
  primitive: {
    type: "box",
    size: 1.0,
    material: briqueMat,
    uvmapper: {
      projectionMode: CubicVR.enums.uv.projection.CUBIC,
      scale: [3, 1, 1]
    }
  },
  compile: true
});

for(var i=0; i&lt;WALL_WIDTH; i++)
{
  for(var j=0; j&lt;WALL_HEIGHT; j++)
  {
    var briqueObject = new CubicVR.SceneObject(briqueMesh);
    var briqueObj = new CubicVR.SceneObject({
      mesh: briqueMesh,
      scale: [1, 1, 3],
      position: [10, -9+i, j*3-13.5]
    });              
    scene.bindSceneObject(briqueObj);

    var rigidBox = new CubicVR.RigidBody(briqueObj, {
      type: "dynamic",
      mass:4,
      collision: {
        type: CubicVR.enums.collision.shape.BOX,
        mesh: briqueMesh,
        size: briqueObj.scale
      }
    });
    physics.bind(rigidBox);
  }
}</pre>
</blockquote>
<p>On crée un mur de 10&#215;10 briques derrière la sphère. Les briques ont une masse de 4 et sont soumises aux collisions. Ce qui veut dire que quand la sphère rentrera en collision elles vont subir la poussée de la sphère.</p>
<p>Il ne nous reste plus qu&rsquo;a créer notre cône pour dévier la sphère lorsqu&rsquo;elle tombe :</p>
<blockquote>
<pre>var coneMesh = new CubicVR.Mesh({
  primitive: {
    type: "cone",
    base: 6,
    height: 6,
    material: sphereMat,
    uvmapper: {
      projectionMode: "cubic",
      scale: [3, 3, 3]
    }
  },
  compile: true
});

var coneObject = new CubicVR.SceneObject({mesh:coneMesh, position:[-1,-7,0]});
scene.bindSceneObject(coneObject);

var rigidCone = new CubicVR.RigidBody(coneObject, {
  type: "static",
  mass:0,
  collision: {
    type: CubicVR.enums.collision.shape.CONE,
    radius: 6,
    height: 6,
    mesh: coneMesh
  }
});
physics.bind(rigidCone);</pre>
</blockquote>
<p>Le cône est défini comme static (il ne bougera pas). Voilà le résultat que nous obtenons :</p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-824" src="https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_mur_webgl_cubicvr.jpg" alt="sphere_mur_webgl_cubicvr" width="640" height="400" srcset="https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_mur_webgl_cubicvr.jpg 640w, https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_mur_webgl_cubicvr-600x375.jpg 600w, https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_mur_webgl_cubicvr-300x188.jpg 300w, https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_mur_webgl_cubicvr-240x150.jpg 240w, https://www.info-d-74.com/wp-content/uploads/2015/12/sphere_mur_webgl_cubicvr-150x94.jpg 150w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p>Nous pouvons ajouter une dernière chose : la possibilité de tourner la caméra à la souris.<br />
Ajoutez simplement cette ligne à la fin :</p>
<blockquote>
<pre>mvc = new CubicVR.MouseViewController(canvas, scene.camera);</pre>
</blockquote>
<p>Voila nous en avons terminé avec ce tutoriel. J&rsquo;espère que j&rsquo;ai été assez clair dans les explications et que cela vous sera utile. N&rsquo;hésitez pas envoyer vos remarques.</p>
<p><strong>Ressources sur WebGL et CubicVR :</strong></p>
<ul>
<li>Éditeur de terrain : <a href="http://cjcliffe.github.com/CubicVR.js/experiment/landscape_editor/landscape_edit_500m.html" target="_blank" rel="noopener">http://cjcliffe.github.com/CubicVR.js/experiment/landscape_editor/landscape_edit_500m.html</a></li>
<li>Blog sur WebGl (en anglais) : <a href="http://learningwebgl.com/blog/" target="_blank" rel="noopener">http://learningwebgl.com/blog/</a></li>
<li>très bon tuto sur Blender et WebGL : <a title="Blender to WebGL" href="https://www.youtube.com/watch?v=JqmjK-4jh8M" target="_blank" rel="noopener">Blender to WebGL</a></li>
</ul>
<p>L’article <a href="https://www.info-d-74.com/utiliser-webgl-avec-cubicvr/">Utiliser WebGL avec CubicVR</a> est apparu en premier sur <a href="https://www.info-d-74.com">InfoD 74</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.info-d-74.com/utiliser-webgl-avec-cubicvr/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
