Divers scripts - Bouts de code

Ici on parle des scripts

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

Divers scripts - Bouts de code

Message par cedric » 15 Juil 2014, 15:28

Yop !

Je vais poster ici les divers scripts que j'aurai fait, n'hésitez pas à en mettre si vous en avez ;)

Mon premier, le but est de placer le pivot de l'objet sur une sélection, vertex, edge ou face.
Pas le cursor, juste le pivot.
Car souvent je dois placer le cursor sur ma sélection, ensuite placer le pivot de l'objet sur le cursor.

Ce script place donc le pivot sur la sélection et laisse le cursor à sa place.

Image

Voici le code de base :

Code : Tout sélectionner
        saved_location = bpy.context.scene.cursor_location.copy()
        bpy.ops.view3d.snap_cursor_to_selected()
        bpy.ops.object.mode_set(mode = 'OBJECT')
        bpy.ops.object.origin_set(type='ORIGIN_CURSOR')
        bpy.context.scene.cursor_location = saved_location


La version operator simple pour l'appeller avec la commande 'search'

Code : Tout sélectionner
import bpy 

     
class PivotToSelection(bpy.types.Operator): 
    bl_idname = "object.pivot2selection" 
    bl_label = "Pivot To Selection" 
 
    def execute(self, context): 
        saved_location = bpy.context.scene.cursor_location.copy()
        bpy.ops.view3d.snap_cursor_to_selected()
        bpy.ops.object.mode_set(mode = 'OBJECT')
        bpy.ops.object.origin_set(type='ORIGIN_CURSOR')
        bpy.context.scene.cursor_location = saved_location
        return {'FINISHED'} 
 
def register(): 
    bpy.utils.register_class(PivotToSelection) 
 
if __name__ == "__main__": 
    register()


Et la version pour un custom menu :

Code : Tout sélectionner
class PivotToSelection(bpy.types.Operator): 
    bl_idname = "object.pivot2selection" 
    bl_label = "Pivot To Selection" 
 
    def execute(self, context): 
        saved_location = bpy.context.scene.cursor_location.copy()
        bpy.ops.view3d.snap_cursor_to_selected()
        bpy.ops.object.mode_set(mode = 'OBJECT')
        bpy.ops.object.origin_set(type='ORIGIN_CURSOR')
        bpy.context.scene.cursor_location = saved_location
        return {'FINISHED'} 
 
bpy.utils.register_class(PivotToSelection)


Les commandes pratique là c'est :
Code : Tout sélectionner
bpy.context.scene.cursor_location = saved_location

et
Code : Tout sélectionner
saved_location = bpy.context.scene.cursor_location.copy()


Ca permet de copier coller la position du cursor.
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7057
Inscription : 03 Août 2013, 21:36

Re: Divers scripts - Bouts de code

Message par cedric » 15 Juil 2014, 15:46

En voilà deux autres crées par lapineige.

Un show wire qui l'affiche sur tous les objets de la scène et qui active le show all edges.

Image

Code : Tout sélectionner
#Wire on all objects
class Wire_All(bpy.types.Operator):
    """Tooltip"""
    bl_idname = "object.simple_operator"
    bl_label = "Simple Object Operator"

    @classmethod
    def poll(cls, context):
        return context.active_object is not None

    def execute(self, context):
       
        for obj in bpy.data.objects:
            if obj.show_wire:
                obj.show_all_edges = False
                obj.show_wire = False
            else:
                obj.show_all_edges = True
                obj.show_wire = True
        return {'FINISHED'}



bpy.utils.register_class(Wire_All)


Et le show/hide Grid qui cache la grille ainsi que les axes.

Image

Code : Tout sélectionner
#Grid show/hide with axes

