PyMaxwell - Mxi SL Validator

Pour vous simplifier la vie
Avatar de l’utilisateur
Rodman
SL17
Messages : 1055

PyMaxwell - Mxi SL Validator

Message 05 févr. 2013, 00:40

Voici un script qui permet de savoir si dans un dossier qui contient des MXI, il y en a qui ont un SL inférieur à celui souhaité ou bien de savoir si tous les MXI ont le SL voulu.

Code : Tout sélectionner

########################
# Copyright 2013 Rodman
########################

from pymaxwell import *
import math

def mxi_sl_validator(path, sl):	
	
	sl_threshold = sl
	mxiList = getFilesFromPath(path, "mxi") # Get all mxi from given path

	mxi = CmaxwellMxi()
	
	a = 0
	b = 0
	for mxiFile in mxiList: # loop mxi files
		
		err = mxi.read(path + mxiFile)
		if not err.failed():
			# print "MXI readed successfully"
			
			SL = mxi.getSamplingLevel()

			if SL < sl_threshold:
				print mxiFile
				a +=1

			if int(math.floor(SL)) == sl_threshold:
				print int(math.floor(SL))
				b +=1
			
		else:
			print "MXI can't be readed !"
	

	if not a == 0:
		print "Still " + str(a) + " MXI to render"
	
	if b == len(mxiList):
		print "All your MXI are rendered to SL : " + str(sl_threshold)
	
mxi_sl_validator("c:/mxi_list/", 15) ###
Pour configurer le script il suffit de modifier les deux paramètres de la dernière ligne du script : ( "le_path", SL)

Ce script vous sera surement utile pour vérifier que votre animation a le SL souhaité. On n'est jamais à l'abri d'un bug dans un rendu en réseau par exemple.

Enjoy ! 8)

Avatar de l’utilisateur
Rodman
SL17
Messages : 1055

Re: PyMaxwell - Mxi SL Validator

Message 08 févr. 2013, 01:26

Voici une mise à jour de mon code :

Code : Tout sélectionner

########################
# Copyright 2013 Rodman
########################

from pymaxwell import *
import math


def mxi_sl_validator(path, sl):	
	
	sl_threshold = sl
	mxiList = getFilesFromPath(path, "mxi") # Get all mxi from given path

	mxi = CmaxwellMxi()
	
	a = 0
	b = 0
	i = 1
	for mxiFile in mxiList: # loop mxi files
		
		err = mxi.read(path + mxiFile)
		if not err.failed():
			# print "MXI read successfully"
			
			SL = mxi.getSamplingLevel()
			if SL < sl_threshold:
				print str(("%03d") % i) + " - SL: " + str(int(math.floor(SL))) + "    Rerender this: " + str(mxiFile)
				a +=1
				i +=1
			if int(math.floor(SL)) == sl_threshold:
				print str(("%03d") % i) + " - SL: " + str(sl_threshold)
				b +=1
				i +=1
			
		else:
			print "MXI can't be read !"
	
	if not a == 0:
		print "\nThere are still " + str(a) + " MXI to render till SL " + str(sl_threshold) + "."
	
	if b == len(mxiList):
		print "\nAll your MXI are rendered to SL : " + str(sl_threshold)
	
mxi_sl_validator("c:/mxi_list/", 15) ###


J'ai un problème avec ce code car je n'ai pas trouvé le moyen de vider la mémoire une fois que le MXI a été chargé et lu. Par conséquent, si vous essayer de lancer le code sur un nombre important de MXI, la ram va exploser. Vous connaissez la suite. :mrgreen:

Roch, as-tu une idée ? :roll:

Le lien de la documentation : http://support.nextlimit.com/display/pl ... maxwellMxi

Avatar de l’utilisateur
Roch
Messages : 7571
Localisation : Marseille - France
Contact :

Re: PyMaxwell - Mxi SL Validator

Message 08 févr. 2013, 08:09

Reboot ?

je vais demander.

Merci pour le script.

Avatar de l’utilisateur
Rodman
SL17
Messages : 1055

Re: PyMaxwell - Mxi SL Validator

Message 08 févr. 2013, 12:32

Par exemple, si tu as 10 Go de mxi, la ram va tout charger ! Du coup si tu a 12 Go ou plus ça ira, tu fermeras Pymaxwell.exe ou un autre interpreteur pour Python comme IDLE, et la ram va "retomber". Sinon, ton ordi risque de "freezer".

Avatar de l’utilisateur
Rodman
SL17
Messages : 1055

Re: PyMaxwell - Mxi SL Validator

Message 18 juil. 2013, 06:11

Je suis entrain d'essayer d'apprendre le language C++ qui est plus complexe à maîtriser que du Python ou MaxScript. Du coup, je me suis arrêté sur la partie du constructeur/destructeur d'une classe.
Et je me demande s'il n'y a pas un problème au niveau du destructeur de la classe CmaxwellMxi. Si j'ai bien compris celui-ci permet de vider la ram une fois l'utilisation de la classe terminée.

Je ne sais pas exactement comment se fait le passage de conversion de C++ vers Python (et vice versa) mais je pense que puisque Python n'a pas de "destructeur" car il gère lui-même la mémoire (ramasse-miette = garbage collector en anglais cf: http://fr.wikipedia.org/wiki/Destructeur ), et donc il ne peut dire à Monsieur C++ que faire pour vider la mémoire.

J'attends l'avis d'un développeur C++, Verbal ? :mrgreen:

Répondre