Code Vonc

Récupérer le cache d'un objet

v 1.1

Script Python pour Cinéma 4D R13.

TéléchargerDownload
Faire un donMake a donation
Comment installer ?How to install ?
CommentairesComments

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 copie ce qui est affiché dans la vue, 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éformeur, animation...).

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



import c4d
from c4d import utils

# 1.1 - César Vonc

def main():
    objs = doc.GetActiveObjects(c4d.GETACTIVEOBJECTFLAGS_0)
    if not objs : return
    objets = []
    objets_pos = []
    
    for o in objs :
        cache = o.GetDeformCache() or o.GetCache() or o
        cache = cache.GetDeformCache() or cache
        objets_pos.append(o.GetMg())
        objets.append(cache)
    
    retour = utils.SendModelingCommand(command=c4d.MCOMMAND_CURRENTSTATETOOBJECT, list=objets, doc=doc)
    retour.reverse()
    objets_pos.reverse()
    
    doc.StartUndo()
    doc.SetActiveObject(None)
    for n, obj in enumerate(retour) :
        doc.InsertObject(obj)
        doc.SetActiveObject(obj, c4d.SELECTION_ADD)
        pos = objets_pos[n]
        obj.SetMg(pos)
        doc.AddUndo(c4d.UNDOTYPE_NEW, obj)
        
    doc.EndUndo()
    c4d.EventAdd()

if __name__=='__main__':
    main()