PDA

Voir la version complète : Récupérer le cache d'un objet



César Vonc
23/12/2012, 16h50
Permet de récupérer le cache d'un objet, c'est à dire son état actuel dans la scène, sans avoir à le conformer.


Ce script ne recalcule pas l'objet mais copie ce qui est affiché dans la vue (tous les objets étant mis en cache pour l'affichage), ce qui peut s'avérer utile pour convertir un lourd booléen sans le recalculer, ou un objet déformé de quelque manière que ce soit (physique, déformateur, animation...).



Sélectionner vos objets puis lancez le script, le cache de ceux-ci seront ajoutés à votre scène comme de nouveaux objets.


Lien alternatif : http://code.vonc.fr/?a=36

xs_yann
23/12/2012, 17h51
Salut,

Merci pour le partage César. ;)

Une petite précision :







You could also use BaseObject.GetCache().

THIS!!! so helpful, returns a polygon representation of almost any object... including cloners!
Please be very careful using this function. It's not always guaranteed that the caches are build. The only time this is guaranteed is during rendering. Always check if the returned cache is valid. Please check the docs of the other cache functions as well (GetDeformCache, CheckCache).

cheers,
Matthias

http://www.plugincafe.com/forum/forum_posts.asp?TID=5232

clemz
23/12/2012, 18h32
super merci Cesar :) je vais tester ça !

xs_yann
23/12/2012, 20h27
Je viens de voir une petite erreur qui risque de poser quelques problèmes pour l'affectation des positions sur les objets créés ;) :


n += 0

César Vonc
23/12/2012, 21h36
Oups, en effet, ça risquait de merder avec plusieurs objets sélectionnés, merci Yann. ^^

Version mise à jour, désolé.

oli_d
24/12/2012, 07h43
Merci pour le partage, c'est très pratique !

Deux petites astuces au passage au lieu du compteur du peux directement utiliser la fonction enumerate comme suit (bon d'accord il y a plus de caractères que dans ton code !) :

for n,obj in enumerate(retour):ou encore plus pratique dans ton cas la fonction zip qui permet une itération sur deux listes en même temps :

for obj,pos in zip(retour,objets_pos) :