class ToogleGridAxis(bpy.types.Operator):
    """Tooltip"""
    bl_idname = "scene.tooglegridaxis"
    bl_label = "Toogle Grid and Axis in 3D view"

    @classmethod
    def poll(cls, context):
        return context.active_object is not None

    def execute(self, context):
        bpy.context.space_data.show_axis_y = not bpy.context.space_data.show_axis_y
        bpy.context.space_data.show_axis_x = not bpy.context.space_data.show_axis_x
        bpy.context.space_data.show_floor = not bpy.context.space_data.show_floor
        return {'FINISHED'}
   
bpy.utils.register_class(ToogleGridAxis)
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7057
Inscription : 03 Août 2013, 21:36

Re: Divers scripts - Bouts de code

Message par cedric » 15 Juil 2014, 16:30

Aligner des vertex sur l'axe X.

- Scale en X à 0 pour bien aligner les vertex.
- move à 0 en X pour que ce soit bien au centre de la grille.

Image

Script de lapineige

Code : Tout sélectionner
import bpy

#passer en mode object
bpy.ops.object.mode_set(mode = 'OBJECT')
#appliquer les transforms
bpy.ops.object.transform_apply(location=True, rotation=True, scale=True)

#faire la liste des vertex
for vert in bpy.context.object.data.vertices:
    if vert.select: #si des vertex sont sélectionnés
        vert.co[0] = 0 #déplacer leurs coordonnées en X (x=o, y=1, z=2) à 0

#repasser en Edit mod ensuite.
bpy.ops.object.editmode_toggle()
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7057
Inscription : 03 Août 2013, 21:36

Re: Divers scripts - Bouts de code

Message par lapineige » 15 Juil 2014, 18:25

Petite précision: comme indiqué dans le code, en changeant la valeur vert.co[VALEUR] de 0 à 2, on change l'axe d'effet.

@cédric: je vais tenter comme prévu l'add-on de retopo dont tu m'a parlé 8-)
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: Divers scripts - Bouts de code

Message par cedric » 15 Juil 2014, 19:07

Cool ^^

Je vais me faire d'autres scripts ce soir !
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7057
Inscription : 03 Août 2013, 21:36

Re: Divers scripts - Bouts de code

Message par lapineige » 15 Juil 2014, 19:47

Mince je ne les verrai pas ^^
Heureusement que je m'attaque à du lourd, sinon tu vas rapidement me dépasser :lol:
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: Divers scripts - Bouts de code

Message par cedric » 15 Juil 2014, 19:51

Oula, j'en doute fortement ^^
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7057
Inscription : 03 Août 2013, 21:36

Re: Divers scripts - Bouts de code

Message par cedric » 15 Juil 2014, 20:57

Un truc tout con, en général je n'ai aucune cam dans ma scène, donc j'en crée une, je me met dedans l'active lock cam to view, je me déplace pour bien la placer.

En un clic c'est mieux ^^

Image

Code : Tout sélectionner
class AddCameraToView(bpy.types.Operator): 
    bl_idname = "object.camera_add_2_view" 
    bl_label = "Add Camera To View" 
 
    def execute(self, context): 
        bpy.ops.object.camera_add(view_align=True, enter_editmode=False, location=(0, 0, 0), rotation=(0.989701, 0.0124871, 0.66391), layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))
        bpy.ops.view3d.camera_to_view()
        bpy.context.space_data.lock_camera = True

        return {'FINISHED'} 
 
bpy.utils.register_class(AddCameraToView)


Pour l'ajouter en layout.operator dans votre menu :

Code : Tout sélectionner
layout.operator("object.camera_add_2_view", text="Camera2View", icon='OUTLINER_OB_CAMERA')
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7057
Inscription : 03 Août 2013, 21:36

Re: Divers scripts - Bouts de code

Message par lapineige » 16 Juil 2014, 08:11

M'enfin il te manquent quelques connaissances fondamentale en python, mais la t'a compris comment marche Blender, tu peux déjà fait plein de trucs tout cons mais tellement pratique. ;)
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: Divers scripts - Bouts de code

Message par cedric » 16 Juil 2014, 08:26

J'en dis qu'au début oui ^^
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7057
Inscription : 03 Août 2013, 21:36

Re: Divers scripts - Bouts de code

