jeudi 1 septembre 2011

Définition d'un MatCap et utilisation dans Blender

Les Matcap, si mes renseignements sont exacts, sont une invention propriétaire de la société Pixologic pour leur logiciel phare ZBrush. La définition que je leur donne est la suivante : il s'agit d'une sorte d'échantillon de matière représentée simplement par une sphère "aplatie" en deux dimensions (MatCap est l'abréviation des mots anglais "Matiere Capture").

L'argument publicitaire des matcap est qu'ils ne nécessitent aucun paramétrage compliqué (pas de réglage simultané de nombreux paramètres à ajuster pendant des heures) ni aucun réglage de lumière. Tout est contenu dans l'échantillon sphérique, constituant le matcap.

Si vous allez sur le site de Pixologic pour ZBrush, vous trouverez facilement l'endroit où l'on peut voir des tonnes de matcap à l’œuvre. Voici un exemple, pris sur leur site, montrant 9 matcap :



Vous pouvez voir, par exemple, des allures métalliques sur ces quelques échantillons sphériques. Les MatCap sont donc appliqués par ZBrush d'une façon simplissime. Suivant l'orientation d'une facette du mesh auquel est appliqué le MatCap, ZBrush ponctionne les couleurs sur la sphère MatCap en fonction de l'orientation normale de la surface à colorer. En gros, si je le dis autrement, les faces pointant vers le haut recevront les couleurs du haut de la sphère plate, les facettes orientées à 270° recevront les couleurs de la sphère placées à 270°, et ainsi de suite pour toutes les valeurs de 0 à 360°.

Le schéma ci-dessous, à l'aide d'un MatCap un peu spécial (c-à-d sans aucun relief mais avec des zones aux couleurs bien définies), vous montre cela bien mieux qu'avec des mots. Les faces du mesh Monkey qui sont orientées vers vous seront en jaune, les faces orientées vers le haut et l'arrière seront en rouge, et ainsi de suite... Avez-vous compris le principe ? Oui, j'en suis sûr. Par exemple, la tempe du Monkey vu de côté, qui est ce qu'il y a de plus perpendiculaire à vous, est bien colorée en jaune, effectivement.


Les matcap sont surtout utiles dans le domaine de la sculpture 3D (la sculpture étant une des fonctions principales de ZBrush). Ils permettent d'apprécier rapidement les formes de l'objet qu'on est en train de sculpter dans son logiciel favori. L'utilisation d'un MatCap rajoute donc en quelque sorte une couche supplémentaire d'appréciation du volume spatial de votre sculpture.

Et dans Blender alors ?

Savez-vous qu'il est possible de simuler l'application d'un MatCap dans Blender ? Rien de plus facile. Allons-y !

Comme nous ne sommes pas des voleurs de "textures propriétaires", nous allons tout simplement en créer une avec le magnifique logiciel vectoriel gratuit : INKSCAPE. Ce site n'étant pas consacré à Inkscape, je vais juste me contenter de dire le minimum. Vous créez un document carré de 1000px sur 1000px. Vous tracez un cercle parfait et vous le centrez sur le document. Vous appliquez le dégradé de votre choix et vous obtenez un truc semblable à ceci :




Vous voyez que j'ai pris la peine de mettre la couleur claire plutôt vers le haut et la couleur foncée, plutôt vers le bas. Maintenant, j'exporte mon image carrée au format PNG qui permet de gérer la transparence des coins de l'image, et vous obtenez le fichier PNG suivant, que vous pouvez utiliser (tel que je vous le fournis) pour la suite de ce didacticiel :

Cliquez sur l'image pour voir la MatCap en grand


Comment appliquer maintenant cet échantillon de couleur sphérique à un mesh se trouvant dans notre scène Blender ? C'est très simple, et surtout : c'est faisable car Blender est vraiment muni de toutes les options possibles et imaginables pour pouvoir paramétrer toute sorte de texture et de matériau, suivant ce que l'on désire.

Supprimez le cube par défaut, ajoutez sur votre scène un mesh de Monkey, tournez-le de 90° sur l'axe des X pour remettre son visage droit, ajoutez un modifier SubSurf et lissez suffisamment en portant View à 2. Puis dans le panneau Tools à gauche, cliquez sur Shading "SMOOTH" pour terminer la préparation du mesh initial.

On ajoute ensuite un nouveau "material", et



