Blender (jusqu'à 2.49)
Python 
Daniel Dunbar's Subsurf.dll
(et tHe IceMan's SubsurfGUI.py).

note: 
les subsurfs sont intégrées dans Blender depuis la version 2.14 
pour remplacer les S-Meshes
cette page n'a de valeur qu'à titre d'information et d'archive.

    Début   Index
précédentScript Python: Tessalate...
Script Python: Renommer... Suivant

Une des particularités du python c'est de pouvoir être compilé en bibliothèques séparées que l'on peut ensuite utiliser comme n'importe quelle bibliothèque dynamique avec l'avantage, non négligeable, d'une accélération considérable de l'éxécution du code puisqu'il n'y a plus d'interprétion ligne après ligne. Autre avantage: le code n'est plus lisible. Il est alors possible de distribuer ses bibliothèques sans risque de voir piller les algorithmes originaux que l'on aurait pu créer pour l'occasion. Ces bibliothèques doivent se trouver dans le même répertoire que le logiciel appelant. Elles ont le format .PYC.

Une alternative consiste à créer en langage C des modules qui augmentent les capacités du python original. C'est le cas de la DLL Subsurf que l'on doit à Daniel Dunbar.

Le principe de la subdivision de surface est assez proche des S-mesh de Blender. On ne s'attache pas ici à expliquer ce qui se passe au niveau mathématique dans l'opération de division, et si une information supplémentaire est nécessaire on pourra la trouver dans :

 CATMULL, E., AND CLARK, J. Recursively generated B-spline surfaces on arbitrary topological
meshes. Computer-Aided Design 10 (Sept. 1978), 350–355.

La différence: le résultat est un nouveau mesh constitué de facettes dont les sommets sont calculés par rapport à la forme de contrôle originale. Et surtout,  la forme est beaucoup plus douce parce que la répartition des points est adaptée à l'angle que forment les faces entre elles.
Tout cela est assez complexe et l'objectif  de ce tutorial est surtout d'aider les utilisateurs qui n'auraient pas de compétence particulière en programmation.

L'archive de subsurf.dll contient un fichier d'exemple: demo.blend.
En l'ouvrant on constate qu'il y a une forme précalculée sur la gauche de l'écran :

et un script python sur la droite:

En fait, dans le script python, ces deux seules lignes ont de l'importance. En premier lieu, parce que c'est grâce à elles que l'on définit le nom du mesh qui doit être utilisé comme forme de contrôle qui est, d'ailleurs, tout simplement appelé: "Control" (attention, rappel,  le python fait la différence entre les casses, donc "control" n'est pas "Control").

On remarquera que c'est surtout le nom du mesh qui est important, le nom de l'objet est assez secondaire. Une analyse du code permet de voir qu'un seul objet peut être sélectionné à la fois et qu'il y a évacuation de tous les autres objets, on ne garde que le premier de la liste.

On note que le dictionnaire "data_dict" passe deux valeurs: "flip" et "levels" qui sont rangés à l'article "name" qui contient la valeur "Control". L'ordre de passage correspond à l'ordre de rangement, donc "flip" est le premier et "levels" le second. Rien ne vaut la méthode expérimentale: que se passe-t'il si on change la valeur de "flip":

Il faut réactualiser le script par ALT-p et la symétrie disparait:

Seule la valeur 0 change  quelque chose sur le choix "flip". Par contre on peut augmenter autant qu'on le veut la valeur "levels". Un test avec 2,

toujours en réactualisant l'exécution du script par ALT-p, permet de voir que le division est beaucoup plus fine:



Dernière remarque: toute modification du mesh de contrôle entraine une modifiction du mesh divisé.

Détail important: les matériaux du modèle de contrôle sont passés au modèle divisé. Mais, dans la mesure où il y a plus de facettes, les textures plaquées perdrent leur positionnement.

En ce qui concerne l'interface graphique proposée par The IceMan, il faut fournir un nom correct au bouton "Control Mesh:"

.Dans le fichier exemple qui accompagne le script il ne faut surtout pas se tromper dans la casse des lettres.

Par contre, le fichier n'est plus lié à la frame courante comme dans l'exemple de Daniel Dunbar. Après avoir indiqué le nom, il faudra cliquer "Draw" pour obtenir l'actualisation de la forme.

Le script marche parfaitement avec blender 1.8x, mais pose quelques difficultés avec GameBlender 2.0x, surtout à cause des boutons "toggle" qui ne restent pas enclanchés. La parade : appuyer sur le bouton et glisser vers l'extérieur sans relâcher la pression.
 
précédentScript Python
 Script Python: Renommer... Suivant
Vers le  Haut de page

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


 

 

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