Message par lapineige » 16 Juil 2014, 08:31

Mais tu progresse. Je te dis un peu de pratique et de python pur et tu saura faire plein de choses ;)
Comme moi 8-) (lapin qui se la pète :lol:)
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: Divers scripts - Bouts de code

Message par Olive » 16 Juil 2014, 17:49

File-lui sa carotte Cédric, il la réclame depuis si longtemps :)
Avatar de l’utilisateur
Olive
 
Message(s) : 695
Inscription : 30 Sep 2013, 15:20
Localisation : Chaon (41)

Re: Divers scripts - Bouts de code

Message par cedric » 16 Juil 2014, 18:28

Quand il m'aura pondu quelques scripts ^^
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7057
Inscription : 03 Août 2013, 21:36

Re: Divers scripts - Bouts de code

Message par BaRe » 21 Juil 2014, 10:19

Salut !

je vient de découvrir ce forum à travers les tutos sur youtube, vraiment chouettes et j'ai donc décidé de m'y inscrire ;)

j'ai étudié l'addon Lock camera to View, en quoi cela change t-il d'aller dans properties->view->lock camera to view, à part rajouter un bouton ? (bon moi j'aime bien les boutons :-P)

celui-là viewtopic.php?f=18&t=603#p7564 m'intéresse particulièrement, j'essaie de faire un script qui crée une caméra active, en fonction de la position dans la vue 3D en un clic.

Est-ce que c'est ce qu'il-fait ?

Seulement je patauge un peu sur la manière dont on utilise les lignes de codes sur ce forum, j'ai premièrement tenté un bête copier-coller du code en frame dans l'éditeur de texte de blender et lancer un run script, mais j'obtiens des erreurs. Je commence tout juste à m'intéresser

j'ai fait un screencast vite-fait https://dl.dropboxusercontent.com/u/700 ... 20View.avi

au python (depuis le temps qu'on m'y pousse à essayer) à travers ces tutos ceux de matte real et cette page http://python.developpez.com/cours/pythonneries/?page=i
Avatar de l’utilisateur
BaRe
 
Message(s) : 31
Inscription : 21 Juil 2014, 05:32
Localisation : Lausanne

Re: Divers scripts - Bouts de code

Message par cedric » 21 Juil 2014, 11:00

j'ai étudié l'addon Lock camera to View, en quoi cela change t-il d'aller dans properties->view->lock camera to view, à part rajouter un bouton ? (bon moi j'aime bien les boutons :-P)


C'est pour éviter d'avoir à aller dans le panneau N et de chercher le bouton. Plus rapide quoi ^^

celui-là viewtopic.php?f=18&t=603#p7564 m'intéresse particulièrement, j'essaie de faire un script qui crée une caméra active, en fonction de la position dans la vue 3D en un clic.

Est-ce que c'est ce qu'il-fait ?


Oui, il crée une cam en fonction de la position de la vue, mais il bug, je dois le corriger.

Seulement je patauge un peu sur la manière dont on utilise les lignes de codes sur ce forum, j'ai premièrement tenté un bête copier-coller du code en frame dans l'éditeur de texte de blender et lancer un run script, mais j'obtiens des erreurs. Je commence tout juste à m'intéresser


Pour mettre du code tu dois utiliser les balises [code] et mettre ton code entre elles.



Pour que ton script fonctionne, il faut ajouter import bpy avant ton code sinon, ça ne fonctionne pas.
Là tu as une erreur d'indentation du fait du copier coller.

Haa et tu confonds les deux codes, celui que tu as copier c'est pour ajouter une cam depuis la vue et le bouton cam view c'est pour pouvoir tourner avec la caméra active.
Cédric Lepiller, Freelance 3D Pitiwazou.com, Mes Addons, Asset Management, Speedflow
Avatar de l’utilisateur
cedric
Administrateur
 
Message(s) : 7057
Inscription : 03 Août 2013, 21:36

Suivant

Retour vers Scripts - Python - OSL

Qui est en ligne ?

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

cron