on coche l'option Shading "Shadeless". Pourquoi donc faire cela ? On enlève en général l'affichage des ombres simplement parce qu'elles nuisent un peu à la bonne appréciation du MatCap appliqué sur l'objet, mais ce n'est pas une chose à faire obligatoirement.

Ensuite, on va dans la section texture pour y régler rapidement quelques trucs. On crée d'abord une toute nouvelle texture, on choisit le type de texture comme "Image or Movie". Puis, avec Image Open, on va chercher le fichier PNG (celui que j'ai donné ci-dessus et que vous avez sauvé sur votre disque dur).

Et surtout, on n'oublie pas de mettre le MAPPING Coordinates sur Normal :



Et voilà. En chipotant un peu avec l'Ambiant Occlusion et l'Environment lighting, vous obtenez rapidement un rendu similaire à ceci :



Sympa, non, le rendu issu de notre petite manipulation ?

Mais est-ce vraiment utile puisqu'on ne sculpte pas durant le rendu ?

En effet, puisque l'intérêt des MatCap est de disposer d'une meilleure appréciation du volume de l'objet durant sa sculpture, ce serait bien si on pouvait sculpter tout en profitant directement de la vue "colorée" fournie par le MatCap.

Et bien oui, c'est aussi possible sous Blender, grâce au mode GLSL. Il s'agit d'un mode de travail qui permet de voir immédiatement l'application des textures, en temps réel, dans la vue 3D de modélisation. GLSL signifie OpenGL Shading Language, et autant vous le dire tout de suite : il vous faut une carte graphique plutôt puissante pour supporter ce mode d'affichage.

Comment faire pour voir, dans Blender, l'objet à sculpter en mode GLSL ?

Dans le panneau des propriétés (touche n), vous allez dans la section display, et vous repérez la section Shading, et au lieu de Multitexture, vous choisissez l'option GLSL :



Mais ce n'est pas tout : il faut aussi spécifier que le Viewport Shading doit être en mode Textured :


Maintenant, si vous voulez ressentir le bénéfice de l'affichage de l'objet avec un MatCap, essayons de sculpter un peu : enlevez le modifier subsurf du Monkey (que je vous ai fait mettre au début de ce didacticiel) et mettez lui maintenant un modifier Multiresolution, puis cliquez sur Subdivide 2 ou 3 fois :


Ensuite, mettez-vous en mode Sculpt :


Et ressentez enfin les sensations de la sculpture au visuel amélioré ! Ce didacticiel n'étant pas centré sur les bonnes pratiques de l'art de sculpter, je n'entrerais pas dans les détails ici pour savoir comment bien tailler les pixels, mais ceux qui ont déjà pris connaissance avec les bases de la sculpture en 3D apprécieront sans aucun doute la vision des MatCap en temps réel.

Voici pour finir un screenshot de la vue 3D, avec le Monkey Suzanne, à qui j'ai mis quelques bosses sur la tête, pour mieux apprécier la gestion du volume (pardonne-moi, Suzanne !).


Une dernière précision :

Concernant l'utilisation du matcap, c-à-d l'image carrée avec la sphère au centre, dans Blender, il n'est pas nécessaire que la zone du carré en dehors de la sphère soit en transparence alpha. Blender ne va chercher ses infos de couleur que dans la zone sphérique. Donc, par exemple, cette image de matcap cuivrée ci-dessous (trouvée à plusieurs endroits du net et dont je ne sais pas qui en est l'auteur ?), les coins sont représentés par des pixels noirs :


Cela n'empêche nullement Blender de récupérer les infos de couleur seulement dans la sphère, pour appliquer les couleurs du matcap au mesh, comme vous le montre très bien le screenshot ci-dessous, où l'on peut voir qu'on a bien l'impression de sculpter une forme 3D en cuivre :



Bonnes sculptures à tous, et à la prochaine !

Calogero GIGANTE

Control+zéro au lieu de zéro

Voici un petit article pour mettre en garde contre une mauvaise manipulation qui m'a bien embêté en tant que débutant, car je n'arrivais pas à en sortir une fois que je l'avais exécutée par mégarde. Si cela a pu me déranger comme débutant, je me dis qu'il y en a d'autres à qui ça doit arriver, alors, je passe l'information.

Partons de la scène par défaut, quand nous ouvrons Blender :



Le cube est sélectionné, et si nous tapons la touche 0 du clavier numérique, nous passons immédiatement en vue caméra :



C-à-d que la caméra principale est utilisée pour positionner la vue telle que cette caméra la voit. Appuyez de nouveau sur la touche 0 pour revenir à la vue initiale. Jusque là, tout est normal.

Maintenant, dénonçons la mauvaise manipulation : si, avec le cube sélectionné, on tape Control+0 au lieu de 0, voici ce qu'il se passe :

Cliquez sur l'image pour l'agrandir


On dirait que l'on rentre DANS le cube ??? Et on remarque qu'il est écrit Object as Camera en haut à gauche de l'écran. Si maintenant vous tentez un rendu avec F12, vous ne voyez rien, tout est noir... De plus, la scène générale semble moins bien manipulable et on sent bien qu'un paramètre a changé, puisque la caméra initiale a même changé de look et affiche un triangle vide au lieu d'un triangle noir :



Qu'est-ce qu'il s'est passé et comment faire pour revenir à la normale ?

L'explication est simple : en appuyant Control+0 alors qu'un objet (autre que la caméra initiale) était sélectionné, vous avez ordonné à Blender de rendre l'objet sélectionné similaire à une caméra. Pour revenir à la normale, il vous suffit de sélectionner la caméra initiale (étape importante) et d'appuyer de nouveau sur Control+0 pour redonner à la caméra intiale son statut de caméra principale.

Voilà, c'est tout. Un petit détail à savoir pour éviter de s'arracher trop les cheveux si on est un débutant.

Bonsoir.

vendredi 26 août 2011

Transformations aléatoires d'un array d'objets préalablement séparés

Bonsoir.

Si je veux disposer aléatoirement les clones d'un même objet dans ma scène, je fais comment ?

En regardant sur divers forums, divers sites (notamment le blog de Blender Sushi) et en consultant quelques vidéos, je crois avoir compris comment on doit s'y prendre, et je me propose de résumer cette méthode (conseillée un peu partout) ci-dessous pour ne pas l'oublier. C'est parti !

D'une scène neuve avec mon cube central (control+n), j'applique un Array Modifier à mon cube en mode OBJECT :

Cliquez sur l'image pour l'agrandir


On va faire pour l'exemple un Array de 6 cubes, avec un écart suivant les X de 1.1.

A ce stade, nous sommes en face d'un seul et même objet, car lorsque nous déplaçons le cube originel, tous les autres cubes le suivent. Maintenant, cliquons sur Apply pour appliquer l'Array Modifier : que constatons-nous ? C'est toujours le même et unique objet, toujours nommé "cube" dans le Outliner (cadre en haut à droite).

Pour séparer chaque duplication de l'objet "cube" originel, il faut se mettre en mode EDIT, tout sélectionner avec A, et faire ensuite P, en choisissant l'option By loose parts :


Alors, par miracle, on arrive à une situation où chaque objet est séparé, avec son propre nom (voir dans le Outliner), et Blender se retrouve avec un seul cube sélectionné sur les 6 cubes au total, comme vous pouvez le voir ci-dessous :


La commande a donc bien marché, tout est bien séparé comme on le désirait.

Néanmoins, si maintenant nous revenons en mode OBJECT, nous constatons que l'origine de chaque cube séparé est restée à la même place que l'origine du cube initial utilisé pour dupliquer via le Array. Nous ne pouvons pas rester ainsi, car si nous voulons faire des transformations aléatoires, il vaut mieux que chaque cube ait son point de position au même endroit que son centre géométrique.

Pour changer d'un seul coup toutes les origines géométriques de nos cubes, faisons ceci : en mode OBJECT, nous sélectionnons tous les cubes ensemble (avec SHIFT enfoncé), puis nous faisons la combinaison de touches suivante : Control+Shift+Alt+C et nous sélectionnons le choix Origin to geometry :


Ce qui nous mène enfin à ceci :


Maintenant, quand on sélectionne un des cubes séparément, on voit bien que son point d'ancrage correspond bien à son centre géométrique. Ouf !

Transformation aléatoire :

Maintenant, pour disposer aléatoirement les 6 cubes, il n'y a rien de plus simple. Vous re-sélectionnez l'ensemble des 6 cubes (avec SHIFT enfoncé), et vous activez le menu Randomize Transform :


Il apparait alors un menu spécial sur le panneau Tools à gauche, qui vous permet de jouer avec les paramètres de la Randomisation. Ils sont assez intuitifs, on peut faire pas mal de choses avec ça :


