[PYTHON] So implementieren Sie eine Verlaufsauswahl in Houdini

Einführung

Ich werde Ihnen zeigen, wie Sie einen Gradienten-Picker wie Substance Designer implementieren, den Mr. Ando neulich in PySide Study Group in Houdini angekündigt hat. Einführung von Andos Gradient Picker, Kommentarartikel

Bei tatsächlicher Verwendung wird die vom Picker aufgenommene Abstufung auf die Lampenparameter angewendet, wie in der folgenden Abbildung gezeigt. In der folgenden Abbildung wird das Bild in den Netzwerkeditor geladen, aber Sie können die Farbe überall auf dem Bildschirm abrufen.

Implementierungsmethode

  1. Laden Sie den Code von der unten stehenden URL herunter. https://snippets.cacher.io/snippet/2c7496d1dbbdc093033c
  2. Verschieben Sie die heruntergeladene ** gradationPicker.py ** in einen Ordner, in dem Houdini Python lesen kann. Wenn Sie es nicht wissen, kopieren Sie es nach % HOMEDRIVE %% HOMEPATH% \ Documents \ houdini version \ scripts \ python und es wird automatisch erkannt (erstellen Sie es, wenn es nicht existiert).
  3. Ab hier besteht ein geringfügiger Unterschied zwischen der Implementierung in HDA und der Implementierung in Parametern vorhandener Knoten.

Code, der einen Gradienten auf die Rampenparameter anwendet

# -*- coding: utf-8 -*-

import hou
from PySide2.QtCore import Qt

from gradationPicker import ColorPick

class _GCProtector(object):
    widgets = []

def rampColorPicker(parm, threshold=0.05):
    def setRampColor(colors):
        #Argumentfarben sind[Verlaufsposition,Farbe]Liste mit
        curveKeys = []
        curveValues = []
        #Teilen Sie die zweidimensionale Liste in kurvenschlüssel und kurvenwerte
        for pos, color in colors:
            curveKeys.append(pos)
            #2, weil der Farbraum von PySide sRGB und Houdini linear ist.Quadrat und konvertieren
            curveValues.append([(ch / 255.0) ** 2.2 for ch in color])
        linears = [hou.rampBasis.Linear] * len(colors)
        ramp = hou.Ramp(linears, curveKeys, curveValues)
        parm.set(ramp)

    picker = ColorPick()
    #Wird im Vordergrund angezeigt, damit sich der Fokus nicht verschiebt
    picker.setWindowFlags(Qt.WindowStaysOnTopHint)
    #Legen Sie einen Schwellenwert für den festgestellten Farbunterschied fest
    picker.threshold = threshold
    #Lassen Sie das Hauptfenster der Auswahl den Bildschirm ausfüllen
    picker.showFullScreen()
    #Führen Sie eine Funktion aus, wenn Sie die Maus loslassen
    picker.getGradation.connect(setRampColor)
    #Verarbeitung, um Speicherplatz zu vermeiden und bei normaler Anzeige sofort zu verschwinden
    _GCProtector.widgets.append(picker)
  1. Erstellen Sie abschließend eine Schaltfläche, um diesen Code auszuführen.
  2. Geben Sie den folgenden Code in das Feld Rückrufskript der erstellten Schaltfläche ein.

Wenn Sie ein Symbol für eine Schaltfläche festlegen möchten, geben Sie BUTTONS_secondary_colors in das Feld Schaltflächensymbol ein. Ein solches Symbol wird hinzugefügt.

Wenn Sie jetzt die Taste drücken, befinden Sie sich im Verlaufsauswahlmodus. Ziehen Sie also eine Farbe und wählen Sie sie aus.

Schließlich

So implementieren Sie die Verlaufsauswahl in Houdini. PySide kann viele Dinge und macht Spaß. Übrigens können Sie durch Ändern des Gradationswählers auch eine Funktion erstellen, mit der Sie die Kurve des Lampenparameters wie unten gezeigt von Hand schreiben können.

Recommended Posts

So implementieren Sie eine Verlaufsauswahl in Houdini
So implementieren Sie vorläufig einen Fortschrittsbalken in einer Skriptsprache
Wie bekomme ich Stacktrace in Python?
So löschen Sie einen Taple in einer Liste (Python)
So implementieren Sie Rails-Helfer-ähnliche Funktionen in Django
Einbetten von Variablen in Python-Strings
So implementieren Sie Shared Memory in Python (mmap.mmap)
So erstellen Sie eine JSON-Datei in Python
So benachrichtigen Sie Discord-Kanäle in Python
So implementieren Sie einen neuen CPUFreq-Prozessortreiber
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
So erstellen Sie eine Rest-API in Django
Wie schreibe ich ein benanntes Tupeldokument im Jahr 2020?
So zählen Sie Zahlen in einem bestimmten Bereich
So lesen Sie Dateien in verschiedenen Verzeichnissen
Wie man eine öffentliche Funktion in Pytest verspottet
So legen Sie das Schema in den Django-Datenbankeinstellungen fest
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Ich möchte Timeout einfach in Python implementieren
[Python] So erweitern Sie Variablen in einer Zeichenfolge
Ein Memorandum zur Verwendung von Keras 'keras.preprocessing.image
So zeigen Sie DataFrame als Tabelle in Markdown an
So führen Sie einen Befehl mit einem Unterprozess in Python aus
So verweisen Sie auf statische Dateien in einem Django-Projekt
[Linux] Wie Sie Ihre IP in eine Variable einfügen
So rufen Sie eine Funktion auf
Wie man ein Terminal hackt
Wie man in Python entwickelt
Ich habe versucht, einen eindimensionalen Zellautomaten in Python zu implementieren
So schneiden Sie ein Block-Multiple-Array aus einem Multiple-Array in Python
So importieren Sie NoteBook als Modul in Jupyter (IPython)
So geben Sie ein Dokument im PDF-Format mit Sphinx aus
Eine Geschichte darüber, wie man einen relativen Pfad in Python angibt.
Verwendung der Methode __call__ in der Python-Klasse
So importieren Sie Dateien in Python an eine beliebige Stelle
So definieren Sie mehrere Variablen in einer Python for-Anweisung
Hinweise zum Laden einer virtuellen Umgebung mit PyCharm
Ich habe versucht "Wie man eine Methode in Python dekoriert"
So entwickeln Sie in einer virtuellen Python-Umgebung [Memo]
So generieren Sie eine Abfrage mit dem IN-Operator in Django
So überprüfen Sie, ob ein Wert in einem Aufzählungstyp vorhanden ist
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
So implementieren Sie Python EXE für Windows mit Docker-Container
So erhalten Sie eine Liste der integrierten Ausnahmen für Python
So importieren Sie NoteBook als Modul in Jupyter (IPython)
Eine Geschichte über den Versuch, private Variablen in Python zu implementieren.
Wie erstelle ich eine japanisch-englische Übersetzung?
[Python] Wie man PCA mit Python macht
Umgang mit Sitzungen in SQLAlchemy
So setzen Sie einen symbolischen Link
Wie man nüchtern mit Pandas schreibt
Implementieren Sie einen Datumssetzer in Tkinter
Verwendung von SQLite in Python
Wie man einen lockeren Bot macht
So erstellen Sie ein Conda-Paket
Wie erstelle ich einen Crawler?
So erstellen Sie eine rekursive Funktion