Rendre une animation avec Maxwell Render depuis SketchUp La
Transcription
Rendre une animation avec Maxwell Render depuis SketchUp La
Rendre une animation avec Maxwell Render depuis SketchUp La question du jour est la suivante : comment rendre une animation avec Maxwell Render pour un modèle SketchUp ? Si avec d’autres logiciels (3dsmax, maya, C4D...) la gestion de l’animation est immédiate, le chemin est moins direct avec SketchUp. La première des choses à créer ce sont les caméras qui décrivent notre animation. Pour Maxwell, une scène SketchUp équivaut à une caméra. Je vais donc avoir autant de scènes que d’images à générer. Automatiquement bien sûr. Pour cela j’utilise un plugin : SU Animate (version d’essai téléchargeable ici : http://www.ohyeahcad.com/suanimate/) Avec SU Animate je crée mon chemin pour l'animation de ma caméra. Une fois mon animation réglée, je demande à SU Animate de me créer mes scènes (caméras pour Maxwell). Petit rappel, généralement on travaille en 30 images par secondes. Si vous souhaitez une animation de 3 secondes = 90 scènes = 90 caméras Maxwell. J’exporte ensuite au format Maxwell. Rendre une animation avec Maxwell Render depuis SketchUp J’ouvre le fichier dans le Maxwell Studio. Je retrouve mes 90 caméras sur le tracé d’animation. Si je n’ai pas fini le travail de texturage, d'éclairage dans SketchUp, je le finis dans Maxwell Studio et je sauvegarde. Bon maintenant la question c’est comment automatiser le rendu de mes caméras ? Réponse : les scripts. Je lance Maxwell Render. J’ai un onglet script qui me permet d’automatiser certaines actions. Cela demande bien sûr une connaissance des habitudes de programmation ECMA (plus d’info page 140 du manuel Maxwell Render). Par chance des amis fans de code travaillent pour nous. Nous reprenons donc un script créé par JDHill que nous allons copier/coller dans la fenêtre du script. Ce script lance les calculs pour une plage de caméra de ma scène, il sauvegarde l'image et le MXI et passe à la caméra suivante. // // // // // // // This script loops through a set of cameras, specified by name and index. It must be customized to fit the characteristics of the given MXS file. As set up, it expects to find the MXS filled with cameras whose names begin with 'Scene '. This base name is stored below in the 'baseName' variable. It expects the scene numbers to begin at 1 and to end at 3, with these limits being stored below in the 'firstFrame' and 'lastFrame' variables. It will loop through the frame Rendre une animation avec Maxwell Render depuis SketchUp // range looking for cameras which fit the pattern 'Scene 1', rendering // each one as it is found. var firstFrame = 1; var lastFrame = 3; var baseName = "Scene "; // internal vars & events var isRendering = 0; var currentFrame = firstFrame; var outputFolder = FileManager.getFileFolder(Scene.mxsPath); RenderEvents["renderFinished()"].connect(renderHasFinished); // render loop while (currentFrame <= lastFrame) { renderCamera(currentFrame); while(1) { if(isRendering == 0) { break; } } currentFrame++; } // functions function renderCamera(frameNumber) { var sceneName = baseName + frameNumber; Scene.setActiveCamera(sceneName); } if (Scene.activeCameraName != sceneName) { Maxwell.print("The MXS contains no camera named '" + sceneName + "'!"); } else { Maxwell.print("rendering Scene: " + sceneName); Scene.setMxiPath(outputFolder + "\" + sceneName + ".mxi"); Scene.setImagePath(outputFolder + "\" + sceneName + ".png"); isRendering = 1; Maxwell.startRender(); } function renderHasFinished() { isRendering = 0; Maxwell.print("Render finished!!"); } Rendre une animation avec Maxwell Render depuis SketchUp Je charge ma scène et j’adapte le script. Par défaut : var firstFrame = 1; var lastFrame = 3; var baseName = "Scene"; Dans mon cas j’ai 90 caméras de 1 à 90 et les caméras s’appellent «1, 2, 3...» sans préfixe. var firstFrame = 1; var lastFrame = 90; var baseName = ""; Je lance le script et le calcul démarre sur la caméra 1 et enchaîne enuiste sur les autres caméras. Vous trouverez dans le dossier de votre MXS, les images et les fichiers MXI. Vous pouvez modifier les chemins de sortie dans le script : Scene.setMxiPath(outputFolder + "\" + sceneName + ".mxi"); Scene.setImagePath(outputFolder + "\" + sceneName + ".png");