[PYTHON] Didacticiel complémentaire de Blender avec Hy

Cet article est l'article du 8ème jour de Lisp Advent Carendar 2019.

Résumé de cet article

Créons un module complémentaire pour Blender, un outil DCC, en utilisant Hy, un dialecte Lisp de type Clojure qui fonctionne sur Python.

Public cible

Environnement

Ce qui suit est pour Windows 10. Si vous utilisez un autre système d'exploitation, veuillez le lire comme il convient (je vais vous expliquer un peu).

Construction de l'environnement Python

Tout d'abord, installez Python 3 (64 bits). Pour le moment (décembre 2019), la dernière série 3.8 ou la précédente 3.7 est bonne. Supprimez le programme d'installation du site Web officiel et installez-le. Veillez à ne pas installer la version 32 bits.

Une fois Python 3 installé, créez un environnement Python virtuel, venv '', et installez Hy dedans pour garder l'environnement propre. Cette fois, créez-le avec le nom venv_hy_blender``` dans le répertoire `` .virtualenvs``` sous le répertoire de base. La dernière version, Hy 0.17.0, n'implémente pas encore l'annotation de type, installez donc la dernière branche principale de GitHub.

Dans Windows 10 cmd, tapez:

$ cd %USERPROFILE%
$ mkdir .virtualenvs
$ cd .virtualenvs
$ py -3 -m venv venv_hy_blender
$ cd venv_hy_blender
$ Scripts\activate.bat
$ python -m pip install git+https://github.com/hylang/hy.git
$ deactivate.bat

pyEst une commande Windows uniquement, donc pour les autres systèmes d'exploitationpy -3Remplacez par la commande de démarrage de l'interpréteur python 3 sur cet os (généralementpython3Oupythonest). De plus, la commande activate pour activer l'environnement virtuel diffère selon l'OS et le Shell, donc reportez-vous à "Commandes pour activer l'environnement virtuel" dans le lien "venv --- Créer un environnement virtuel" ci-dessous.

Construction de l'environnement Blender

Déposez et installez le dernier programme d'installation de Blender 2.81 à partir du site officiel.

Créer un module complémentaire pour Blender

Vous trouverez ci-dessous une réécriture Hy du code Python Bringing It All Together du didacticiel du module complémentaire Blender.

Si vous utilisez Python, vous constaterez que vous pouvez écrire Python presque tel quel. Supposons que vous créez ceci dans le répertoire blender_sandbox```.

La seule annotation de type qui ne figure pas dans la documentation actuelle de Hy est `` (^ type nom de la variable) ''. Pour plus de détails, reportez-vous à "Implémenter les annotations PEP 3107 et 526".

cursor_array.hy


(import bpy)

(setv bl-info {
  :name "Cursor Array"
  :blender (, 2 81 0)
  :category "Object"
})


(defclass ObjectCursorArray [(. bpy types Operator)]
  "Object Cursor Array"
  (setv bl-idname "object.cursor_array")
  (setv bl-label "Cursor Array")
  (setv bl-options #{"REGISTER" "UNDO"})

  (^((. bpy props IntProperty) :name "Steps" :default 2 :min 1 :max 100) total)

  (defn execute [self context]
    (setv scene (. context scene))
    (setv cursor (. scene cursor location))
    (setv obj (. context active-object))

    (for [i (range (. self total))]
      (setv obj-new ((. obj copy)))
      ((. scene collection objects link) obj-new)

      (setv factor (/ i (. self total)))
      (setv (. obj-new location) (+ (* (. obj location) factor) (* cursor (- 1.0 factor)))))

    #{"FINISHED"}))


(defn menu_func [self context]
  ((. self layout operator) (. ObjectCursorArray bl-idname)))

; store keymaps here to access after registration
(setv addon-keymaps [])


(defn register []
  ((. bpy utils register-class) ObjectCursorArray)
  ((. bpy types VIEW3D-MT-object append) menu-func)

  ;; handle the keymap
  (setv wm (. bpy context window-manager))
  ;; Note that in background mode (no GUI available), keyconfigs are not available either,
  ;; so we have to check this to avoid nasty errors in background case.
  (setv kc (. wm keyconfigs addon))
  (when kc
    (setv km ((. wm keyconfigs addon keymaps new) :name "Object Mode" :space-type "EMPTY"))
    (setv kmi ((. km keymap-items new) (. ObjectCursorArray bl-idname) "T" "PRESS" :ctrl True :shift True))
    (setv (. kmi properties total) 4)
    ((. addon-keymaps append) (, km kmi))))

(defn unregister []
  ;; Note: when unregistering, it's usually good practice to do it in reverse order you registered.
  ;; Can avoid strange issues like keymap still referring to operators already unregistered...
  ;; handle the keymap
  (for [(, km kmi) addon-keymaps]
    ((. km keymap-items remove) kmi))
  ((. addon-keymaps clear))

  ((. bpy utils unregister-class) ObjectCursorArray)
  ((. bpy types VIEW3D-MT-object remove) menu-func))


(when (= --name-- "__main__")
    (register))

Créer un fichier batch pour démarrer Blender

blender_Blender2 dans le répertoire sandbox.81.Créez un fichier de commandes de démarrage avec le nom bat.


```venv_hy_blender```de```site-packages```Et l'ajout créé-sur le répertoire (```blender_sandbox```) Est un fichier batch qui démarre Blender.

```site-packages```Est le répertoire d'installation des modules tiers de python, que possède python lui-même et son environnement virtuel.
 À l'origine, l'environnement virtuel est commuté avec ```activate``` et `` `deactivate```, et le` `site-packages``` est utilisé, mais cette fois Blender 2.81 intégré Python 3.7. Je fais quelque chose d'un peu méchant pour importer et utiliser Hy dans `` `` venv_hy_blender``` à 4.


#### **`dos:Blender2.81.bat`**

@ECHO OFF SETLOCAL

SET THISDIR=%~dp0 SET PYTHONPATH=%THISDIR%;%USERPROFILE%.virtualenvs\venv_hy_blender\Lib\site-packages;%PYTHONPATH% SET BLENDER_EXE="C:\Program Files\Blender Foundation\Blender 2.81\blender.exe"

%BLENDER_EXE%


# Courir
 Lancez Blender à partir de ce fichier batch et sélectionnez `` Scripting '' dans la barre de menu ci-dessus.
 Pour importer le script ci-dessus depuis la console, entrez ce qui suit:

```python
>>> import hy
>>> import cursor_array
>>> cursor_array.register()
2019-12-08_13h08_05.png

Vous pouvez maintenant exécuter `Cursor Array``` depuis` Layout> Object```. Faisons le.

2019-12-08_12h58_51.png 2019-12-08_13h09_11.png 2019-12-08_13h09_18.png 2019-12-08_13h09_25.png 2019-12-08_13h09_35.png 2019-12-08_13h09_45.png

Oui.

Résumé / Supplément

Recommended Posts

Didacticiel complémentaire de Blender avec Hy
Code de lecture de ce que vous faites avec le didacticiel LSTM de Theano
Tutoriel CIFAR-10 avec Keras
Apprenez librosa avec un tutoriel 1
Lancez-vous avec Django! ~ Tutoriel ⑤ ~
Essayez la programmation GUI avec Hy
Lancez-vous avec Django! ~ Tutoriel ④ ~
Lancez-vous avec Django! ~ Tutoriel ⑥ ~