Simulation atténuation

Ici on parle d'animation

Modérateurs : frez, Yadoob, stilobique, Matpi, ModSquad

Re: Simulation atténuation

Message par lapineige » 20 Juin 2015, 11:41

Ok je te le fais :)
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3717
Inscription : 25 Juin 2014, 07:06

Re: Simulation atténuation

Message par lapineige » 20 Juin 2015, 12:06

Hop déjà je t'ai fait un script super basique pour te dépanner en attendant un truc plus pratique:
Code : Tout sélectionner
import bpy

for obj in bpy.context.selected_objects:
    obj.rigid_body.enabled = False
    obj.keyframe_insert(data_path="rigid_body.enabled")


Dans ce cas il va décocher dynamic pour tout tes objets, et mettre une clé d'animation.
Pour supprimer la clé:
Code : Tout sélectionner
import bpy

for obj in bpy.context.selected_objects:
    obj.keyframe_delete(data_path="rigid_body.enabled")

Pour réactiver dynamic:
Code : Tout sélectionner
import bpy
for obj in bpy.context.selected_objects:
    obj.rigid_body.enabled = True


Cette aprem je te fait des boutons pour faire tout ça ;)
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3717
Inscription : 25 Juin 2014, 07:06

Re: Simulation atténuation

Message par Corentin3D » 20 Juin 2015, 14:25

Salute !

Ah t'es sympa comme lapin toi ;)

Désolé de ne pas avoir vu avant, ce week-end j'étains le PC / Blender avant de démarrer un taff lundi et semaine prochaine donc les week-end vont se faire rare. Je passe une tête.

Du coup, comment ca fonctionne ton code ?

-- Un gars m'a aider a faire justement un script (Ilyes Daoudi), son script marche bien mais le résultat c'est pas encore ca, je voulais attendre lundi avant de le poster et demander ici ou sur le BC si il y en avait qui voulait bien l'améliorer.

En gros son script c'est :

Tu as une animation baké, tu modifie l'axe et la force, tu renommes ton projectil et en gros l'animation se joue progressivement par rapport a la distance du projectile.

Le truc c'est que ca prend pas en compte la vitesse d'animation / et du projectile. Du coup ca créer un décalage entre l'éclaté et le projectile. Pas grave, tu modifies la courbe de ton projectile, mais en faisant ainsi ca va créer un décalage de vitesse et du coup on obtient pas un truc réaliste.

Code : Tout sélectionner
#Partagé sous licence Creative Commons CC-BY-NC-SA
#Author: Ilyes DAOUDI
#-----------------------------------
import bpy

ref = bpy.data.objects['reference'].location[1] #Objet de référence
mult = 0.75 #Facteur d'effet

for obj in bpy.context.selected_objects:
   
    #Définition de quelques variables
    nom = obj.name #Nom de chaque objet
    posY = bpy.data.objects[nom].location[1] #Position de chaque objet
    delta = posY - ref #Différence permettant de définir la force de l'effet
   
    #Application de l'effet à chaque courbe...
    for a in bpy.data.actions[nom+'Action'].fcurves:
        for kf in a.keyframe_points: #... sur chaque keyframe...
            kf.co[0] += delta*mult  #... sur l'axe vertical
               
#-----------------------------------
CB3D - Créateur de pixels - http://www.corentin-bechet.com - Infographiste & Formateur 3D - facebook.com/CB3DSTUDIO/
Avatar de l’utilisateur
Corentin3D
 
Message(s) : 636
Inscription : 27 Août 2013, 22:30

Re: Simulation atténuation

Message par lapineige » 21 Juin 2015, 18:22

Bon dans l'histoire j'ai zappé de te mettre le code à disposition ^^