Faisons un essai de positionnement aléatoire. Si dans la section location, nous mettons par exemple Y:5.00, que constatons-nous ? Que Blender va chercher une position aléatoire sur l'axe des Y qui s'étend de -5.00 à 5.00. Voici un screenshot du dessus (en ortho) qui montre cela :


Ci-dessous, un exemple avec 1000 cubes, placés initialement avec 3 Array (un vers les X, un vers les Y et un vers les Z). Imaginez le travail que cela vous aurait demandé de faire ce genre de positionnement aléatoire à la main ! Voilà pour aujourd'hui, à la prochaine, cher lecteur.

Cliquez sur l'image pour la voir en grand

mercredi 24 août 2011

Découverte de l'outil Crease agissant sur la subsurf.

J'ai découvert un nouvel outil super intéressant, l'outil Crease, et pour mon propre souvenir, je fais un rapide didacticiel ici pour ne pas oublier comment on s'en sert à l'avenir. Partons d'un simple cube, éditons-le avec quelques extrusions pour obtenir une forme qui ressemble à quelque chose comme ceci :

Ensuite, ajoutons un modifier de "subsurf" et portons le niveau de détail à view:3 et render:3. On peut se permettre ici d'aller aussi haut car nous faisons un simple test, qui ne sera pas long à calculer lors du rendu. Vous obtenez alors une forme de ce genre :


En mode OBJECT, mettez le shading à SMOOTH dans le panneau tools et si l'on fait un rendu rapide, on obtient ceci :


Maintenant, toujours en mode EDIT, avec ALT+Clic droit, sélectionnez un edge-loop complet :


Maintenant, si vous faites SHIFT+E, le segment se colore de plus en plus en rose, au fur et à mesure que vous vous éloignez de la sélection, et vous voyez la subsurf qui se rapproche de plus en plus  du segment sélectionné. En bas à gauche de la vue 3D, on peut voir qu'on peut faire varier le paramètre de Crease de 0.000 à 1.000. Quand vous êtes content de la valeur désirée, cliquez sur la vue 3D pour terminer l'utilisation de l'outil Crease.


Vous remarquez alors que votre subsurf marque maintenant une saillie sur la surface, simplement parce qu'elle s'est rapprochée beaucoup plus du segment de vertex qui la définit partiellement.


Voilà ce que ça donne au final :


En espérant que ces petites notes mnémotechniques personnelles vous auront appris aussi quelque chose.

Bonne soirée.

mardi 23 août 2011

RAZ d'un scale après le changement de dimensions d'un objet

Salut les internautes.

Ce soir, je vous propose d'explorer quelque chose que j'ai appris en visionnant la vidéo de modélisation d'un bâtiment que l'on peut trouver sur le site de BlenderCookie.

Partons du cube de base. S'il n'est pas déjà au centre de votre scène, ajoutez-en un avec SHIFT+A. Ensuite, tapez sur la touche n pour faire apparaître le panneau latéral qui donne les informations sur les propriétés d'un objet sélectionné.


Remarquez que les données de scale sont toutes à 1.0 lors de la mise en place de ce nouveau cube. Maintenant, toujours sur le panneau latéral, encodez les nouvelles données suivantes concernant les dimensions de ce cube : la dimension X devient 8, la dimension Y devient 4 et la dimension Z devient 3.


Que remarquez-vous ? Que les données du scale sont passées automatiquement pour X de 1 à 4, pour Y de 1 à 2 et pour Z de 1 à 1.5.

Jonathan Williamson explique que ce n'est pas une bonne chose de laisser cela ainsi. Surtout si les nouvelles dimensions de l'objet sont censées être les dimensions définitives, il vaut mieux s'arranger pour retrouver un rapport de scale de X:1, Y:1 et Z:1. Comment fait-on cela ? Il faut taper CONTROL+A et choisir l'option Apply Scale.


On retrouve ainsi un rapport unitaire 1:1:1 pour le scale tout en ayant intégré les nouvelles dimensions :


Pourquoi vaut-il mieux faire cette petite manipulation ?

Jonathan Williamson explique que si on ne fait pas cet ajustement, il y a un risque que les futurs modifiers (mirror, array, curve,...), que l'on appliquera plus tard à l'objet cube, n'auront pas un comportement tel qu'attendu.

