どうも篠島です。今回はコンパイルブロックとPythonのまとめです。
前の記事でも説明しましたが、コンパイルブロックで一つにまとめると、内部のSOPのキャッシュが作られません。PytnonでSOPの動詞を使う時も execute() メソッドを使って実行する時にインプットとアウトプットのジオメトリを同じにすると、コンパイルブロックと同じようにインプットジオメトリのデータを直接加工して上書きしているので途中にキャッシュが作られずメモリが節約されているのがわかると思います。なので下の図の様に色んなSOPの動詞が合った場合verb1~4、インプットジオメトリに直接上書きされてメモリが節約されます。ですがコンパイルブロックのように並列処理をしてるわけではありませんので注意。
これらのSOPの動詞は Side Effects がコンパイル対応SOPを作っている時に出来たものなので、まだ使えるSOP動詞の数は多くありません。下のようにPython Source Editor で下のコードを書いて Apply をクリックすると、動詞として使えるSOPの一覧がドバーっと出てきます。
Pythonコード書くのが面倒くさい人のために、下に動詞として使えるSOP一覧を載せておきます。SOP動詞の名前を下のように入力して動詞を使います。
verb = sops.nodeVerb(‘scatter::2.0’)
verb.execute(geo, [geo])
add | groupcreate | shrinkwrap::2.0 | vdbrenormalizesdf |
attribcast | groupdelete | skin | vdbresample |
attribcomposite | grouppromote | smooth::2.0 | vdbreshapesdf |
attribcopy | grouprange | solidify | vdbsegmentbyconnectivity |
attribcreate::2.0 | grouprename | sphere | vdbsmooth |
attribfromvolume | grouptransfer | stash | vdbsmoothsdf |
attribinterpolate | inflate | subdivide | vdbtopologytosdf |
attribpromote | intersectionanalysis | switch | vdbtospheres |
attribute | intersectionstitch | tetpartition | vdbvectormerge |
attribvop | isooffset | tetrahedralize | vdbvectorsplit |
blast | line | tetrasurface | vdbvisualizetree |
bonecapturebiharmonic | matchtopology | torus | volumeanalysis |
boolean::2.0 | measure | tube | volumeblur |
box | merge | unpack | volumebound |
circle | name | unpackpoints | volumebreak |
connectivity | normal | vdb | volumecompress |
convertvdb | null | vdbactivate | volumeconvolve3 |
convertvdbpoints | opencl | vdbactivatesdf | volumefeather |
cop2net | output | vdbadvectpoints | volumefft |
cop2net | pack | vdbadvectsdf | volumefromattrib |
copytopoints | packpoints | vdbanalysis | volumemerge |
copyxform | pointgenerate | vdbclip | volumemix |
curve | polycut | vdbcombine | volumereduce |
delete | polyfill | vdbdiagnostics | volumeresample |
deltamush | polyframe | vdbfracture | volumeresize |
divide | ray | vdbfromparticles | volumesdf |
error | resample | vdbfrompolygons | volumeslice |
facet | rest | vdblod | volumesplice |
font | reverse | vdbmorphsdf | volumevisualization |
grid | revolve | vdbocclusionmask | volumevop |
groupcombine | rewire | vdbpointsgroup | xform |
groupcopy | scatter::2.0 | vdbprojectnondivergent | xformaxis |
なんでわざわざPython 使う必要があるのか・・・というと、Shelfツールとかに自分で独自のツールを作る場合に使えると思います。あとは何かの理由でわざわざSOPのネットワークを作りたく無い場合とか・・・? 普通の人は使う機会はほとんど無いと思います・・・。