<?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>JeGX&#039;s HackLAB &#187; Python</title>
	<atom:link href="http://www.ozone3d.net/blogs/lab/category/programming/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ozone3d.net/blogs/lab</link>
	<description>Pixel hacking, prog 3D et autres bizarreries</description>
	<lastBuildDate>Tue, 13 Dec 2011 16:25:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Lecteur RSS avec GeeXLab et Python</title>
		<link>http://www.ozone3d.net/blogs/lab/20090818/lecteur-rss-avec-geexlab-et-python/</link>
		<comments>http://www.ozone3d.net/blogs/lab/20090818/lecteur-rss-avec-geexlab-et-python/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 13:51:03 +0000</pubDate>
		<dc:creator>JeGX</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Tools de JeGX]]></category>
		<category><![CDATA[GeeXLab]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://www.ozone3d.net/blogs/lab/?p=268</guid>
		<description><![CDATA[Voilà le debut d&#8217;un lecteur RSS fait avec GeeXLab. Tout scripting est fait en Python et je dois dire que j&#8217;adore de plus en plus ce langage. Je commence à m&#8217;y habituer petit à petit et il permet vraiment de se concentrer sur les fonctionnalités à coder et non sur comment coder les fonctions. Ce [...]]]></description>
			<content:encoded><![CDATA[<p><center></p>
<p><img src="http://www.ozone3d.net/blogs/lab/public/200908/geexlab_rss_reader_20090818.jpg" alt="Lecteur RSS avec GeeXLab et Python"/></p>
<p></center><br />
<span id="more-268"></span><br />
Voilà le debut d&#8217;un lecteur <b>RSS</b> fait avec <a href="http://www.geeks3d.com/geexlab/">GeeXLab</a>. Tout scripting est fait en <b>Python</b> et je dois dire que j&#8217;adore de plus en plus ce langage. Je commence à m&#8217;y habituer petit à petit et il permet vraiment de se concentrer sur les fonctionnalités à coder et non sur comment coder les fonctions. </p>
<p>Ce lecteur RSS possède un liste de flux RSS a lire à intervalles réguliers (toutes les deux minutes dans mes tests) et une liste de mots clés qui permettent de détecter les flux les plus intéressants (en rouge rosé dans le screenshot). Lors du passage de la souris sur un lien, ce dernier passe en orange (avec le vrai lien affiché en bas). Un petit click sur un lien ouvre la page web&#8230;</p>
<p>Pour le moment j&#8217;ai codé ces fonctionnalités pour faire du test, mais je vais les améliorer dans le futur et publier le lecteur RSS sur Geeks3D.com&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ozone3d.net/blogs/lab/20090818/lecteur-rss-avec-geexlab-et-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyOpenGL pour Coder en OpenGL dans GeeXLab Sans Compilation</title>
		<link>http://www.ozone3d.net/blogs/lab/20090806/pyopengl-pour-coder-en-opengl-dans-geexlab-sans-compilation/</link>
		<comments>http://www.ozone3d.net/blogs/lab/20090806/pyopengl-pour-coder-en-opengl-dans-geexlab-sans-compilation/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 19:19:40 +0000</pubDate>
		<dc:creator>JeGX</dc:creator>
				<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Tools de JeGX]]></category>
		<category><![CDATA[GeeXLab]]></category>
		<category><![CDATA[pyopengl]]></category>

		<guid isPermaLink="false">http://www.ozone3d.net/blogs/lab/?p=259</guid>
		<description><![CDATA[Là j&#8217;avoue je m&#8217;amuse Ce que j&#8217;adore avec Python, c&#8217;est la richesse des librairies tierces. Il y a pratiquement une librairie pour chaque besoin. Le mien était de pouvoir faire des render calls (ou draw call) dans les scripts Python de GeeXLab. GeeXLab possède des scripts de type Direct Rendering: il est possible dans ce [...]]]></description>
			<content:encoded><![CDATA[<p><center></p>
<p><img src="http://www.ozone3d.net/blogs/lab/public/200908/pyopengl-logo.gif" alt="PyOpenGL"/></p>
<p></center><br />
<span id="more-259"></span><br />
Là j&#8217;avoue je m&#8217;amuse <img src='http://www.ozone3d.net/blogs/lab/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Ce que j&#8217;adore avec <b>Python</b>, c&#8217;est la richesse des librairies tierces. Il y a pratiquement une librairie pour chaque besoin. Le mien était de pouvoir faire des render calls (ou draw call) dans les scripts Python de <b>GeeXLab</b>. GeeXLab possède des scripts de type Direct Rendering: il est possible dans ce type de script de faire des rendus d&#8217;objets et plus généralement de contrôler le renderer temps réel (oui la fameuse carte graphique). Du coup j&#8217;ai coder une librairie LUA/Python au doux nom de HYP_Renderer. Cette lib a les fonctions de base pour dialoguer avec la carte graphique via OpenGL. Mais pour être le plus complet possible, il faudrait implémenter une bonne partie des fonctions OpenGL, ce qui représente un certain travail.</p>
<p>Je me suis dit, tiens, c&#8217;est peut être le moment de tester PyOpenGL&#8230; <a href="http://pyopengl.sourceforge.net/">PyOpenGL</a> est tout simplement la version Python de l&#8217;API OpenGL. La syntaxe et le nom des fonctions, tout y est!</p>
<p>Alors hop, un petit download (en fait plusieurs car la toute dernière version de la lib, PyOpenGL-3.0.1a2.win32.exe, semble avoir quelques bugs, je me suis donc rabattu sur le fichier PyOpenGL-3.0.0c1.win32.exe), une petite install, et me voici prêt à tester <b>PyOpenGL</b>. Je me code vite fait (bah oui c&#8217;est GeeXLab&#8230;) une petite demo qui exploite les scripts direct rendering:</p>
<p><center></p>
<p><img src="http://www.ozone3d.net/blogs/lab/public/200908/geexlab-direct-rendering-pyopengl.jpg" alt="PyOpenGL"/></p>
<p></center><br />
Sur l&#8217;image, le fond dégradé et la grille sont rendus par la logique du moteur 3D, ce qui veut dire aucun render call explicite.</p>
<p>Le carré rouge, les deux sphères et les deux lignes au contraire sont dessinés par des render calls comme le montre le script ci dessous:</p>
<pre>
import HYP_Utils
import HYP_Camera
import HYP_Renderer
import HYP_Object
import HYP_Lighting
import HYP_Scene

#--- Lib PyOpenGL
<b>from OpenGL.GL import *</b>

#--- Les matrices de vue et de projection sont
#--- collés à la carte graphique.
HYP_Camera.ApplyToRenderer(gMainCameraId)

sceneWidth, sceneHeight = HYP_Scene.GetWindowSize()

#--- Yeah! Des petits appels OpenGL. Trop bon!
#--- Ces cinq lignes dessine le carré rouge...
<b>glEnable(GL_SCISSOR_TEST)
glScissor(sceneWidth/2-100, sceneHeight/2-100, 200, 200);
glClearColor(1.0, 0.0, 0.0, 1.0)
glClear(GL_COLOR_BUFFER_BIT)
glDisable(GL_SCISSOR_TEST)</b>

#--- Les lignes suivantes dessinent les deux spheres et les
#--- deux lignes
HYP_Lighting.ApplyToRenderer(gLight01Id)

HYP_Object.ApplyRasterizerStatesToRenderer(gMeshSphere)
HYP_Material.ApplyToRenderer(gSphereMat)

HYP_Renderer.GPUShaderBind(gPhongShader_GLId)
HYP_Object.SetPosition(gMeshSphere, -20.0, 0.0, 0.0);
HYP_Mesh.RenderSubset(gMeshSphere, 0);
HYP_Renderer.GPUShaderBind(0)

HYP_Renderer.GPUShaderBind(gNormalShader_GLId)
HYP_Object.SetPosition(gMeshSphere, 20.0, 0.0, 0.0);
HYP_Mesh.RenderSubset(gMeshSphere, 0);
HYP_Renderer.GPUShaderBind(0)

HYP_Camera.ApplyToRenderer(gMainCameraId)

HYP_Renderer.SetLightingState(0)
HYP_Renderer.SetLineThickness(2.0)
HYP_Renderer.DrawLine(-20.0, -20.0, 20.0,
	1.0, 0.0, 0.0, 1.0,
	20.0, 20.0, -20.0,
	0.0, 1.0, 0.0, 1.0)
HYP_Renderer.DrawLine(20.0, -20.0, 20.0,
	0.0, 0.0, 1.0, 1.0,
	-20.0, 20.0, -20.0,
	1.0, 1.0, 0.0, 1.0)
HYP_Renderer.SetLineThickness(1.0)
</pre>
<p>Pouvoir coder avec l&#8217;API OpenGL sans compilation est assez délirant! Grâce à PyOpenGL, GeeXLab devient une plateforme pour apprendre à programmer en OpenGL simplement.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ozone3d.net/blogs/lab/20090806/pyopengl-pour-coder-en-opengl-dans-geexlab-sans-compilation/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PythonTurtle pour Apprendre le Python Facilement!</title>
		<link>http://www.ozone3d.net/blogs/lab/20090804/python-pythonturtle-pour-apprendre-le-python-facilement/</link>
		<comments>http://www.ozone3d.net/blogs/lab/20090804/python-pythonturtle-pour-apprendre-le-python-facilement/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 11:31:29 +0000</pubDate>
		<dc:creator>JeGX</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[libe-coding]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[pythonturtle]]></category>

		<guid isPermaLink="false">http://www.ozone3d.net/blogs/lab/?p=244</guid>
		<description><![CDATA[Et oui comme Python fait parti des milliards de fonctionnalités de GeeXLab, dès que je tombe sur une info Python, je la lis toujours avec attention. Hier j&#8217;ai decouvert PythonTurtle qui est une toute petite appli destinée à apprendre le Python. En gros, il y a deux fonction: go() et turn(). Et avec ces deux [...]]]></description>
			<content:encoded><![CDATA[<p><center></p>
<p><img src="http://www.ozone3d.net/blogs/lab/public/200908/python-turtle-01.jpg" alt="PythonTurtle"/></p>
<p></center><br />
<span id="more-244"></span><br />
Et oui comme Python fait parti des milliards de fonctionnalités de <a href="http://www.geeks3d.com/geexlab/">GeeXLab</a>, dès que je tombe sur une info Python, je la lis toujours avec attention. </p>
<p>Hier j&#8217;ai decouvert <a href="http://pythonturtle.com/">PythonTurtle</a> qui est une toute petite appli destinée à apprendre le Python. En gros, il y a deux fonction: go() et turn(). Et avec ces deux fonctions, il faut controler la position et l&#8217;orientation d&#8217;une petite tortue. Quelques appels à ces deux fonctions permettent d&#8217;obtenir le rendu de l&#8217;image ci-dessus.</p>
<p>Mais on peut aussi faire des trucs plus compliqués comme cet exemple extrait de l&#8217;aide de PythonTurtle:<br />
<center></p>
<p><img src="http://www.ozone3d.net/blogs/lab/public/200908/python-turtle.jpg" alt="PythonTurtle"/></p>
<p></center></p>
<p>Le concept de &#8220;live-coding&#8221; est assez sympa et c&#8217;est un truc qui pourrait être ajouté dans GeeXLab pourquoi pas!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ozone3d.net/blogs/lab/20090804/python-pythonturtle-pour-apprendre-le-python-facilement/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 1/37 queries in 0.033 seconds using disk: basic
Object Caching 312/385 objects using disk: basic

Served from: www.ozone3d.net @ 2012-02-12 00:35:33 -->