Attention c'est un simple script (comme c'est du dépannage, j'ai eu la flemme d'en faire un add-on :mrgreen:).
Il t'affiche dans le panneau physics des boutons pour (dés)activer l'option dynamic sur toute la sélection. (ce n'est plus utile avec la 2.75, Alt+Clic fait la même chose ;))
Et deux autres te permettent d’insérer/supprimer une clé d'animation.

Code : Tout sélectionner
import bpy


class HelloWorldPanel(bpy.types.Panel):
    """"""
    bl_space_type = "VIEW_3D"
    bl_region_type = "TOOLS"
    bl_category = "Physics"
    bl_label = "Group Change"

    def draw(self, context):
        layout = self.layout
       
        row = layout.row(align=True)
        row.operator('object.multi_dynamic_enable')
        row.operator('object.multi_dynamic_disable')
       
        row = layout.row(align=True)
        row.operator('object.multi_dynamic_insert_keyframe')
        row.operator('object.multi_dynamic_delete_keyframe')

class MultiDynamicEnable(bpy.types.Operator):
    """"""
    bl_idname = "object.multi_dynamic_enable"
    bl_label = "Enable Dynamic"

    def execute(self, context):
        for obj in context.selected_objects:
            if hasattr(obj, 'rigid_body'):
                obj.rigid_body.enabled = True
        return {'FINISHED'}

class MultiDynamicDisable(bpy.types.Operator):
    """"""
    bl_idname = "object.multi_dynamic_disable"
    bl_label = "Disable Dynamic"

    def execute(self, context):
        for obj in context.selected_objects:
            if hasattr(obj, 'rigid_body'):
                obj.rigid_body.enabled = False
        return {'FINISHED'}

class MultiDynamicInsertKeyframe(bpy.types.Operator):
    """"""
    bl_idname = "object.multi_dynamic_insert_keyframe"
    bl_label = "Insert Keyframe"

    def execute(self, context):
        for obj in context.selected_objects:
            if hasattr(obj, 'rigid_body'):
                obj.keyframe_insert(data_path="rigid_body.enabled")
        return {'FINISHED'}
   
class MultiDynamicDeleteKeyframe(bpy.types.Operator):
    """"""
    bl_idname = "object.multi_dynamic_delete_keyframe"
    bl_label = "Delete Keyframe"

    def execute(self, context):
        for obj in context.selected_objects:
            if hasattr(obj, 'rigid_body'):
                obj.keyframe_delete(data_path="rigid_body.enabled")
        return {'FINISHED'}


def register():
    bpy.utils.register_class(MultiDynamicEnable)
    bpy.utils.register_class(MultiDynamicDisable)
    bpy.utils.register_class(MultiDynamicInsertKeyframe)
    bpy.utils.register_class(MultiDynamicDeleteKeyframe)
    bpy.utils.register_class(HelloWorldPanel)


def unregister():
    bpy.utils.unregister_class(MultiDynamicEnable)
    bpy.utils.unregister_class(MultiDynamicDisable)
    bpy.utils.unregister_class(MultiDynamicInsertKeyframe)
    bpy.utils.unregister_class(MultiDynamicDeleteKeyframe)
    bpy.utils.unregister_class(HelloWorldPanel)


if __name__ == "__main__":
    register()

J'ai pas le temps de me pencher sur le (très court, c'est vrai) code de Ilyes Daoudi. Je le ferais demain je pense.
Bon sinon je te ferai un driver qui active la propriété en fonction de la distance (idem, j'ai pas eu le temps).
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3717
Inscription : 25 Juin 2014, 07:06

Re: Simulation atténuation

Message par Corentin3D » 22 Juin 2015, 00:04

C'est déjà super sympa, on se re-capte demain, merci beaucoup !! :)
CB3D - Créateur de pixels - http://www.corentin-bechet.com - Infographiste & Formateur 3D - facebook.com/CB3DSTUDIO/
Avatar de l’utilisateur
Corentin3D
 
Message(s) : 636
Inscription : 27 Août 2013, 22:30

Re: Simulation atténuation

Message par Corentin3D » 22 Juin 2015, 17:49

Salut Lapi,

Je viens de tester ton script, ca fonctionne plutôt pas mal (encore merci, du coup).
Par contre j'arrive pas a trouver de quelle manière l'utiliser pour créer une simulation propre ?
Comment t'as réfléchis ca ?
CB3D - Créateur de pixels - http://www.corentin-bechet.com - Infographiste & Formateur 3D - facebook.com/CB3DSTUDIO/
Avatar de l’utilisateur
Corentin3D
 
Message(s) : 636
Inscription : 27 Août 2013, 22:30

Re: Simulation atténuation

Message par lapineige » 22 Juin 2015, 17:56

Tu disais que passer tout les objets de dynamic à statique et mettre une clé c'est galère pour un grand nombre d'objets. Donc ça fait tout d'un coup.
Je te ferais un driver qui sera plus pratique que ça ;-)
(sinon tu as le paramètre désactivation qui peut aider ;-))
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3717
Inscription : 25 Juin 2014, 07:06

Re: Simulation atténuation

Message par Corentin3D » 23 Juin 2015, 15:14

D'ac, merci ! Entre ton script et celui de Ilyes, je devrais pouvoir m'en sortir ! Merci les gars.
CB3D - Créateur de pixels - http://www.corentin-bechet.com - Infographiste & Formateur 3D - facebook.com/CB3DSTUDIO/
Avatar de l’utilisateur
Corentin3D
 
Message(s) : 636
Inscription : 27 Août 2013, 22:30

Re: Simulation atténuation

Message par lapineige » 23 Juin 2015, 15:34

Ça m'arrange un peu, j'ai pas eu le temps pour le driver, et je dois partir 1 semaine.
Mon terrier/blog: https://lapineige.fr/wp (l'ancien: le-terrier-de-lapineige.over-blog.com) | Mon GitHub: https://github.com/lapineige/Blender_add-ons | Lapineige's Tools: http://cgcookiemarkets.com/blender/all- ... ompilation
Avatar de l’utilisateur
lapineige
 
Message(s) : 3717
Inscription : 25 Juin 2014, 07:06

Re: Simulation atténuation

Message par Corentin3D » 24 Juin 2015, 03:18

Aucun problème, encore merci Lapi ;) ++
CB3D - Créateur de pixels - http://www.corentin-bechet.com - Infographiste & Formateur 3D - facebook.com/CB3DSTUDIO/
Avatar de l’utilisateur
Corentin3D
 
Message(s) : 636
Inscription : 27 Août 2013, 22:30

Précédent

Retour vers Animation

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité

cron