Bonsoir,
J’ai vu que beaucoup de gens avez des problèmes avec les booléens.
Le problème vient surtout des meshs. Un jour un collègue m’a montré sous Renderman une fonction magique : le Csg, autrement dis : du booléen en rendu.
Je me suis demandé si cela été possible sous MentalRay. La réponse est oui.
- Vous avez des booléens parfait. Ca ne chie jamais.
- Vous pouvez animer vos booléens
- Vous avez un contrôle des shaders sur les “intersections”.
- Un cerveau (ceci n’est pas obligatoire)
- Maya 2008 SP1, ou autre, celons la version du shader (ça c’est obligatoire)
- Le pack de shader_p trouvable ici : cliquez
On va commencer par créer une magnifique scène qui m’a pris des week end pour ça création.
On va commencer par faire un booléen juste sur les 2 sphères. Je veux que la petite sphère fasse une soustraction (une différence) sur la grosse.
Le shader magique s’appelle : p_CSG.
Créez ce shader et appliquez le sur ces 2 sphères. Dans ce shader, l’objet A fait une action sur l’objet B.
Donc, dans “Object A”, on va mettre le nom de la petite sphère (ici pSphere2), et dans “Object B”, la grosse sphère (pSphere1).
Pour mieux voir les “formes”, on va mettre un lambert dans chaque Color.
Le mode, ben on le laisse en “difference”, c’est ce qu’on veut.
Cliquez sur rendu.
Wahhhhhwooooo, oulala :
Oui, vous avez un booléen qui marche (c’est dur à dire mais c’est vrai =) ).
Bon, on va un peu customizer tout ça.
Le problème ici est que nous avons un shader sur les deux sphères. Ce qui est génant car si on veut toucher au shading groupe de un mesh (pour mettre du displacment, environement, contour, etc etc), on ne peut pas car il n’y a qu’un shading group pour les 2 sphères.
Je me suis dis : ça va buguer si je duplique mon p_Csg et que j’en applique un à chaque sphère ?
Réponse : non =)
Donc, séléctionner votre Csg, dupliquez le en “with connections to network” (pour garder les connection), et appliquez le à une des sphères.
Faites un rendu.
Voilà, vous avez le même truc qu’au départ. Vous allez me dire : “ben alors, ça sert à rien ton truc la.”
Biensur que si, relisez plus haut pourquoi j’ai fais ça.
Maintenant je peux, par exemple, mettre un petit contours shader juste sur la petite sphère.
Regarder le résultat, vous allez comprendre :
Voilà !
Bon ben maintenant il ne reste plus qu’a rajouter le cube.
Pour cela, vous créez un autre p_Csg. Vous l’appliquez sur le cube.
Rappellez vous, l’objet A fait une action sur l’objet B.
Donc en object A, on mets le nom du cube (ici pCube1), avec un petit lambert dans la color A.
Puis en object B, ben on mets le nom de la grande sphère.
N’oubliez pas de reconnecter le lambert de la grande sphère dans la color B !
Résultat :
C’est beau.
La scène : csg
Ce qui est fort, c’est qu’on peut animer chaques élements. Oui, vous avez le secret de certaines pubs…ah ah ah.
Bon voilà, je ne vu plus entendre de : “Les booléens ça marchent pas”.
Bonne soirée (ou journée).
admin
Les ombres marchent, mais j’aurais du préciser comment faire.
Pour que ça marche :
- il faut que tes shadows soient en raytrace (pas de shadow map donc).
- il faut que dans tes options de rendu, tu mettes le “shadow method” en segment.
- ensuite, chose vicieuse que tout le monde oublie : quand tu appliques ton p_CSG a ton objets, ce shader ce connecte a un “shading group”. Il est connecté en “material shader” dans le shading group. Il faut que tu le connecte aussi en “shadow shader”.
Voilà.
Dis moi si t’as un problème, mais normalement non.
admin
Ce shader existe pour XSI 5 et 6. Regarde sur le site de Puppet, il y a une version pour XSI (version 3.0.1).
Sinon il existe un autre shader pour XSI qui fait la même chose et qui s’appelle : booltrace.
bey
un autre problem décelé : en finalgather, l’objet qui est caché dans l’opération booléenne intervient dans le cacul du FinalGather meme si le Primary Ray visibility est décoché. Merci pour ton aide si tu as une solution.
admin
Le primary Ray (primary visibility) n’est la que pour faire disparaitre ton objet au rendu (tout en agissant comme un objet normal (génère des shadows, FG, etc etc)).
Donc comme tu dois le savoir, tout ces paramètres ce trouve dans le shape de ton objet, dans la parti Render stats (cast shadows, receive shadows, primary visibility, etc etc).
Maintenant, le Final Gather étant un truc propre à MentalRay. Donc en toute logique, si tu vas dans la parti MentalRay (toujours dans ton shape), tu auras les options : Visible in transparency, final gather cast, final gather receive, etc etc…
Donc si tu veux que ton objet n’envoie pas de Final Gather, il suffit juste que tu décoche : Final Gather cast =)
BETINHO
bon jour j’adore votre site comme debutant dans la 3D ça me donne des trés bonnes aides voilà…encore une fois Merci je suis sur maya 2009 tout installé mais jai un probleme dans l’etape de la conection dans le hypershade quand je connecte l’obejts a et b ça marche pas au rendu il ne fait pas le booleans voilà toutes est fait comme dans ton tuto mais ça marche pas ): petite question est que c’est normal que le shader p_CSG son icone soit pas le meme ke toi cune sphere sur la couleur du l’obejt B la grande sphere merci
BETINHO
Désole jai trouve le souci javait pas conecte le shader p_CSG sur les deux forme ^^ merci quand meme car ça marche nikel!!!! trop cool félicitation encore un fan de Maya heureux tank!!!
Le blog de Damien BATAILLE
bey
Oui mais apparemment les ombres ne suivent pas, l’ombre est celle de l’objet en entier.