En fait, je crois avoir compris maintenant que les modifications basiques de type location, rotation et scale sont en réalité comme des modifiers, qui nécessitent d'être appliqué pour réellement transformer les coordonnées des vertex ( = points de l'espace) du maillage d'un objet. La manipulation suivante va vous montrer tout cela de façon plus détaillée.

Repartez d'une scène neuve (control+n) et assurez-vous d'avoir de nouveau un cube par défaut au centre de l'espace.
Maintenant, passons en mode EDIT avec tab et regardons ce qu'indiquent les coordonnées du vertex situé en (1,1,1) en le sélectionnant avec le clic droit de la souris :


Pas de doute, il est bien situé en x:1.0, y:1.0 et z:1.0.
Maintenant, sans dé-sélectionner le point, repassez en mode OBJECT avec tab et appliquons la transformation suivante :
touche s, touche x, touche 2, touche ENTER.

Votre cube est maintenant étiré par deux suivant l'axe des X. Si maintenant vous repassez en mode EDIT, vous verrez que le vertex (déjà sélectionné lors de l'EDIT précédent) est toujours indiqué comme étant dans l'espace (1,1,1), alors que visuellement, dans la fenêtre 3D, il semble se trouver en (2,1,1).



On a ainsi la preuve que le "scale" que vous appliquez à vos objets ne change pas réellement les données intrinsèques de votre maillage (= mesh). Pour cela, il faut appliquer vos transformations à votre objet si vous voulez qu'elles deviennent effectives, et si vous voulez que les futurs modifiers que vous appliquerez plus tard agissent bien sur les points aux endroits où ils se trouvent, une fois que vous avez joué avec des transformations.

Une dernière chose à préciser : les informations de dimensions de votre objet sont les dimensions de la "plus petite boite contenant" l'objet, relativement au système d'axes local à l'objet. Ces informations de dimensions sont donc liées à l'objet "transformé" par LOC, ROT ou SCALE, et non pas aux données réelles de l'objet. Pour que les dimensions reflètent réellement l'objet, il faut donc appliquer les transformations.

Voilà, je pense que c'était utile d'exposer tout ceci sur mon blog d'apprenti, puisque c'est une information que je n'ai jamais trouvé ailleurs et qui me semble assez essentielle pour comprendre en profondeur les bases de fonctionnement du logiciel Blender.

Bonsoir à tous.

lundi 22 août 2011

Même un débutant en 3D doit faire son portfolio.

Je pense que pour progresser, il faut se discipliner. Et cela, c'est valable également pour la création d'images de synthèse, que ce soit avec Blender ou un autre logiciel.

Dès lors, une bonne règle à suivre, c'est de mettre en avant, sur un lieu de présentation, l'ensemble de ses petites œuvres, pour les autres mais avant tout pour soi. Pour soi ? Oui, pour soi, car il est important de pouvoir se rendre compte qu'on progresse, qu'on a appris des nouvelles choses, que les objets que l'on sait modéliser aujourd'hui sont plus complexes que ceux d'il y a quelques mois, etc.

Se discipliner, c'est par exemple se forcer à créer un objet par semaine, pour être sûr qu'on ne reste pas une trop longue période sans s'arrêter d'apprendre encore et encore.

Portfolio 3D de Calogero GIGANTE (débutant)


Alors voilà, même si je ne crée pas (encore) une image satisfaisante par semaine, j'essaie quand même de rassembler le résultat de mon travail sur une sorte de portfolio. Ce portfolio est accessible à cette adresse :

http://www.gigante.be/blender/

J'espère que les images que vous y verrez vous plairont.

Bonne soirée.

vendredi 19 août 2011

Comment faire de simples habits comme dans la Grèce antique avec Blender ?

Voilà mon nouveau problème, j'aimerais savoir comment je peux faire des habits comme ceux que portaient la plupart des gens dans la Grèce antique. Comment faire ce genre de drapé :


J'ai été supplier à gauche et à droite, et personne (parmi les grands faiseurs de tutoriels vidéos pour Blender) ne semble intéressé par ça.

Pourtant, même dans l'héroïc-fantasy, qui semble quand même bien plus prisé que les vieux personnages antiques, on retrouve aussi très souvent de longs habits drapés... D'où mon étonnement, je ne comprends pas pourquoi il y a un manque d'intérêt pour ça dans la communauté des as de Blender.

Je pense que je vais devoir chipoter moi-même, avec le CLOTH simulator...