PDA

Voir la version complète : Problème Mettre en cache Thinking particules ?



Restic1
24/03/2016, 09h22
Bonjour à tous et bravo pour ce merveilleux forum qui m'aide énormément au quotidien.

J'ai un problème avec une ferme de rendu et thinking particules du moins c'est ce que je pense et j'aurais besoin de vos lumières.
À priori, la ferme de rendu calcule les images dans un ordre quelconque or dans mon projet, c4d dois lire l'animation dans l'ordre pour que la simulation des particules soit correcte (je crois).
Y aurait-il un moyen de mettre en cache le calcul thinking particules pour que la simulation soit correcte quelque soit l'ordre de lecture de l'animation ? je suis en R13.

Dans l'attente de vous lire, merci d'avance.

xs_yann
24/03/2016, 11h29
Salut Restic1,

Je pense que tu as déjà ta solution mais je poste quand même, ça pourra servir à d'autres. ;)

C'est une solution qui impose d'avoir MoGraph.

1. Créer un cloner en mode 'Object'

http://www.xsyann.com/fc4d/bake_tp1.png

2. Faire glisser le groupe de particules dans le champ 'Object'

http://www.xsyann.com/fc4d/bake_tp2.png

3. Mettre la géométrie en mode visible en enfant du Cloner
4. Créer un tag MoGraph Cache

http://www.xsyann.com/fc4d/bake_tp3.png

5. Cliquer sur 'Bake'
http://www.xsyann.com/fc4d/bake_tp4.png

Ne pas oublier de désactiver ou de supprimer les TP.

Bon courage pour la suite. :icon_wavey:

Restic1
24/03/2016, 12h45
[QUOTE=xs_yann;1061700]Salut Restic1,

Je pense que tu as déjà ta solution mais je poste quand même, ça pourra servir à d'autres. ;)

En effet j'ai la solution qui est exactement celle que tu expose.
Merci pour ton aide XS_Yann et en effet j'espère que ça pourra servir à d'autres.

Merci à la French, ce lieux où la solidarité humaine prend tout son sens.

xs_yann
24/03/2016, 14h00
En effet j'ai la solution qui est exactement celle que tu expose.


Hehe, je me doute bien c'est moi qui t'ai donné les deux (c'est moi Yann KOËTH au Ranch). :icon_mrgreen:
Voilà un petit script Python pour se faciliter la vie (compatible R13).


import c4d
from c4d import gui

SHAPE_UD_STR = 'Particle Shape'
ON_UD_STR = 'On'
Ocloner = 1018544

def get_shape(emitter):
for descid, bc in emitter.GetUserDataContainer():
if bc[c4d.DESC_NAME] == SHAPE_UD_STR:
return emitter[c4d.ID_USERDATA, descid[1].id]
return None

def create_cloner(doc):
cloner = c4d.BaseObject(Ocloner)
doc.InsertObject(cloner)
doc.AddUndo(c4d.UNDO_NEW, cloner)
return cloner

def set_tp_cloner(doc, cloner, shape):
cloner[c4d.ID_MG_MOTIONGENERATOR_MODE] = c4d.ID_MG_MOTIONGENERATOR_MODE_OBJECT
cloner[c4d.MG_OBJECT_LINK] = doc.GetParticleSystem().GetRootGroup()
shape_clone = shape.GetClone(c4d.COPYFLAGS_0)
doc.AddUndo(c4d.UNDOTYPE_NEW, shape_clone)
shape_clone.InsertUnder(cloner)
shape_clone[c4d.ID_BASEOBJECT_VISIBILITY_EDITOR] = c4d.OBJECT_UNDEF
shape_clone[c4d.ID_BASEOBJECT_VISIBILITY_RENDER] = c4d.OBJECT_UNDEF

def cache_mograph(cloner):
cache_tag = c4d.BaseTag(c4d.ID_MOBAKETAG)
cloner.InsertTag(cache_tag)
c4d.DrawViews(c4d.DRAWFLAGS_ONLY_ACTIVE_VIEW | c4d.DRAWFLAGS_NO_THREAD |
c4d.DRAWFLAGS_NO_REDUCTION | c4d.DRAWFLAGS_STATICBREAK)
c4d.CallButton(cache_tag, c4d.MGCACHETAG_BAKESEQUENCE)

def disable_emitter(emitter):
for descid, bc in emitter.GetUserDataContainer():
if bc[c4d.DESC_NAME] == ON_UD_STR:
doc.AddUndo(c4d.UNDOTYPE_CHANGE_SMALL, emitter)
emitter[c4d.ID_USERDATA, descid[1].id] = False


def bake_tp(doc, emitter):
shape = get_shape(emitter)
if not shape:
gui.MessageDialog('Please select a TP Emitter object with a Particle Shape object.')
return
cloner = create_cloner(doc)
set_tp_cloner(doc, cloner, shape)
cache_mograph(cloner)
disable_emitter(emitter)

def main():
if not op:
gui.MessageDialog('Please select a TP Emitter Null object.')
return
bake_tp(doc, op)
c4d.EventAdd(c4d.EVENT_0)

if __name__=='__main__':
main()


http://www.xsyann.com/fc4d/bake_tp.py

Il suffit de sélectionner l'objet Null TP Emitter puis de faire Script > Users Scripts > Run Script... > bake_tp.py pour baker automatiquement l'émetteur TP.

Restic1
24/03/2016, 15h22
Hé bien Yann, je t'avouerai qu'au vu de ta réponse sur le forum j'étais sur à 90% que c'est toi que j'avais eu à la ferme:icon_clap:
Mais il restait 10% de doute alors je me suis abstenu.
En tout cas, encore un grand merci.
Cerise sur le gâteau: un script pour automatiser tout ça. Que dire de plus:icon_prie: