[PYTHON] Wie viele Knoten gibt es?

Houdini Adventskalender 2016 Tag 19 Artikel.

Der Inhalt ist wie der Titel, also ... An diesem Punkt können diejenigen, die "Ah, hoch" sagen, gebeten werden, es zu schließen. Wenn Sie einen anderen besseren Weg kennen, wäre ich Ihnen dankbar, wenn Sie es mir heimlich sagen könnten.

Erraten des Knotentyps

Werfen wir einen Blick in das Hou-Modul. Von der von dir zurückgegebenen Liste scheint es so zu sein, wenn "NodeType" enthalten ist Ich werde es so untersuchen.

for i in dir(hou):
    if 'NodeType' in i:
        print( i )

Dann

NodeType

Es ist ziemlich viel zurückgekehrt. Es scheint, dass die erste Hälfte und _swigregister unterschiedlich sind. Es ist interessant, dass es "Knotentyp" und "Knotentypkategorie" gibt. Ich denke, dass Letzteres eher so ist.

inspect.getmembers

Schauen wir uns nun die getmembers des Inspektionsmoduls an.

import inspect
for i in inspect.getmembers(hou):
    if 'NodeType' in i[0]:
        print i
getmembers

Das NodeTypeCategory-System scheint eine ** integrierte Funktion ** auf der ganzen Linie zu sein. Diese Funktionen geben den Typ "NodeTypeCategory" zurück.

type( hou.sopNodeTypeCategory() )
<class 'hou.NodeTypeCategory'>

NodeTypeCategory

Im Typ NodeTypeCategory habe ich n eingegeben, um den Namen vorerst anzuzeigen, und dann wurde auch "nodeTypes" vorgeschlagen. name_nodeTypes

sopCategory.name()
'Sop'

sopCategory.nodeTypes()

Der Name ist wie erwartet, aber Die NodeTypes, die ich übrigens gefunden habe, sehen so aus! nodeTypes

Ich hatte ein wenig Angst, aber jetzt kann ich die Knoten in jeder Knotenkategorie überprüfen.

Zählen Sie den Inhalt von nodeTypes

import inspect
for i in inspect.getmembers(hou):
    if 'NodeType' in i[0]:
        if inspect.isbuiltin(i[1]):
            try:
                nodetypecategory= i[1]()
            except:
                continue
            nts = nodetypecategory.nodeTypes()
            print( nodetypecategory.name(),len( nts ) )

Der Versuch - außer in der Mitte - wird von den Personen des Swigregisters bereitgestellt, um einen Fehler zu verursachen. Die zweite Zeile von unten empfing das Wörterbuch, das das Ergebnis von nodeTypes war, und druckte die Länge des Wörterbuchs zusammen mit dem Kategorienamen.

count

Ergebnis…… ~ ~ Ich verstehe, dass jedes Net-System nur einen Knoten hat, Gibt es so viel SOP, DOP, VOP usw.? ?? ?? Ist das so.

Ich werde das Ergebnis vorerst veröffentlichen. Es ist H15.5.632.

('ChopNet', 1)
('Chop', 103)
('CopNet', 1)
('Cop2', 145)
('Dop', 435)
('Object', 146)
('Particle', 1)
('Pop', 68)
('Driver', 42)
('Shop', 205)
('Sop', 430)
('VopNet', 18)
('Vop', 816)

Zählen Sie den Inhalt von nodeTypes (insbesondere CHOP).

Ich habe mich entschlossen, ** CHOP ** zu vergleichen, was relativ einfach zu zählen scheint. Das Ergebnis des Skripts ist "103" wie oben.

chopNodes = hou.chopNodeTypeCategory().nodeTypes()
sorted( chopNodes.keys() )
スクリーンショット 2016-12-19 23.22.11.png

Auf der Houdini-Benutzeroberfläche ...

CHOP

4 Spalten, 25 Zeilen. ** Sie können sogar multiplizieren ** Ich kann 3 Knoten " for "," popnet" und " vop phop type "auf der Benutzeroberfläche nicht finden.

Wenn Sie sich jedoch die Online-Dokumentation ab H12 ansehen, gibt es "for" CHOP http://sidefx.jp/doc/nodes/chop/for.html Es kann gefolgert werden, dass diese zurückgelassen werden, um die Kompatibilität mit früheren Szenendaten aufrechtzuerhalten. Ist es so, dass die Menge an VOP so groß ist?

Wie filtert man also nur diesen Knoten mit einem Skript? Es scheint, dass es meine nächsten Hausaufgaben sein werden.

Zusammenfassung

Der Vorschlag hat mir geholfen. Praktisch! !!

Als nächstes folgt Yone80 @ githubs "Transformieren, um ein quadratisches Polygon anzupassen".

Recommended Posts

Wie viele Knoten gibt es?
Da es viele Erdbeben gibt, erfahren Sie mehr über die Geschichte des Erdbebens
[Harlem] Es gibt zu viele zur Auswahl! 13 Möglichkeiten zur Berechnung des Umfangs π in Python
So schreiben Sie eine Zeichenfolge, wenn Python mehrere Zeilen enthält