RenderRegion evaluer sur chaque frame.
5 participants
Page 1 sur 1
RenderRegion evaluer sur chaque frame.
Bonjour les enfants,
Bon, je suis entrain de faire la version 2 mon script : http://www.highend3d.com/maya/downloads/mel_scripts/rendering/mental_ray/Deex-Render-Booster-Tile-5794.html
Pour faire vite : mon script (qui est pour mentalRay ) permet de rendre une image sur plusieurs PC en découpant l'image, et il permet aussi de détecter les objetcs mis dans une liste, et ainsi découper la zone de rendu choisi. Et donc, optimizer à fond les calcules (ce pour contrer le satelite qui est pourri).
Bon, tout ça, ça marche.
Moi, pour la version 2, je veux que ça marche pour les animations.
Actuellement, ou j'en suis : j'ai fais un truc qui analyse la scène, il regarde si il ya un render layer, plusieurs camera, etc etc. Ensuite, il calcule les coordonnés pour chaque frames de la ou il y a l'object (ou la liste d'objet, en récupérant la taille des boundings box, regarde les max et les min, etc etc) et le retranspose (de la 3D en 2D en fesant un screenproject, la on passe par de l'API), pour arriver a générer un fichier .xml classer (en Python avec Element), avec pour chaque frame, les coordonnés X, Y, with et height de la zone de rendu.
Pour retransmettre les coordonnées, je rajoute des extra-attribut au node "mentalRayGlobals" qui sont :
Ces attributs sont des intergers (qui sont inexistant à la base).
Mon concept étant de rajouter un script en preFrame, et que ce script va ouvrir le fichier .xml générer auparavant, le parser, analyser la frame actuel du batch, le render layer, la caméra, etc etc...pour trouver ensuite les coordonnées a prendre.
Tout est fais avec le module ElementTree.
A partir de la, quand le script (du preFrame) à récupéré les coordonnées, il fait un setAttr sur les 4 attributs ajouter (du node mentalrayGlobals) dynamiquement, en mettant donc les coorodonné récupés du xml.
Quel est le problème ?
Le problème étant que les 4 attributs sont évaluer au chargement de la scène. Hors, en preFrame, la scène est déjà charger. Donc le changement de renderRegion (qui doit être exact aux objets) n'est pas pris en compte.
Résultat : il ne prends que la valeur de la 1ere frame sur tout le batch.
Ce qui fait que j'ai une solution : faire un batch/job pour chaque frame, vu que les attributs sont évaluer a chaque chargement de la scene.
Sauf que la, déjà c'est moche, et ça comprommé tout ce que j'ai fais avant.
Au lieu d'avoir ça :
Si il y a pas de solution, j'aurais ça :
A noté qu'il y aussi possibilité de faire des render Region avec le flag -reg directement en batch, mais on arrive au même problème : impossible de modifier les valeurs.
Donc résultat, tout est fait, mais je suis bloqué .
J'ai essayé plusieurs solutions pour essayer de faire évaluer les attributs :
- en créant une expression(if frame == 1, blabla)
- en les créants sur un objet dumy et en reliant chaque attribut avec le connection editor
- en fesant un scriptJob
Aucune des solutions ne marchent (MR c'est de la merde ?).
Si quelqu'un voit une solution, qu'on me le fasse savoir. Je suis pas programmeur, je fais juste ça comme ça en auto didacte, parce que la nuit, on se fait chier.
Merci d'avance .
Bon, je suis entrain de faire la version 2 mon script : http://www.highend3d.com/maya/downloads/mel_scripts/rendering/mental_ray/Deex-Render-Booster-Tile-5794.html
Pour faire vite : mon script (qui est pour mentalRay ) permet de rendre une image sur plusieurs PC en découpant l'image, et il permet aussi de détecter les objetcs mis dans une liste, et ainsi découper la zone de rendu choisi. Et donc, optimizer à fond les calcules (ce pour contrer le satelite qui est pourri).
Bon, tout ça, ça marche.
Moi, pour la version 2, je veux que ça marche pour les animations.
Actuellement, ou j'en suis : j'ai fais un truc qui analyse la scène, il regarde si il ya un render layer, plusieurs camera, etc etc. Ensuite, il calcule les coordonnés pour chaque frames de la ou il y a l'object (ou la liste d'objet, en récupérant la taille des boundings box, regarde les max et les min, etc etc) et le retranspose (de la 3D en 2D en fesant un screenproject, la on passe par de l'API), pour arriver a générer un fichier .xml classer (en Python avec Element), avec pour chaque frame, les coordonnés X, Y, with et height de la zone de rendu.
Pour retransmettre les coordonnées, je rajoute des extra-attribut au node "mentalRayGlobals" qui sont :
- Code:
regionRectX
regionRectY
regionRectWidth
regionRectHeight
Ces attributs sont des intergers (qui sont inexistant à la base).
Mon concept étant de rajouter un script en preFrame, et que ce script va ouvrir le fichier .xml générer auparavant, le parser, analyser la frame actuel du batch, le render layer, la caméra, etc etc...pour trouver ensuite les coordonnées a prendre.
Tout est fais avec le module ElementTree.
A partir de la, quand le script (du preFrame) à récupéré les coordonnées, il fait un setAttr sur les 4 attributs ajouter (du node mentalrayGlobals) dynamiquement, en mettant donc les coorodonné récupés du xml.
Quel est le problème ?
Le problème étant que les 4 attributs sont évaluer au chargement de la scène. Hors, en preFrame, la scène est déjà charger. Donc le changement de renderRegion (qui doit être exact aux objets) n'est pas pris en compte.
Résultat : il ne prends que la valeur de la 1ere frame sur tout le batch.
Ce qui fait que j'ai une solution : faire un batch/job pour chaque frame, vu que les attributs sont évaluer a chaque chargement de la scene.
Sauf que la, déjà c'est moche, et ça comprommé tout ce que j'ai fais avant.
Au lieu d'avoir ça :
- Code:
"C:/Program Files/Autodesk/Maya2009/bin/Render.exe" -im "testReg.ghth" -x 640 -y 480 -fnc 3 -r mr -rl defaultRenderLayer -cam perspShape -preFrame "python(""import deexRenderBoosterTile\ndeexRenderBoosterTile.DB_mentalrayGlobalsAddAttr('C:/Documents and Settings/Administrateur/My Documents/maya/projects/default/DeexBoosterBatFiles' ,'testReg.mb' ,'defaultRenderLayer' ,'perspShape')"");" -s 1.0 -e 10.0 -rd "C:/Documents and Settings/Administrateur/My Documents/maya/projects/default/images/" -proj "C:/Documents and Settings/Administrateur/My Documents/maya/projects/default" "C:/Documents and Settings/Administrateur/My Documents/maya/projects/default/scenes/testReg.mb"
Si il y a pas de solution, j'aurais ça :
- Code:
"C:/Program Files/Autodesk/Maya2009/bin/Render.exe" -im
"testReg.ghth" -x 640 -y 480 -fnc 3 -r mr -rl defaultRenderLayer -cam
perspShape -preFrame "python(""import
deexRenderBoosterTile\ndeexRenderBoosterTile.DB_mentalrayGlobalsAddAttr('C:/Documents
and Settings/Administrateur/My
Documents/maya/projects/default/DeexBoosterBatFiles' ,'testReg.mb'
,'defaultRenderLayer' ,'perspShape')"");" -s 1.0 -e 1 -rd
"C:/Documents and Settings/Administrateur/My
Documents/maya/projects/default/images/" -proj "C:/Documents and
Settings/Administrateur/My Documents/maya/projects/default"
"C:/Documents and Settings/Administrateur/My
Documents/maya/projects/default/scenes/testReg.mb"
"C:/Program Files/Autodesk/Maya2009/bin/Render.exe" -im
"testReg.ghth" -x 640 -y 480 -fnc 3 -r mr -rl defaultRenderLayer -cam
perspShape -preFrame "python(""import
deexRenderBoosterTile\ndeexRenderBoosterTile.DB_mentalrayGlobalsAddAttr('C:/Documents
and Settings/Administrateur/My
Documents/maya/projects/default/DeexBoosterBatFiles' ,'testReg.mb'
,'defaultRenderLayer' ,'perspShape')"");" -s 2 -e 2 -rd
"C:/Documents and Settings/Administrateur/My
Documents/maya/projects/default/images/" -proj "C:/Documents and
Settings/Administrateur/My Documents/maya/projects/default"
"C:/Documents and Settings/Administrateur/My
Documents/maya/projects/default/scenes/testReg.mb"
"C:/Program Files/Autodesk/Maya2009/bin/Render.exe" -im
"testReg.ghth" -x 640 -y 480 -fnc 3 -r mr -rl defaultRenderLayer -cam
perspShape -preFrame "python(""import
deexRenderBoosterTile\ndeexRenderBoosterTile.DB_mentalrayGlobalsAddAttr('C:/Documents
and Settings/Administrateur/My
Documents/maya/projects/default/DeexBoosterBatFiles' ,'testReg.mb'
,'defaultRenderLayer' ,'perspShape')"");" -s 3 -e 3 -rd
"C:/Documents and Settings/Administrateur/My
Documents/maya/projects/default/images/" -proj "C:/Documents and
Settings/Administrateur/My Documents/maya/projects/default"
"C:/Documents and Settings/Administrateur/My
Documents/maya/projects/default/scenes/testReg.mb"
etc etc...
A noté qu'il y aussi possibilité de faire des render Region avec le flag -reg directement en batch, mais on arrive au même problème : impossible de modifier les valeurs.
Donc résultat, tout est fait, mais je suis bloqué .
J'ai essayé plusieurs solutions pour essayer de faire évaluer les attributs :
- en créant une expression(if frame == 1, blabla)
- en les créants sur un objet dumy et en reliant chaque attribut avec le connection editor
- en fesant un scriptJob
Aucune des solutions ne marchent (MR c'est de la merde ?).
Si quelqu'un voit une solution, qu'on me le fasse savoir. Je suis pas programmeur, je fais juste ça comme ça en auto didacte, parce que la nuit, on se fait chier.
Merci d'avance .
Re: RenderRegion evaluer sur chaque frame.
Je ne m'y connais pas assez en mental ray pour avoir une solution directement, par contre tu peux peut etre essayer d'utiliser une camera asymétrique.
Le principe est surtout utilisé en réalité virtuelle, ou la position de la caméra bouge en fonction de celle du spectateur, mais le plan de projection lui reste fixe. Je ne suis pas sur mais il semble qu'en modifiant simplement la matrice de la camera tu peux faire ça, et du coup modifier pour chaque frame la fenêtre de rendu.
Par contre ca ne changera pas la resolution du rendu (mais peut être que tu peux modifier la resolution (pas la région) dans une anim avec MR).
Le principe est surtout utilisé en réalité virtuelle, ou la position de la caméra bouge en fonction de celle du spectateur, mais le plan de projection lui reste fixe. Je ne suis pas sur mais il semble qu'en modifiant simplement la matrice de la camera tu peux faire ça, et du coup modifier pour chaque frame la fenêtre de rendu.
Par contre ca ne changera pas la resolution du rendu (mais peut être que tu peux modifier la resolution (pas la région) dans une anim avec MR).
xaebhal- Nombre de messages : 16
Age : 40
Date d'inscription : 24/07/2009
Re: RenderRegion evaluer sur chaque frame.
J'y avais déjà pensé, mais la on tombe sur le probleme qu'on ne puisse pas changer la résolution en perFrame :/.
Re: RenderRegion evaluer sur chaque frame.
http://deex.info/wordpress2/2009/10/deex-render-booster-tile-v200/
Fini, suivant.
J'ai jamais de retour, c'est chiant. J'ai remarqué que quand c'est gratuit, personne ne prend la peine de relever des bugs ou autres.
Un exemple simple : le Deex Render Tool. Je frôle les 2000 downloads, 10 merci, 0 retour de bugs .
Fini, suivant.
J'ai jamais de retour, c'est chiant. J'ai remarqué que quand c'est gratuit, personne ne prend la peine de relever des bugs ou autres.
Un exemple simple : le Deex Render Tool. Je frôle les 2000 downloads, 10 merci, 0 retour de bugs .
Re: RenderRegion evaluer sur chaque frame.
c'est qu'il doit bien marcher !
moi perso j'ai jamais réussi a le faire marcher sur mac et depuis je suis passer sur houdini ^^
moi perso j'ai jamais réussi a le faire marcher sur mac et depuis je suis passer sur houdini ^^
Re: RenderRegion evaluer sur chaque frame.
Ou alors, c'est que ça marche pas et que tout le monde le supprime sans y preter guere d'attention.
haha.(nelson mode)
haha.(nelson mode)
Titus- Chef de cuisine
- Nombre de messages : 1145
Age : 39
Localisation : France
Date d'inscription : 11/12/2007
Re: RenderRegion evaluer sur chaque frame.
Je ne découvre ce sujet que maintenant et, au risque de jouer les lourds, jpeux savoir comment tu as finalement réussi à solutionner ton problème d'évaluation des attributes MR à chaque frame et pas au chargement de scène ?
Merci !
Merci !
johntchance- Nombre de messages : 17
Date d'inscription : 29/03/2009
Re: RenderRegion evaluer sur chaque frame.
J'ai pas fais un preFrame, mais un preRender. Donc au final, 1 frame = 1 job (le tout dans un .bat).
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum