Blender (jusqu'à 2.49)
Python et EnvMap (1/4) 
Description: lier un script pour déterminer automatiquement
la position relative de la caméra à un plan:
les bases.
 
    Début   Index
précédentPython:trucs et astuces 2
Script Python/EnvMap (2/4) Suivant

  La présence d'un miroir dans une scène, peut rendre pénible la vie du réalisateur. En effet, chaque fois que ce dernier bouge la caméra ou déplace le plan du miroir,  il doit reconstruire le point de contrôle de la texture EnvMap sur lequel sont calculées les différentes prises de vues qui constituent l'image utilisée pour rendre l'effet.

  Cette reconstruction n'est pas spécialement difficile si on utilise un plan parallèle au plan du trièdre, cela devient rébarbatif lorsque ce plan est orienté suivant trois angles quelquonques (voir la méthode proposée dans ces pages).

  Ne serait-il pas merveilleux que Blender réajuste cette texture automatiquement en fonction des modifications de positionnement et d'orientations des objets qui posent les contraintes de l'emplacement de l'objet de contrôle. Hélas cela ne lui est  pas encore possible, mais on peut écrire un script python qui le fera à sa place.

L'objectif de cette partie du  tutoriel est de présenter le script et comment s'en servir. Il n'est pas nécessaire d'avoir des compétences mathématiques pour le mettre en oeuvre, Mais bien comprendre comment fonctionne l'effet de miroir sur ce type de texture est un prérequis indispensable. Les points suivants seront aussi abordés:
-- quels objets doivent figurer dans la scène et quelles modifications doivent être apportées au script  pour pouvoir le réutiliser dans une modélisation personnelle.
-- lier le script à deux objets, pour obtenir le repositionnement automatique de l'empty sur lequel est calculé l'effet de réflexion, si on bouge ou
la caméra ou le plan.
-- Limites d'animation


Le script
Deux scripts sont actuellement disponibles: un pour les versions de Blender inférieures à la version 2.04, et un autre pour la version 2.12.
Charger les fichiers :

         EnvMap_O_Matic2_12, pour l'API python Blender 2.12
         EnvMap_O_Matic1_80, pour l'API python Blender 1.80 compatible avec les versions 2.14 et ultérieures jusqu'à la version 2.27.
         EnvMap_O_Matic2.28, pour l'API python Blender  2.28

Les explications qui suivent prennent la version 1.80a en exemple car c'est la version la plus sûre et celle qui réserve le moins de surprises quand aux résultats non désirés. En effet la verison 2.12 fonctionne mais ajoute des sommets supplémentaires dans le mesh Plan. Experience à tenter pour comprendre le problème: édition du plan touche TAB, sélection de tous les sommets avec la touche a et leur déplacement avec la touche g. Ce qui, à la longue, peut être génant voire dangeureux, pour la stabilité du logiciel.

Les objets nécessaires
Le script est autonome et fonctionne sans aucune importation supplémentaire, même pas le module math. Si l'on désire l'adapter à une réalisation personnelle il suffit de changer les noms entre guillemets des trois objets principaux qui sont:
 
...
PlaneObname='Mirror'
EmptyObCibleName='Mirror_Prime'
CameraName='Camera.001'
..

Le 'Mirror' est simplement le plan sur lequel tout doit se refléter.
La 'Caméra.001' est  la caméra courante.
Le 'Mirror_Prime' est l'objet qui se trouve dans le bouton Ob: la déclaration de texture:


Lier le script à deux objets

Pour que le script soit éxecuté à chaque modification apportée aux objets qui nous interessent, il faut le lier à ces objets. Pour cela on commence par enfoncer le bouton de liaison de script, tout simplement nommé Script Buttons. Dans l'image ci-dessous, c'est celui qui se trouve à gauche. Normalement cela devrait faire apparaître une fenêtre divisée en deux parties. Dans celle de droite se trouve deux nouveaux boutons: [0Scr:0]  et [New]. Mais ces boutons, dans le cas présent, ne sont d'aucune utilité. En fait ils gèrent la liaison avec la scène entière. Il faut faire apparaître ceux qui se trouvent dans la partie gauche. Pour cela on enfonce le bouton Display Object Script Link. Dans l'image ci-dessous, c'est celui qui est marqué par les trois flèches noires.

Ensuite on selectionne l'objet avec la méthode habituelle: clicsouris-droit, on appuie sur le bouton [New].

Cela fera apparaître deux nouveaux boutons : un bouton de sélection qui permettra de choisr entre FrameChanged et Redraw, le premier est plutôt interessant pour l'animation, le second pour une mise en place interactive puisque le script sera exécuté chaque fois que les fenêtres d'affichage seront repeintes,  et un bouton de texte où il faudra inscrire très exactement exactement le nom du script python associé qui se trouve dans la fenêtre de script.

Conclusion

Il ne reste plus qu'à trouver un angle de prise de vue interessant pour que le reflet soit visible dans votre scene. 
 
 
précédentPython:trucs et astuces 2
 Script Python/EnvMap (2/4) Suivant
Vers le  Haut de page

Les questions concernant cette page  peuvent être posées sur  :
 news://news.zoo-logique.org/3D.Blender


**(si quelqu'un veut tenter l'expérience sous d'autres systèmes, je me ferai un plaisir de faire un complément d'information ici-même)
 
 

 

Livre en français
Blender : apprenez, pratiquez, Créez, livre, Ed. Campus Press, coll. Starter Kit
Blender Starter Kit

Forum
FAQ
Lexique
Didacticiels
Compilations
Blender2KT
Débuter
Modelage
Blender python
Materiaux
Lumière
Animation
API python (eng)
Archives nzn
Statistiques
Doc flash Sculptris
Galerie Sculptris

mon site de démos sur youtube