Les booléens au rendu ! Csg !

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.

1) Avantages :

- 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”.

2) Ce qu’il vous faut :

- 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

3) Pratique :

On va commencer par créer une magnifique scène qui m’a pris des week end pour ça création.

powered by Wordpress Multibox Plugin v1.3.5

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.

powered by Wordpress Multibox Plugin v1.3.5

Cliquez sur rendu.

Wahhhhhwooooo, oulala :

powered by Wordpress Multibox Plugin v1.3.5

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.

powered by Wordpress Multibox Plugin v1.3.5

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 :

powered by Wordpress Multibox Plugin v1.3.5

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 :

powered by Wordpress Multibox Plugin v1.3.5

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).

Comments

bey

Oui mais apparemment les ombres ne suivent pas, l’ombre est celle de l’objet en entier.

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. ;)

bey

Merci beaucoup pour ta réponse, je met ca en application demain matin et te donne le résultat.

bey

Bon ca marche, merci encore. A propos est ce qu’il existe ce shader pour Xsi ?

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

Je viens de tester ca, tout fonctionne pour l’instant. Merci beaucoup.

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!!!

Post you comment here





Deex

Le blog de Damien BATAILLE