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.
% HOMEDRIVE %% HOMEPATH% \ Documents \ houdini version \ scripts \ python
und es wird automatisch erkannt (erstellen Sie es, wenn es nicht existiert).** Bei der Implementierung auf HDA ** Gehen Sie zur Registerkarte HDA ** Type Properties **> ** Scripts ** und ändern Sie den ** Event Handler ** in ** Python Module **. Dadurch wird das Python-Codefeld auf der rechten Seite aktiviert, in das Sie den Code __ eingeben können, um den Verlauf auf die folgenden __lamp-Parameter anzuwenden.
** Bei der Implementierung in die Parameter eines vorhandenen Knotens ** Klicken Sie im Houdini-Menü auf ** Windows **> ** Python Source Editor **, um den Python Source Editor zu starten, und geben Sie den Code ** ein, um die Abstufung auf die ** Lampenparameter unten im Codeeingabefeld anzuwenden.
# -*- 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)
** Für HDA **
hou.phm().rampColorPicker(kwargs['node'].parm('ramp'), threshold=0.05)
** Für bereits vorhandene Knoten **
hou.session.rampColorPicker(kwargs['node'].parm('ramp'), threshold=0.05)
parm ('ramp')
in den Namen des Ziellampenparameters.
Je niedriger der Schwellenwert ist, desto genauer ist er, aber desto mehr Schlüssel sind vorhanden.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.
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