Dorian Fevrier's blog - Mot-clé - bidouilleJe m’appelle FEVRIER Dorian, je suis infographiste 3D passionné par mon métier, l’informatique en général, l’internet, la programmation et l’évolution de tout ce petit monde. Vous trouverez sur ce blog des tutoriaux, mes coups de cœurs, avis, etc.2024-01-02T23:48:05+01:00FEVRIER Dorianurn:md5:695d9c73474c33ce3dab043823509c4bDotclearLes maps mental ray (part 3): Fabriquer sa map de debugurn:md5:6dc26d3ecd617ba8cd524f38d3ffbfe72010-01-31T22:16:00+01:002013-07-26T22:34:32+02:00NarannInfographie 3D - Boulot3ds maxbatbatchbidouilledebugfrimf_copymapmayamental ray<p><img src="https://www.fevrierdorian.com/blog/public/billets/2010_creer_map_debug/map_mental_ray_create_tn.png" alt="map_mental_ray_create_tn.png" style="float:left; margin: 0 1em 1em 0;" title="map_mental_ray_create_tn.png, janv. 2010" height="150" width="150" />Pour clore ce chapitre sur les maps de mental ray je vais expliquer la démarche pour en créer une spécialement dédié au debug. Comme vu <a href="https://www.fevrierdorian.com/blog/post/2010/01/30/Les-maps-mental-ray-%28part-2.2%29%3A-Le-debug">précédemment</a>, l'idée est d'avoir une map avec différentes images à chaque niveaux. Ce qui permet de mieux régler les options de filtrage de texture lors d'un rendu et/ou de débugger le comportement des textures. Ce billet est le plus court des trois. :hehe:</p> <p>Une fois encore, tout le mérite revient à <a href="http://fr.linkedin.com/in/pierrelopes" hreflang="en">Pierre LOPES</a> qui m'a fait "découvrir" le principe de la "map de debug".</p>
<p>Pour générer une .map, comme d'habitude, il faut utiliser l'utilitaire <a href="https://www.fevrierdorian.com/blog/post/2009/01/14/Le-mappage-en-m%C3%A9moire-des-textures-dans-Mental-Ray-expliqu%C3%A9-%28Memory-mapped-textures%29.#imf_copy">imf_copy</a>.
Allez le chercher dans:</p>
<pre class="bash bash">C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe</pre>
<p>Comme vu dans l'aide <a href="https://www.fevrierdorian.com/blog/post/2009/01/14/Le-mappage-en-m%C3%A9moire-des-textures-dans-Mental-Ray-expliqu%C3%A9-%28Memory-mapped-textures%29.#imf_copy_traduction">précédemment</a>, il va falloir utiliser le flag "-c" suivi de la liste des images de la plus grande à la plus petite:</p>
<pre class="bash bash">imf_copy <span style="color: #660033;">-v</span> <span style="color: #660033;">-r</span> <span style="color: #660033;">-c</span> test.0.png test.1.png test.2.png ...etc... myDebugMap.map</pre>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/2010_creer_map_debug/.map_mental_ray_create001_m.jpg" alt="map_mental_ray_create001.png" style="display:block; margin:0 auto;" title="map_mental_ray_create001.png, janv. 2010" height="156" width="448" />
Important, pour éviter les problèmes du genre:</p>
<pre class="bash bash">MAIN <span style="color: #000000;">0.0</span> warn : C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe: smallest resolution is <span style="color: #000000;">4096</span> <span style="color: #000000;">4096</span>, expected <span style="color: #000000;">1</span> <span style="color: #000000;">1</span>
MAIN <span style="color: #000000;">0.0</span> warn : C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe: unexpected resolutions may cause nonoptimal filtering</pre>
<p>Veillez à ce que la dernière image donné dans votre liste soit une image de 1x1 pixels. Il faut donner toute les résolutions en puissance de deux entre votre résolution max jusqu'à 1 pixel.</p>
<pre class="bash bash">D:\3D\debugMap<span style="color: #000000; font-weight: bold;">></span><span style="color: #ff0000;">"C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe"</span> <span style="color: #660033;">-v</span> <span style="color: #660033;">-r</span> <span style="color: #660033;">-c</span> test.0.png test.1.png test.2.png test.3.png test.4.png test.5.png test.6.png test.7.png test.8.png test.9.png test.10.png test.11.png test.12.png test.13.png myTexture.map
MAIN .0 info : Copyright <span style="color: #000000;">1993</span>-<span style="color: #000000;">2009</span> mental images GmbH, Berlin, Germany. All rights reserved.
MAIN .0 info : imf_copy version 3.6.1
MAIN .0 info : version 3.7.52.14, Jan <span style="color: #000000;">6</span> <span style="color: #000000;">2009</span>, revision <span style="color: #000000;">30162</span>
IMG <span style="color: #000000;">0.0</span> info : opening <span style="color: #ff0000;">"test.0.png"</span> <span style="color: #000000; font-weight: bold;">for</span> reading
MAIN <span style="color: #000000;">0.0</span> info : C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe: <span style="color: #666666; font-style: italic;">#0: test.0.png (8192 x 8192) --> myTexture.map</span>
IMG <span style="color: #000000;">0.0</span> info : opening <span style="color: #ff0000;">"test.1.png"</span> <span style="color: #000000; font-weight: bold;">for</span> reading
MAIN <span style="color: #000000;">0.0</span> info : C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe: <span style="color: #666666; font-style: italic;">#1: test.1.png (4096 x 4096) --> myTexture.map</span>
IMG <span style="color: #000000;">0.0</span> info : opening <span style="color: #ff0000;">"test.2.png"</span> <span style="color: #000000; font-weight: bold;">for</span> reading
MAIN <span style="color: #000000;">0.0</span> info : C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe: <span style="color: #666666; font-style: italic;">#2: test.2.png (2048 x 2048) --> myTexture.map</span>
IMG <span style="color: #000000;">0.0</span> info : opening <span style="color: #ff0000;">"test.3.png"</span> <span style="color: #000000; font-weight: bold;">for</span> reading
MAIN <span style="color: #000000;">0.0</span> info : C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe: <span style="color: #666666; font-style: italic;">#3: test.3.png (1024 x 1024) --> myTexture.map</span>
IMG <span style="color: #000000;">0.0</span> info : opening <span style="color: #ff0000;">"test.4.png"</span> <span style="color: #000000; font-weight: bold;">for</span> reading
MAIN <span style="color: #000000;">0.0</span> info : C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe: <span style="color: #666666; font-style: italic;">#4: test.4.png (512 x 512) --> myTexture.map</span>
IMG <span style="color: #000000;">0.0</span> info : opening <span style="color: #ff0000;">"test.5.png"</span> <span style="color: #000000; font-weight: bold;">for</span> reading
MAIN <span style="color: #000000;">0.0</span> info : C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe: <span style="color: #666666; font-style: italic;">#5: test.5.png (256 x 256) --> myTexture.map</span>
IMG <span style="color: #000000;">0.0</span> info : opening <span style="color: #ff0000;">"test.6.png"</span> <span style="color: #000000; font-weight: bold;">for</span> reading
MAIN <span style="color: #000000;">0.0</span> info : C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe: <span style="color: #666666; font-style: italic;">#6: test.6.png (128 x 128) --> myTexture.map</span>
IMG <span style="color: #000000;">0.0</span> info : opening <span style="color: #ff0000;">"test.7.png"</span> <span style="color: #000000; font-weight: bold;">for</span> reading
MAIN <span style="color: #000000;">0.0</span> info : C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe: <span style="color: #666666; font-style: italic;">#7: test.7.png (64 x 64) --> myTexture.map</span>
IMG <span style="color: #000000;">0.0</span> info : opening <span style="color: #ff0000;">"test.8.png"</span> <span style="color: #000000; font-weight: bold;">for</span> reading
MAIN <span style="color: #000000;">0.0</span> info : C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe: <span style="color: #666666; font-style: italic;">#8: test.8.png (32 x 32) --> myTexture.map</span>
IMG <span style="color: #000000;">0.0</span> info : opening <span style="color: #ff0000;">"test.9.png"</span> <span style="color: #000000; font-weight: bold;">for</span> reading
MAIN <span style="color: #000000;">0.0</span> info : C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe: <span style="color: #666666; font-style: italic;">#9: test.9.png (16 x 16) --> myTexture.map</span>
IMG <span style="color: #000000;">0.0</span> info : opening <span style="color: #ff0000;">"test.10.png"</span> <span style="color: #000000; font-weight: bold;">for</span> reading
MAIN <span style="color: #000000;">0.0</span> info : C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe: <span style="color: #666666; font-style: italic;">#10: test.10.png (8 x 8) --> myTexture.map</span>
IMG <span style="color: #000000;">0.0</span> info : opening <span style="color: #ff0000;">"test.11.png"</span> <span style="color: #000000; font-weight: bold;">for</span> reading
MAIN <span style="color: #000000;">0.0</span> info : C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe: <span style="color: #666666; font-style: italic;">#11: test.11.png (4 x 4) --> myTexture.map</span>
IMG <span style="color: #000000;">0.0</span> info : opening <span style="color: #ff0000;">"test.12.png"</span> <span style="color: #000000; font-weight: bold;">for</span> reading
MAIN <span style="color: #000000;">0.0</span> info : C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe: <span style="color: #666666; font-style: italic;">#12: test.12.png (2 x 2) --> myTexture.map</span>
IMG <span style="color: #000000;">0.0</span> info : opening <span style="color: #ff0000;">"test.13.png"</span> <span style="color: #000000; font-weight: bold;">for</span> reading
MAIN <span style="color: #000000;">0.0</span> info : C:\Program Files\Autodesk\Maya2010\bin\imf_copy.exe: <span style="color: #666666; font-style: italic;">#13: test.13.png (1 x 1) --> myTexture.map</span></pre>
<p>Vous devriez vous retrouver avec un fichier assez gros (341 Mo pour moi) que vous pouvez maintenant utiliser dans vos scènes pour débugger vos textures.</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/2010_creer_map_debug/map_mental_ray_create002.png" alt="map_mental_ray_create002.png" style="display:block; margin:0 auto;" title="map_mental_ray_create002.png, janv. 2010" height="320" width="146" /></p>
<p>Notez que si l'application principalement utilisé ici est Maya, normalement, ont peut très bien utiliser cette map avec n'importe quel soft qui utilise mental ray.</p>
<p>En espérant que ce billet vous aura aider. :sourit:</p>
<p>N'hésitez pas à laisser un commentaire si vous avez des questions ou si je n'ai pas été assez clair quelque part.</p>
<p>A bientôt!</p>
<center>:marioCours:</center>
Radeon 4870 HD sous Vista x64: Résoudre le bug du viewporturn:md5:a1ece7ca5177800a07e7467585a3eb472009-08-01T10:42:00+02:002013-07-26T22:40:07+02:00NarannCrashs et bugs32bits3d64bitsbidouilledriverfireglfrmoddingradeon<p><img src="https://www.fevrierdorian.com/blog/public/logos/vista-64_150.png" alt="vista-64_150.png" style="float:left; margin: 0 1em 1em 0;" title="vista-64_150.png, août 2009" height="150" width="150" />Dans un ancien billet, je parlais de transformer (on dit "soft modder") une Sapphire Radeon 4870 HD en FirePro 8750 sous XP64. Bien entendu, la manipulation ne permettait pas d'avoir les spécificités du driver (qui sont les principal raison d'acheter une quadro). En revanche, elle permettait de faire disparaitre un "bug" dans Maya qui faisait qu'il était dur de sélectionner des choses dans le viewport (par exemple, avec le gizmo de rotation, quand on clique sur l'axe rouge, X, il sélectionne l'axe bleu, Z). Ça à l'air tout bête comme ça, mais ce bug pourris suffisamment la vie au point que je n'ouvrais plus Maya sur mon PC. Quand je suis passé à Vista x64, le problème est réapparu (logique!) et il existe une manip' toute simple (tellement simple qu'elle ne mériterai même pas un billet) pour pouvoir forcer le driver de la FirePro sur la Radeon.</p> <p>Vous allez voir, c'est tout con, fallait juste y penser! :hehe:</p>
<p>Bon, normalement, si votre Radeon est bien installé vous avez ça:</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/Radeon4870Vista64/radeon_driver_install_001.png" alt="radeon_driver_install_001.png" style="display:block; margin:0 auto;" title="radeon_driver_install_001.png, août 2009" height="147" width="310" /></p>
<p>Et si vous essayez de faire tourner votre cube...</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/Radeon4870Vista64/radeon_driver_install_002.png" alt="radeon_driver_install_002.png" style="display:block; margin:0 auto;" title="radeon_driver_install_002.png, août 2009" height="245" width="308" /></p>
<h5>Bon, maintenant la manip!</h5>
<p>C'est tellement simple que j'en ai honte:</p>
<p>Téléchargez les derniers drivers FireGL (FirePro_8.62_Vista64_82694.exe)</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/Radeon4870Vista64/radeon_driver_install_003.png" alt="radeon_driver_install_003.png" style="display:block; margin:0 auto;" title="radeon_driver_install_003.png, août 2009" height="39" width="287" /></p>
<p>Lancez l'installe mais annulez là une fois qu'il a décompressé les fichiers (dans "C:\AMD\FirePro_8.62_Vista64_82694").</p>
<p>Ensuite, depuis votre gestionnaire de périphériques:</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/Radeon4870Vista64/radeon_driver_install_004.png" alt="radeon_driver_install_004.png" style="display:block; margin:0 auto;" title="radeon_driver_install_004.png, août 2009" height="77" width="528" /></p>
<p>Il faut installer en manuel:</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/Radeon4870Vista64/radeon_driver_install_005.png" alt="radeon_driver_install_005.png" style="display:block; margin:0 auto;" title="radeon_driver_install_005.png, août 2009" height="244" width="539" /></p>
<p>On choisit donc les drivers à installer nous même:</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/Radeon4870Vista64/radeon_driver_install_006.png" alt="radeon_driver_install_006.png" style="display:block; margin:0 auto;" title="radeon_driver_install_006.png, août 2009" height="298" width="551" /></p>
<p>Dans la liste, cliquez sur "Disque fourni...":</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/Radeon4870Vista64/radeon_driver_install_007.png" alt="radeon_driver_install_007.png" style="display:block; margin:0 auto;" title="radeon_driver_install_007.png, août 2009" height="124" width="400" /></p>
<p>Naviguez dans la hiérarchie:</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/Radeon4870Vista64/radeon_driver_install_008.png" alt="radeon_driver_install_008.png" style="display:block; margin:0 auto;" title="radeon_driver_install_008.png, août 2009" height="160" width="195" /></p>
<p>Sélectionnez l'inf et validez:</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/Radeon4870Vista64/radeon_driver_install_009.png" alt="radeon_driver_install_009.png" style="display:block; margin:0 auto;" title="radeon_driver_install_009.png, août 2009" height="117" width="277" /></p>
<p>Il vous propose une liste de carte FirePro, choisissez là FirePro 8700:</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/Radeon4870Vista64/radeon_driver_install_010.png" alt="radeon_driver_install_010.png" style="display:block; margin:0 auto;" title="radeon_driver_install_010.png, août 2009" height="113" width="200" /></p>
<p>Petit message d'erreur habituel comme quoi le driver n'est pas fait pour la carte, on valide!</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/Radeon4870Vista64/radeon_driver_install_011.png" alt="radeon_driver_install_011.png" style="display:block; margin:0 auto;" title="radeon_driver_install_011.png, août 2009" height="237" width="500" /></p>
<p>Pif!</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/Radeon4870Vista64/radeon_driver_install_012.png" alt="radeon_driver_install_012.png" style="display:block; margin:0 auto;" title="radeon_driver_install_012.png, août 2009" height="78" width="558" /></p>
<p>Paf!</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/Radeon4870Vista64/radeon_driver_install_013.png" alt="radeon_driver_install_013.png" style="display:block; margin:0 auto;" title="radeon_driver_install_013.png, août 2009" height="104" width="361" /></p>
<p>Boum!</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/Radeon4870Vista64/radeon_driver_install_014.png" alt="radeon_driver_install_014.png" style="display:block; margin:0 auto;" title="radeon_driver_install_014.png, août 2009" height="64" width="255" /></p>
<p>Et maintenant, quand vous cliquez sur un axe, c'est bien l'axe voulu qui est sélectionné:</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/Radeon4870Vista64/radeon_driver_install_015.png" alt="radeon_driver_install_015.png" style="display:block; margin:0 auto;" title="radeon_driver_install_015.png, août 2009" height="227" width="309" /></p>
<h5>Mot de la fin</h5>
<p>Bon c'est vraiment pas compliqué et vous n'avez pas débloqué les capacités FireGL de la carte mais on peut travaillé décemment sous Maya ce qui n'est pas du luxe.</p>
<p>Encore une fois, c'est tellement frustrant de pas pouvoir bosser à cause d'un bug à la mord moi le nœud que j'ai choisi de vous faire part de ma <del>petite</del> minable découverte qui je l'espère, en aidera d'autres.</p>
<p>N'hésitez pas à laisser un commentaire si vous avez rencontré des problèmes durant la manip!</p>
<p>PS: Un passionné semble être sur le point de trouver un moyen de patcher les drivers Win7 et Vista (32 et 64). Je pense qu'il ne va pas tarder à sortir quelque chose... Si vous êtes intéressé, suivez avec attention <a href="http://forums.guru3d.com/showthread.php?t=275174&page=14" hreflang="en">ce thread</a>.</p>
<p>A bientôt! :sourit:</p>
<p>Dorian</p>
<p><strong>MAJ 2011 05 17</strong>: Si vous avez des soucis en utilisant cette méthode. Assurez vous d'avoir changé le Device ID dans le .inf:</p>
<pre class="bash bash"><span style="color: #ff0000;">"ATI FirePro V8700 (FireGL)"</span> = ati2mtag_RV7XGL, PCI\VEN_1002<span style="color: #000000; font-weight: bold;">&</span>DEV_9456</pre>
<p>En:</p>
<pre class="bash bash"><span style="color: #ff0000;">"ATI FirePro V8700 (FireGL)"</span> = ati2mtag_RV7XGL, PCI\VEN_1002<span style="color: #000000; font-weight: bold;">&</span>DEV_9440</pre>Appliquer un script à toutes les scenes Maya du dossierurn:md5:c316289bd40a97c6e54a594daa9504c22009-05-29T22:20:00+02:002013-07-26T22:40:20+02:00NarannScript et codebatbatchbidouilledossiersfichiersfrmayamelpatchscript<p><img src="https://www.fevrierdorian.com/blog/public/billets/patchFolderScene/patchFolderScene003.png" alt="patchFolderScene003.png" style="float:left; margin: 0 1em 1em 0;" title="patchFolderScene003.png, mai 2009" height="90" width="90" />Il peut arriver en cours de prod d'avoir à appliquer un petite modification sur un grand nombre de scène (en général quand on en arrive là c'est qu'on a des failles dans les rouages quelque part :siffle: ). Je vous propose donc ici un méthode (il y en à d'autres) qui se révèle assez simple pour appliquer un script à l'intégralité des scènes d'un dossier.</p> <h5>Le principe</h5>
<p>Comme vous le savez surement déjà, vous pouvez lancez maya en ligne de commande. Pour plus d'information, <a href="http://fr.wikipedia.org/wiki/RTFM" hreflang="fr">RTFM</a>! Allez dans l'aide Maya:</p>
<blockquote><p>User Guide > General > Basics > Interface overview > Work with menu items, tools, and options > Start Maya from the command line</p></blockquote>
<p>Nous allons donc créer un batch qui lance Maya et exécute un script.</p>
<p>Nous auront besoin de trois choses choses:</p>
<ol>
<li>Un premier .bat: Qui contiendra les commandes maya que Windows exécute.</li>
<li>Un .mel: Qui sera le script exécuté par Maya à l'ouverture.</li>
<li>Un second .bat: Qui appellera le premier bat une fois pour chaque fichier du dossier.</li>
</ol>
<p>On pourrait s'y prendre avec un seul .bat mais ça complexifie un peu l'écriture.</p>
<h5>On approfondi</h5>
<p>La ligne de commande du premier bat ressemble grosso modo à ça (patchFolderScenes.bat):</p>
<pre class="dos dos">maya -batch -script <monSuperScript.mel> -file <maSceneMaya.ma></pre>
<p>Le script (monSuperScript.mel):</p>
<pre class="mel mel">proc monSuperScript<span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #666666; font-style: italic;">//declaration de la procedure</span>
<span style="color: #009900;">{</span>
print<span style="color: #009900;">(</span><span style="color: #ff0000;">"patchFolderScenes -> Launched...<span style="color: #000099; font-weight: bold;">\n</span>"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//on affiche le message de demarrage (facultatif)</span>
<span style="color: #666666; font-style: italic;">//mes commandes mel</span>
file <span style="color: #339933;">-</span>save<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//on sauvegarde à la fin sinon les modifications ne seront pas apporté à la scene</span>
print<span style="color: #009900;">(</span><span style="color: #ff0000;">"patchFolderScenes -> Finished...<span style="color: #000099; font-weight: bold;">\n</span>"</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//on affiche le message de fin (facultatif)</span>
<span style="color: #009900;">}</span>
monSuperScript<span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//on lance la procedure</span></pre>
<p>Et pour finir, le second bat qui lancera le premier pour chaque scène maya du dossier en cours (applyPatchToAllScenes.bat):</p>
<pre class="dos dos"><span style="color: #00b100; font-weight: bold;">for</span> <tout les fichier .ma ou .mb> <span style="color: #00b100; font-weight: bold;">do</span> <span style="color: #00b100; font-weight: bold;">call</span> patchFolderScenes.bat <nom du fichier></pre>
<p>C'est celui là qu'on lancera.</p>
<h5>Du concret</h5>
<p>Bon, maintenant que vous connaissez le principe, nous allons appliquer tout ça.</p>
<p>Je vous propose de créer un fichier test.bat et de l'ouvrir avec un éditeur de texte.
<img src="https://www.fevrierdorian.com/blog/public/billets/patchFolderScene/patchFolderScene001.png" alt="patchFolderScene001.png" style="display:block; margin:0 auto;" title="patchFolderScene001.png, mai 2009" height="107" width="177" />
Il existe des "trucs" (désolé, j'ai pas trouvé d'autres noms) pour afficher les répertoires. Je m'explique:</p>
<p>En batch, les fichiers argument sont des variables écrites comme ça:</p>
<pre>%1 << Premier argument du bat
%2 << Second argument du bat
etc...</pre>
<p>Taper dans votre test.bat:</p>
<pre class="dos dos"><span style="color: #b1b100; font-weight: bold;">echo</span> <span style="color: #33cc33;">%</span><span style="color: #448888;">1</span>
<span style="color: #b1b100; font-weight: bold;">pause</span></pre>
<ol>
<li>Ouvrez un invite de commande Windows</li>
<li>Cliquez-glissez votre test.bat</li>
<li>Mettez un espace</li>
<li>Glissez un fichier quelconque derrière</li>
<li>Lancez tous ça!</li>
</ol>
<pre class="dos dos">C:\Documents and Settings\user\testFolder>test.bat monfichier.txt
C:\Documents and Settings\user\testFolder>echo monfichier.txt
monfichier.txt
C:\Documents and Settings\user\testFolder>pause
Appuyez sur une touche pour continuer...</pre>
<p>Maintenant, mettez:</p>
<pre class="dos dos"><span style="color: #b1b100; font-weight: bold;">echo</span> <span style="color: #33cc33;">%</span><span style="color: #448888;">0</span>
<span style="color: #b1b100; font-weight: bold;">pause</span></pre>
<p>Lancez le:</p>
<pre class="dos dos">C:\Documents and Settings\user\testFolder>test.bat
C:\Documents and Settings\user\testFolder>echo test.bat
test.bat
C:\Documents and Settings\user\testFolder>pause
Appuyez sur une touche pour continuer...</pre>
<p>Oooh... Surprise...
%0 correspondau fichier bat lui même.</p>
<h5>Ça me fait une belle jambe...</h5>
<p>Du calme, ce n'est pas tout :sourit:</p>
<p>"~" (tilde) suivi d'une lettre (cf: <a href="http://www.rdpslides.com/publiclinks/FAQ00138.htm" hreflang="en">petite documentation</a>) va nous permettre de récupérer le chemin du répertoire.</p>
<pre>%~0 -> Enlève les guillemets si il y en a.
%~f0 -> C:\Documents and Settings\user\testFolder\test.bat
%~d0 -> C:
%~p0 -> \Documents and Settings\user\testFolder\
%~n0 -> test
%~x0 -> .bat
%~s0 -> C:\DOCUME~1\user\TESTFO~1\test.bat
%~a0 -> --a------ (les attributs du fichier)
%~t0 -> 29/05/2009 22:06 (Date de la dernière modification... Pratique hein? ;) )
%~z0 -> 9 (taille en octet, pratique aussi)</pre>
<p>Vous l'aurez compris:</p>
<pre class="dos dos"><span style="color: #b1b100; font-weight: bold;">echo</span> <span style="color: #33cc33;">%</span><span style="color: #448888;">~dp0</span>
<span style="color: #b1b100; font-weight: bold;">pause</span></pre>
<p>Donne:</p>
<pre class="dos dos">C:\Documents and Settings\user\testFolder>test.bat
C:\Documents and Settings\user\testFolder>echo C:\Documents and Settings\user\testFolder\
C:\Documents and Settings\user\testFolder\
C:\Documents and Settings\user\testFolder>pause
Appuyez sur une touche pour continuer...</pre>
<p>Nous avons maintenant le dossier dans lequel on exécute le bat!</p>
<p>Pour simplifier la procédure, nous allons considérer que votre .mel à exécuter se trouve dans le même répertoire que le .bat :hehe: .</p>
<p>Donc:</p>
<pre class="dos dos"><span style="color: #b1b100; font-weight: bold;">echo</span> <span style="color: #33cc33;">%</span>~dp0monSuperScript.mel
<span style="color: #b1b100; font-weight: bold;">pause</span></pre>
<p>Donne:</p>
<pre class="dos dos">C:\Documents and Settings\user\testFolder>test.bat
C:\Documents and Settings\user\testFolder>echo C:\Documents and Settings\user\testFolder\monSuperScript.mel
C:\Documents and Settings\user\testFolder\monSuperScript.mel
C:\Documents and Settings\user\testFolder>pause
Appuyez sur une touche pour continuer...</pre>
<p>On viens de récupérer le chemin du script qu'on souhaite exécuter. Nous n'avons plus qu'a stocker cette information dans une variable:</p>
<pre class="dos dos"><span style="color: #b1b100; font-weight: bold;">SET</span> scriptPath=<span style="color: #33cc33;">%</span>~dp0patchFolderScenes.mel</pre>
<p>Écrire le début de la ligne de commande avec laquelle on appel Maya:</p>
<pre class="dos dos">maya -batch -script "<span style="color: #33cc33;">%</span><span style="color: #448888;">scriptPath</span><span style="color: #33cc33;">%</span>"</pre>
<p>Ajouter l'argument "file" pour dire quel fichier il doit ouvrir</p>
<pre class="dos dos">maya -batch -script "<span style="color: #33cc33;">%</span><span style="color: #448888;">scriptPath</span><span style="color: #33cc33;">%</span>" -file <span style="color: #33cc33;">%</span><span style="color: #448888;">1</span></pre>
<p>Rappelez vous, %1 est le premier argument donné après le bat.</p>
<p>Votre test.bat:</p>
<pre class="dos dos"><span style="color: #b1b100; font-weight: bold;">SET</span> scriptPath=<span style="color: #33cc33;">%</span>~dp0patchFolderScenes.mel
maya -batch -script "<span style="color: #33cc33;">%</span><span style="color: #448888;">scriptPath</span><span style="color: #33cc33;">%</span>" -file <span style="color: #33cc33;">%</span><span style="color: #448888;">1</span></pre>
<p>Si vous lancez:</p>
<pre class="dos dos">C:\Documents and Settings\user\testFolder>test.bat maScene.ma</pre>
<p>Vous aurez Maya qui ouvrira votre scène, lancera le script et quittera. Aussi simple que ça! Vous pouvez aussi cliquer glissez votre scène sur le .bat:</p>
<p><img src="https://www.fevrierdorian.com/blog/public/billets/patchFolderScene/patchFolderScene002.png" alt="patchFolderScene002.png" style="display:block; margin:0 auto;" title="patchFolderScene002.png, mai 2009" height="85" width="207" /></p>
<p>Renommez votre "test.bat" en "patchFolderScenes.bat".</p>
<p>Nous avons fait la moitié! Prochaine étape, faire un .bat qui appel patchFolderScenes.bat pour chaque fichier .ma ou .mb du fichier.</p>
<h5>Patch mes scènes j'te dis!</h5>
<p>Créez (toujours dans le même répertoire) un fichier "allPatchFolderScenes.bat" et ouvrez le avec un éditeur de texte.</p>
<p>Et là, attention, c'est du gros!</p>
<p>Dans un premier temps, nous allons apprendre à appeler un .bat depuis un autre .bat :hehe: . Pour cela, nous allons utiliser la commande "call" (sans déconner...). Créez un fichier "allPatchFolderScenes.bat" et entrez y:</p>
<pre class="dos dos"><span style="color: #00b100; font-weight: bold;">call</span> patchFolderScenes.bat maScene.ma</pre>
<p>Et double cliquez dessus. C'est comme si vous aviez lancez:</p>
<pre class="dos dos">C:\Documents and Settings\user\testFolder>patchFolderScenes.bat maScene.ma</pre>
<p>Maintenant, il faut intégrer ça à une boucle de batch.</p>
<h5>La boucle</h5>
<p>La boucle for en batch se fait sur une ligne...:baffed: La notre prendra la forme:</p>
<pre class="dos dos"><span style="color: #00b100; font-weight: bold;">for</span> <span style="color: #33cc33;">%%</span><span style="color: #448888;">f</span> <span style="color: #00b100; font-weight: bold;">in</span> <span style="color: #66cc66;">(</span>*.mb *.ma<span style="color: #66cc66;">)</span> <span style="color: #00b100; font-weight: bold;">do</span> <span style="color: #66cc66;">[</span>...pleins de choses...<span style="color: #66cc66;">]</span></pre>
<p>Cette boucle va récupérer tout les fichiers (sous la variable %%f) et faire: [...pleins de choses...] (En l'occurrence, vous l'aurez compris, un "call patchFolderScenes.bat maScene.ma")</p>
<p>Si vous êtes du genre pressez et que vous tapez:</p>
<pre class="dos dos"><span style="color: #00b100; font-weight: bold;">for</span> <span style="color: #33cc33;">%%</span><span style="color: #448888;">f</span> <span style="color: #00b100; font-weight: bold;">in</span> <span style="color: #66cc66;">(</span>*.mb *.ma<span style="color: #66cc66;">)</span> <span style="color: #00b100; font-weight: bold;">do</span> <span style="color: #00b100; font-weight: bold;">call</span> patchFolderScenes.bat <span style="color: #33cc33;">%%</span><span style="color: #448888;">f</span></pre>
<p>Vous aurez quelques soucis... En effet %%f est juste un nom de fichier. Et il lui faut un chemin complet vers un fichier.</p>
<p>Ni une, ni deux, je vous donne la méthode sans explications (La vérité c'est que je ne me souvient plus moi même comment je l'ai trouvé! :siffle: )</p>
<pre class="dos dos"><span style="color: #00b100; font-weight: bold;">for</span> <span style="color: #33cc33;">%%</span><span style="color: #448888;">f</span> <span style="color: #00b100; font-weight: bold;">in</span> <span style="color: #66cc66;">(</span>*.mb *.ma<span style="color: #66cc66;">)</span> <span style="color: #00b100; font-weight: bold;">do</span> <span style="color: #00b100; font-weight: bold;">call</span> patchFolderScenes.bat <span style="color: #33cc33;">%</span><span style="color: #33cc33;">%</span>~dpf<span style="color: #33cc33;">%%</span><span style="color: #448888;">f</span></pre>
<p>Vous n'avez plus qu'a double-cliquer sur "allPatchFolderScenes.bat" et il appellera, pour chaque fichier .ma ou .mb du dossier, "patchFolderScenes.bat" avec comme argument, le chemin de la scène.</p>
<p>Vous pouvez vous redresser et admirer votre ordinateur s'épuiser à ouvrir les 300 plans pour changer la couleur du poil de cul d'un des objet de vos scènes (que vous vous maudissez de ne pas avoir importé en référence externe pour le coup) parce que la femme de votre client à trouvé que c'était "mieux en rose bonbon sur font vert-fuschia"...</p>
<p>Bref, vous y trouverez surement un intérêt! En cas de problème n'hésitez pas à laisser un commentaire, j'ai testé la manipulation mais il se peut que j'ai oublié deux trois détails.</p>
<p>A bientôt!</p>
<p>Dorian</p>La bidouille des attributs cachéurn:md5:81bb81e35af745193e2b64d79381c0f32009-03-14T15:13:00+01:002013-07-26T22:41:30+02:00NarannInfographie 3D - Boulotbidouillefrinterfacemanipulationmayamayatomrmental rayoverriderendutricks<p><img src="https://www.fevrierdorian.com/blog/public/attributsCache/attributsCacheRendu010_tn.png" alt="attributsCacheRendu010_tn.png" style="float:left; margin: 0 1em 1em 0;" title="attributsCacheRendu010_tn.png, mar. 2009" height="150" width="150" />Lors ce qu'on cherche à modifier des paramètres, "overrider" des attributs, Il arrive qu'on se retrouve bloquer par les choix d'interfaçage de Maya. C'est surtout en rendu qu'on s'en rend le plus compte. Aujourd'hui, je vous propose non pas un "tricks-of-the-dead" mais une manipulation qu'il m'arrive de faire (de plus en plus souvent malheureusement) lorsque je debug une scène ou cherche à comprendre ou est caché tel ou tel paramètre de rendu mental ray (encore une fois, l'intérêt de cette "moulinette" est surtout destiné aux render-men qui veulent comprendre comment la passerelle mayatomr fonctionne).</p> <h5>Pourquoi faire ça?</h5>
<p>C'est vrai quoi, il est très bien Maya... Bon... C'est le genre de billet où je suis obligé de m'énerver un peu car vous allez voir qu'on découvre des choses assez "rigolotes" (enfin, ça l'est beaucoup moins quand on travail sur une prod et que des plans doivent sortirent. :nervous: ). Cela dis, il faut avouer que c'est typiquement le genre de manipulation qui n'est possible "que" sous un logiciel comme Maya... Un autre logiciel ne permettrait pas d'accéder aussi facilement à ce genre d'attribut (mais un autre logiciel aurait une interface "fini" lui... :siffle: ).</p>
<h5>Let's start!</h5>
<p>Nous allons commencer par sélectionner le node qui nous intéresse. Je vous propose celui que je trouve le plus mystérieux, à savoir: miDefaultOptions. :hehe:</p>
<p>Tapez:</p>
<pre class="mel mel">select miDefaultOptions</pre>
<p>Dans la ligne de commande Maya.</p>
<p><img src="https://www.fevrierdorian.com/blog/public/attributsCache/attributsCacheRendu001.png" alt="attributsCacheRendu001.png" style="display:block; margin:0 auto;" title="attributsCacheRendu001.png, mar. 2009" height="52" width="213" /></p>
<p>Ouvrez l'Attribute Editor.</p>
<p><img src="https://www.fevrierdorian.com/blog/public/attributsCache/attributsCacheRendu002.png" alt="attributsCacheRendu002.png" style="display:block; margin:0 auto;" title="attributsCacheRendu002.png, mar. 2009" height="817" width="441" /></p>
<p>Des paramètres... Chouette! :bravo:</p>
<p>Mais sachez tout de même que cette "interfaçage" est une représentation scripté des attributs du node... En effet, chaque node de maya dispose de son script d'Attribute Editor, les AETemplate (Ils sont dans C:\Program Files\Autodesk\Maya2009\scripts\AETemplates pour les curieux) qui régissent ce qui est affiché (ou pas), et de quel façon. Ce que vous voyez n'est donc pas l'intégralité des paramètres du node.</p>
<p>Pour avoir accès à "la total", suivez le guide:</p>
<p><img src="https://www.fevrierdorian.com/blog/public/attributsCache/attributsCacheRendu003.png" alt="attributsCacheRendu003.png" style="display:block; margin:0 auto;" title="attributsCacheRendu003.png, mar. 2009" height="206" width="298" /></p>
<p><img src="https://www.fevrierdorian.com/blog/public/attributsCache/attributsCacheRendu004.png" alt="attributsCacheRendu004.png" style="display:block; margin:0 auto;" title="attributsCacheRendu004.png, mar. 2009" height="400" width="500" /></p>
<p><img src="https://www.fevrierdorian.com/blog/public/attributsCache/attributsCacheRendu005.png" alt="attributsCacheRendu005.png" style="display:block; margin:0 auto;" title="attributsCacheRendu005.png, mar. 2009" height="400" width="500" /></p>
<p><img src="https://www.fevrierdorian.com/blog/public/attributsCache/attributsCacheRendu006.gif" alt="attributsCacheRendu006.gif" style="display:block; margin:0 auto;" title="attributsCacheRendu006.gif, mar. 2009" height="425" width="266" /></p>
<p>Et voila! Vous pouvez maintenant modifier tout les paramètres du node (Une image en "HD" des paramètres est disponible <a href="https://www.fevrierdorian.com/blog/public/attributsCache/attributsCacheRendu007.png">ici</a>! Ça peut être pratique. :hehe: ).</p>
<p>Un autre node bien pratique pour le "debugging" de rendu: "mentalrayGlobals":</p>
<p><img src="https://www.fevrierdorian.com/blog/public/attributsCache/attributsCacheRendu009.png" alt="attributsCacheRendu009.png" style="display:block; margin:0 auto;" title="attributsCacheRendu009.png, mar. 2009" height="59" width="213" /></p>
<p><img src="https://www.fevrierdorian.com/blog/public/attributsCache/attributsCacheRendu010.png" alt="attributsCacheRendu010.png" style="display:block; margin:0 auto;" title="attributsCacheRendu010.png, mar. 2009" height="194" width="337" /></p>
<p><img src="https://www.fevrierdorian.com/blog/public/attributsCache/attributsCacheRendu008.png" alt="attributsCacheRendu008.png" style="display:block; margin:0 auto;" title="attributsCacheRendu008.png, mar. 2009" height="1684" width="249" /></p>
<p>Voila voila...</p>
<p>Encore une fois, il ne s'agit pas du tip qui tue mais il permet de s'affranchir de certaines limites de l'interface imposé par Autodesk. Je ne peut m'empêcher de faire la comparaison avec XSI qui lui, "bloque" l'interface mais est ducoup beaucoup plus rigoureux vis-à-vis de ce genre de problèmes. Je vous propose une petite liste non exhaustive:</p>
<ul>
<li>Le changement "foireux" du Filter Size quand on change de Filter sous Maya 8.5 dû à une tentative (visiblement raté) de mettre en relation la taille du Filter avec la taille des pixels (En considérant par exemple, qu'un filtre Gaussien s'étale sur trois pixel, <a href="http://en.wikipedia.org/wiki/Gaussian_function" hreflang="en">ce qui n'est pas tout à fait exact</a>... C'est sensé être plus compréhensible pour le graphiste et on ne peut pas dire que ça parte d'un mauvais intention... Sauf que ça bug...).</li>
<li>Le fait que "Interpolate Refraction" (mia_x) n'active pas le paramètre "Grid Density" et qu'on soit obligé d'activer "Interpolate ReFLECtion" pour pouvoir modifier la valeur de "Grid Density" est un autre exemple (il faut donc, une fois "Grid Density" réglé, redécocher "Interpolate Reflection", Super! :baffed: ). Et nous somme sous Maya 2009...</li>
</ul>
<p>Autodesk, du fait de la possibilité de passer par des méthodes annexes pour faire les même choses (ici, modifier les attributs), semble s'autoriser une certaine nonchalance sur la qualité de ses AETemplates. C'est pour cette raison qu'il m'arrive d'utiliser cette manipulation pour arriver à mes fins sans m'énerver avec l'interface.</p>
<p>Je partage tout ça en espérant que ça puisse vous servir. N'hésitez pas à laisser un commentaire si vous avez rencontré un problème semblable, je l'ajouterai à la liste.</p>
<p>Bonne suite!</p>
<p>Dorian :marioCours:</p>Tkinter: Vous aussi, faites des GUI en Python... Ouai, mes fesses ouai...urn:md5:530872bfaa7e3f875a1c8a456bce3cac2009-03-13T23:53:00+01:002013-07-26T22:41:38+02:00NarannScript et code32bits64bitsbidouilledossiersfichiersfiledialogfrocelotproductionpythonscripttrackingwxpython<p><img src="https://www.fevrierdorian.com/blog/public/ecureuilFileTrack/ecureuil_002.png" alt="ecureuil_002.png" style="float:left; margin: 0 1em 1em 0;" title="ecureuil_002.png, mar. 2009" height="150" width="150" />Travaillant actuellement sur un projet de <a href="http://fr.wikipedia.org/wiki/Michel_Ocelot" hreflang="fr">Michel Ocelot</a> (les incultes, cliquez sur le lien :bete: ), je fais une interface graphique pour un logiciel de "tracking de fichier". Ça consiste en gros à lister tous les fichiers d'un certain type (ex: ExxPxx_DecA.tif) dans une hiérarchie donnée (par exemple: Z:/Exx/Pxx/Decors) en ne changeant que quelques variables dans le chemin, ce qui permet d'avoir rapidement un aperçu de "qu'est-ce qu'il manque", de l'âge des fichiers, de savoir qui est plus récent que qui, etc... Super pratique donc! Mais je ne vais pas m'attarder sur le sujet trop longtemps (J'y reviendrai peut-être un jour si je fais une version "publique" et si ça intéresse quelqu'un...). Je voudrais vous parler de Python 3.0 et des problèmes que j'ai rencontrés (et que je rencontre encore à l'heure actuelle) concernant l'utilisation de tkinter. Problèmes qui se révèlent être un des cotés sombres de Python et des modules indépendants qui l'entourent.</p> <h5>Explications <a name="Explications"></a></h5>
<p>Comme je l'ai dit avant, <a href="https://www.fevrierdorian.com/blog/index.php?post/2008/12/23/Pyhton-dans-Maya...-Ou-l-inverse..." hreflang="fr">Python "cay bien"</a>, le seul problème ici c'est que j'ai fait le choix d'utiliser la version 3.0 qui n'est pas rétrocompatible... Cela dit, je m'en foutais dans la mesure où après avoir évalué mes besoins, je ne comptais utiliser que la ligne de commande (et je n'avais besoin que des librairies standards) :hehe: .</p>
<p>Bon, le projet commence, mes scripts marchent à merveille:</p>
<ul>
<li>Renommage des fichiers exportés par Final<del>caca</del>cut (Qu'on ne vienne pas me dire que Mac en prod ça déchire, j'ai un surplus d'arguments allant dans le sens inverse à gérer...)</li>
<li>Cherchage d'erreurs dans les nomenclatures des fichiers: "Pourquoi c'est là ça?", "Il manque un tiret à ton nom de fichier", etc...</li>
<li>Comparaison des fichiers et update par exécution de programme en ligne de commande automatiquement: "Fichier .tiff plus récent que fichier .map, conversion...", "Fichier .map absent mais fichier .tiff présent, conversion...", etc...</li>
<li>Frame "checkage": "Image E01P001_color.tiff de 0 octet", "Image E01P001_color.tiff de 128 octet -> Erreur mental ray probable", etc...</li>
</ul>
<p>Bref, que du bonheur... :youplaBoum:</p>
<h5>Toujours plus! <a name="Toujours_plus"></a></h5>
<p>Mais voila, au fur et à mesure de mon avancement, je me suis fait une lib de petites fonctions bien pratiques et j'ai voulu commencer à faire une petite interface graphique pour tout ça... En toute logique, je commence avec tkinter (une lib graphique vieille comme pas permis mais intégrée en standard à Python 3.0, je la trouve bien moins puissante que le mel, même pour des choses "simples"). Pour ce que je voulais faire (au début), c'était largement suffisant. Quelques colonnes et puis c'était bon...</p>
<p><img src="https://www.fevrierdorian.com/blog/public/ecureuilFileTrack/ecureuil_001.png" alt="ecureuil_001.png" style="display:block; margin:0 auto;" title="ecureuil_001.png, mar. 2009" height="372" width="628" /></p>
<p>Mais comme tout bon (ou mauvais) projet, on se met à vouloir (et devoir) faire évoluer son outil et les besoins en terme de "possibilités" grandissent... Bon, mon interface étant très simple, et voyant le truc venir, je commence à me tourner vers d'autres tool kits graphiques. Et là, je me prends un mur dans les dents (c'est l'effet Python 3.0), à savoir, tous les portages des librairies graphiques les plus connus sont actuellement sous Python 2.x. En effet, Python 3.0 n'était pas rétroactive, la plupart des projets sont frileux à l'idée de passer à la nouvelle version. J'ai trouvé <a href="http://lists.wxwidgets.org/pipermail/wxpython-users/2008-July/078115.html" hreflang="fr">un post</a> d'une personne qui semble être impliquée dans un projet (wxPython, on y reviendra) disant que le portage n'est pas prévu....</p>
<blockquote><p>- "Hi,
I was wondering if there are already any plans when or how wxPython
will support/start moving to python 3? Are there a lot of issues
involved with porting wxPython framework? (I don't mean user
programs.) I know it is still a bit early but as it is coming closer
maybe there is a roadmap already."</p>
<p>
- "Nothing solid yet. I've got a general idea of things that will likely
need to be done, but haven't yet confirmed any of it or done any real
investigations."</p></blockquote>
<p>Qu'a cela ne tienne, mes scripts étant relativement simples, je vire la version 3.0, installe la version 2.6.1 et corrige mes script pour les rendre compatibles: 15 minutes... Aux vues de l'investissement que ça représentait, je n'étais, à priori pas perdant au change dans la mesure où j'allais me retrouver avec une "vraie" lib graphique qui n'allait pas me limiter (comme le fait tkinter).</p>
<p>Après un aperçu rapide des <a href="http://python.developpez.com/outils/Librairies/?page=IHM" hreflang="fr">libs graphiques existantes</a> je remarque une certaine sympathie des utilisateurs pour la librairie <a href="http://www.wxpython.org/" hreflang="fr">wxPython</a>. En ayant déjà entendu parlé, je décide de m'y tenter.</p>
<h5>"Quand les emmerdes arrivent c'est moi qui interviens..." <a name="Quand_les_emmerdes_arrivent"></a></h5>
<p>J'installe tout ça (avec la "doc et démos" qui est extrêmement bien faite, et je pèse mes mots) et commence à lancer une fenêtre, tout marche bien mais dès que je place mon curseur sur la dite fenêtre, python plante (avec envois de rapport d'erreur et tout...). Je continue, utilise différents exemples... Défois ça marche, défois pas (ça fait très débordement de mémoire)... Je cherche sur le forum et je trouve un type <a href="http://www.developpez.net/forums/d697375/autres-langages/python-zope/gui/wxpython/pb-vista-p-python-2-6-p-wxpython/" hreflang="fr">dans le même cas que moi</a>, un système 64bits. Il renvoi à <a href="http://trac.wxwidgets.org/ticket/10082" hreflang="en">un rapport de bug</a>. Le problème est donc connu mais non résolu. C'est spécifique aux systèmes 64bits...</p>
<blockquote><p>"Same problem here with wxPython2.8-win32-unicode-2.8.9.1-py26 under Vista Ultimate x64. Simple applications crash as soon as one moves the mouse onto their window. More complicated applications seem to work fine. Even the demo crashes if you move the mouse onto the splashscreen. If you leave the mouse outside the spashscreen and let it disappear, the demo seams to run fine."</p></blockquote>
<p>Naïvement, je désinstalle mon wxPyhon et mon Python, tous deux en 64bits, puis réinstalle le tout en 32bits... Même problème. :mechantCrash:</p>
<p>Je commence à réfléchir aux alternatives et n'en voit qu'une seule: Passer à Python 2.5...</p>
<p>(Edit: Une personne <a href="http://morison.biz/technotes/articles/55" hreflang="en">semble avoir trouvé une solution</a> mais c'est pas ce qu'il y a de plus propre disons...)</p>
<p>Bon, là ça commence à me gonfler un peu. Après une longue réflexion, je décide de rester sous Python 3.0 avec tkinter. Pourquoi? J'en sais trop rien en fait... Ça me fait bizarre de repasser sous une ancienne version de Python. Mais surtout, j'ai pris conscience de quelque chose: le support est assuré uniquement sur les librairies standard... En gros, tous les portages ne sont pas assurés dans le temps (j'en veux pour preuve la grande quantité de lib python qui ne sont plus maintenus) ce qui fait que si on veut être sûr d'avoir quelques chose qui dure dans le temps, il faut rester sur les librairies standards.</p>
<h5>tkinter! <a name="tkinter"></a></h5>
<p>C'est ici que commence le billet en fait. Tout le début était une intro. :sauteJoie:</p>
<p>Je continue donc ma petite interface sous tkinter. Sauf que voila, la documentation est désastreuse...</p>
<p>Pour résumer, disons que:</p>
<ul>
<li>Il n'y a pas de "vrai doc ultime"</li>
<li>Elle est éparpillée sur le net</li>
<li>Les exemples datent et ne sont plus adaptés à Python 3.0 (L'effet Python 3.0 que je citais plus haut)</li>
</ul>
<p>On s'amuse donc comme un petit fou à tenter tout et n'importe quoi pour réussir certaines manipulations, à trouver une bride d'infos qu'on retranscrit comme on peut (j'ai du aller regarder directement dans les libs py pour savoir comment faire certaines choses :baffed: ). Allez trouvez un moyen de lancer une FileDialog sous Python 3.0, le truc de base à faire. J'ai cru qu'au final j'allais devoir me rescripter une FileDialog. Soit je suis nul, soit ça prouve que c'est un peu la misère, (non pas à faire, mais ça se devine pas... Et sans doc, on est comme un imbécile). Au final, on trouve mais en mettant en relation différentes documentations. Pour mon exemple:</p>
<ul>
<li>"FileDialog" est un sous module de tkinter (Doc1)</li>
<li>Il faut l'appeler avec "asksaveasfilename" (Doc2) (Ne me dites pas que ça se devine...)</li>
<li>L'attribut pour lui mettre un path par défaut est "initialdir" (Doc3)</li>
</ul>
<p>Super! Maintenant (après plus d'une heure), j'ai une FileDialog. :casseTeteMur:</p>
<p>La raison pour laquelle j'ai créé ce billet est la suivante: J'ai tellement galèré pour trouver des morceaux de documentation que je vous propose de les lister ci-dessous (Tout est en vrac mais au moins, vous en avez déjà pas mal).</p>
<ul>
<li><a href="http://fr.wikibooks.org/wiki/Programmation_Python/Tkinter" hreflang="fr">http://fr.wikibooks.org/wiki/Programmation_Python/Tkinter</a></li>
<li><a href="http://infohost.nmt.edu/tcc/help/pubs/tkinter/" hreflang="en">http://infohost.nmt.edu/tcc/help/pubs/tkinter/</a></li>
<li><a href="http://www-acc.kek.jp/WWW-ACC-exp/KEKB/control/Activity/Python/TkIntro/introduction/index.htm" hreflang="en">http://www-acc.kek.jp/WWW-ACC-exp/KEKB/control/Activity/Python/TkIntro/introduction/index.htm</a></li>
<li><a href="http://effbot.org/tkinterbook/" hreflang="en">http://effbot.org/tkinterbook/</a></li>
<li><a href="http://www.pythonware.com/library/tkinter/introduction/" hreflang="en">http://www.pythonware.com/library/tkinter/introduction/</a></li>
<li><a href="http://python.developpez.com/faq/?page=Tkinter" hreflang="fr">http://python.developpez.com/faq/?page=Tkinter</a></li>
<li><a href="http://python.developpez.com/cours/TutoSwinnen/" hreflang="fr">http://python.developpez.com/cours/TutoSwinnen/</a> (Chapitre 8, 13 et 15 mais beaucoup de "dessin")</li>
<li><a href="http://sebsauvage.net/python/gui/index_fr.html" hreflang="fr">http://sebsauvage.net/python/gui/index_fr.html</a></li>
<li><a href="http://python.developpez.com/sources/?page=Tkinter" hreflang="en">http://python.developpez.com/sources/?page=Tkinter</a></li>
<li><a href="http://www.java2s.com/Code/Python/GUI-Tk/CatalogGUI-Tk.htm" hreflang="en">http://www.java2s.com/Code/Python/GUI-Tk/CatalogGUI-Tk.htm</a></li>
<li><a href="http://www.tcl.tk/man/tcl8.5/TkCmd/contents.htm" hreflang="en">http://www.tcl.tk/man/tcl8.5/TkCmd/contents.htm</a></li>
<li><a href="http://www.manning.com/grayson/" hreflang="en">http://www.manning.com/grayson/</a> (Livre que je vais peut-être m'acheter en PDF)</li>
</ul>