[PYTHON] Machen Sie das Add-On-Tutorial von Blender mit Hy

Dieser Artikel ist der 8. Tagesartikel von Lisp Advent Carendar 2019.

Zusammenfassung dieses Artikels

Erstellen wir ein Add-On für Blender, ein DCC-Tool, mit Hy, einem Clojure-ähnlichen Lisp-Dialekt, der auf Python ausgeführt wird.

Zielgruppe

Umgebung

Das Folgende ist für Windows 10. Wenn Sie ein anderes Betriebssystem verwenden, lesen Sie dies bitte entsprechend (ich werde ein wenig erklären).

Aufbau einer Python-Umgebung

Installieren Sie zunächst Python 3 (64 Bit). Im Moment (Dezember 2019) ist die neueste 3.8-Serie oder die vorherige 3.7-Serie gut. Löschen Sie das Installationsprogramm von der offiziellen Website und installieren Sie es. Achten Sie darauf, die 32-Bit-Version nicht zu installieren.

Sobald Python 3 installiert ist, erstellen Sie eine virtuelle Python-Umgebung, `` `venv```, und installieren Sie Hy darin, um die Umgebung sauber zu halten. Erstellen Sie es diesmal mit dem Namen "venv_hy_blender" im Verzeichnis ".virtualenvs" unter dem Ausgangsverzeichnis. Die neueste Release-Version, Hy 0.17.0, implementiert Type Annotation noch nicht. Installieren Sie daher den neuesten Master-Zweig von GitHub.

Geben Sie in Windows 10 cmd Folgendes ein:

$ 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

pyIst ein Nur-Windows-Befehl, also für andere Betriebssystemepy -3Ersetzen Sie das Betriebssystem durch den Startbefehl für den Python 3-Interpreter (normalerweise)python3Oderpythonist). Der Befehl zum Aktivieren der virtuellen Umgebung ist je nach Betriebssystem und Shell unterschiedlich. Weitere Informationen finden Sie unter "Befehle zum Aktivieren der virtuellen Umgebung" unter dem folgenden Link "venv --- Virtuelle Umgebung erstellen".

Konstruktion der Mixerumgebung

Löschen und installieren Sie das neueste Blender 2.81-Installationsprogramm vom offiziellen.

Add-On für Blender erstellen

Unten finden Sie eine Hy-Umschreibung des Python-Codes "Bringing It All Together" aus dem Blender-Add-On-Tutorial.

Wenn Sie Python verwenden, werden Sie feststellen, dass Sie Python fast so schreiben können, wie es ist. Angenommen, Sie erstellen dies im Verzeichnis `` `blender_sandbox```.

Die einzige Typanmerkung, die nicht in der aktuellen Dokumentation von Hy enthalten ist, ist `(^ Typvariablenname)`. Weitere Informationen finden Sie unter Implementieren von PEP 3107- und 526-Anmerkungen.

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))

Erstellen Sie eine Batchdatei zum Starten von Blender

blender_Blender2 im Sandbox-Verzeichnis.81.Erstellen Sie eine Start-Batch-Datei mit dem Namen bat.


```venv_hy_blender```von```site-packages```Und das erstellte hinzufügen-im Verzeichnis (```blender_sandbox```) Ist eine Batch-Datei, die Blender startet.

```site-packages```Ist das Installationsverzeichnis für die Module von Drittanbietern von Python, über die Python selbst und seine virtuelle Umgebung verfügen.
 Ursprünglich wurde die virtuelle Umgebung mit "Aktivieren" und "Deaktivieren" umgeschaltet, und die "Site-Pakete" werden verwendet, diesmal ist jedoch Blender 2.81 in Python 3.7 integriert. Ich mache etwas Böses, um Hy in `` `venv_hy_blender``` bis 4 zu importieren und zu verwenden.


#### **`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%


# Lauf
 Starten Sie Blender aus dieser Batch-Datei und wählen Sie in der Menüleiste oben `` `Scripting``` aus.
 Geben Sie Folgendes ein, um das obige Skript von der Konsole zu importieren:

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

Sie können jetzt `Cursor Array``` von` Layout> `` `Object ausführen. Machen wir das.

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

Ja.

Zusammenfassung / Ergänzung

Recommended Posts

Machen Sie das Add-On-Tutorial von Blender mit Hy
Lesen Sie den Code, was Sie mit Theanos LSTM-Tutorial tun
CIFAR-10-Tutorial mit Keras
Lernen Sie Librosa mit einem Tutorial 1
Fangen Sie mit Django an! ~ Tutorial ⑤ ~
Versuchen Sie die GUI-Programmierung mit Hy
Fangen Sie mit Django an! ~ Tutorial ④ ~
Fangen Sie mit Django an! ~ Tutorial ⑥ ~