3DCG屋さんの活動記録

PROFILE ★★こんな人です

映像制作会社でクリエイティブの修行中。日ごろはMaya&AEを中心にいろんなCGソフトを触りながら、TD寄りの作業が好きで、インタラクティブな体験型空間演出をやりたいと模索中。面白いこと新しいこと大好きな『素直』でいつづける

2019年2月27日水曜日

Nuke Python 自作スクリプト メモ


Nuke python 備忘録



sn  = nuke.selectedNode()  単一のノード取得
list = nuke.selectedNodes()     ノードを配列で取得

sn.name()          ノード名取得
sn.knob("note_font_size").getValue()   値参照
                                       setValue(30)  値代入


ノード選択して i  でClass名確認できる。

で、フィルターしてリストにする方法がこちら。

listFilter = nuke.selectedNodes("BackdropNode") 




参考
nukeでpythonはじめ
http://elephantplus.blogspot.com/2012/03/nukepython.html

pythonのツールバーにボタン配置まで
カスタムパネルに追加
http://elephantplus.blogspot.com/2012/03/nukepython_26.html
ノードパネルに追加
https://support.borndigital.co.jp/hc/ja/articles/115001019674-Nuke-%E3%83%8E%E3%83%BC%E3%83%89%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%AB%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%8E%E3%83%BC%E3%83%89%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95
メニュータブに追加
http://www.nukepedia.com/python/render/cmdlinerender

.nukeフォルダが見つからないときは
https://cgworld.jp/regular/nuke008-2.html


2019年2月9日土曜日

Amaterasuの機能 これはつかえる!


Mayaのスクリプト集定番 Amaterasu !
https://kiwamiden.com/tools/amaterasu/help

これは使える機能!を完全自分目線でまとめました。
結構ある、すごい。



一般系  File
https://kiwamiden.com/tools/amaterasu/help/file/set-project


編集系 Edit
https://kiwamiden.com/tools/amaterasu/help/edit/combine-shape
https://kiwamiden.com/tools/amaterasu/help/edit/reorder


アトリビュート系 Modify
channelボックス上の「A」から起動できる
https://kiwamiden.com/tools/amaterasu/help/modify/unfreeze-transformations
https://kiwamiden.com/tools/amaterasu/help/modify/renamer
https://kiwamiden.com/tools/amaterasu/help/modify/stocker


表示系 Display
https://kiwamiden.com/tools/amaterasu/help/display/display-color
https://kiwamiden.com/tools/amaterasu/help/display/x-ray-per-mesh


ウインドウ系 Window
散らばったファイルをコピーしてパスも変更できる。プロジェクトのバックアップ時に便利。
https://kiwamiden.com/tools/amaterasu/help/window/file-manager


モデリング系  Modeling
https://kiwamiden.com/tools/amaterasu/help/modeling/recovery-edge-type
https://kiwamiden.com/tools/amaterasu/help/modeling/extract-face-per-material
https://kiwamiden.com/tools/amaterasu/help/modeling/poly-cleaner


アニメーション系  Animation
https://kiwamiden.com/tools/amaterasu/help/animation/copy-animation
https://kiwamiden.com/tools/amaterasu/help/animation/delete-unused-animation
https://kiwamiden.com/tools/amaterasu/help/animation/store-pose
https://kiwamiden.com/tools/amaterasu/help/animation/rotoscope
https://kiwamiden.com/tools/amaterasu/help/animation/playblast
https://kiwamiden.com/tools/amaterasu/help/animation/seexprmesh
https://kiwamiden.com/tools/amaterasu/help/animation/obake-deformer


リギング系 Rigging
https://kiwamiden.com/tools/amaterasu/help/rigging/create-controller
https://kiwamiden.com/tools/amaterasu/help/rigging/convert-animation-to-drivenkey


トゥーン管理系  Rendering
https://kiwamiden.com/tools/amaterasu/help/rendering/assign-outline



以上、ゼネラリスト目線でした!
個人的に「ViewPort2.0に対応していない機能」「新しいレンダーレイヤーに対応していない」ところがもどかしいですが、
今後の改良を切に願います!


たっくんさんいつもありがとうございます。
Gurenのころからお世話になっております。
これからも開発頑張ってください!


2019年2月8日金曜日

CHOP Execut DAT がめちゃんこ便利


はい、TDでPython使ってスクリプト作りたいと一念発起してから、早3日。
(あれまだ3日?わら)

Script DAT
Script CHOP
Text DAT

どれもいまいち使い方わからんな〜って思ってましたが

僕のやりたいことは全て CHOP Execut DAT でできる!(誇張)


てことでメモ。


やりたいことは・・・

ArduinoでFirmata使ってTDと接続するとき
プロジェクト開くたびに設定がリセットされてて困ってました。

毎回ちまちま設定するのめんどくさ過ぎるし・・・

てことでPythonスクリプト作って

ボタン押せば自動でFirmataの初期設定行う!

(前回の設定をテキストで保存までさせたいな)
ってことをさせたい。


そのために必要なことは

①ノードのパラメータを自動で入力

②ボタン押すとPythonスクリプト実行


の2点。


①はとりあえず







②は、今回メインのCHOP Execute DATで
こんな感じ



既存のCHOPを組み合わせたほうが、シンプルだったり視覚的に見やすくなるかも
でも、TDでやりたいのはフィジカルセンサーとの連携で、
そのためにはシリアル通信とかDATが必須となってPythonが必須になるので
今のうちからPython活用の練習していきます。

Pythonは完全独学だから基礎がなってないので誰かアドバイスくださいw
Mayaとかで時短ツールをScriptにして作ってたけどまだまだ浅い・・・



今年こそはいろんなスキルを総動員して

インタラクティブ・空間・全身体験

なコンテンツ作るぞ!!!!



2019年2月7日木曜日

MASHで破壊オブジェクトをインタラクティブ制御! 力業!?


前回の投稿のつづき・・・・


MASHのShell Dynamicsを使うと、
マージされたパッケージの破壊オブジェクトをいい感じに制御できる、ようになったのでメモ

※Shell Dynamics 適用するけど、Dynamicsは無効にするとうまくいった




手順は
①まず、破壊済みオブジェクトをマージして、MASH/Dynamics/Add Shell Dynamics
②MASH Editorから Dynamicsをオフにする(これで全てOK!★★★)
③あとは好きなように offsetやRandomを適用、Falloff作成してインタラ制御!


②に気づくのに時間かかった、、とほほ


ちなみに破壊はHoudiniでとりあえずボロノイ分割。
本当はエッジをノイズでぐねぐねさせたい。
が、めちゃ重い。


参考
https://www.youtube.com/watch?v=JPYPZyJBJqc





MASH 結構使えると思ったのに、結局はノードベースになり切れないのは残念。。


MASHでオブジェクト制御

何か1つのオブジェクトを複製して制御、じゃなくて
あるモデルをHoudiniとかでFractureして分割したものを
MASHのShell Dynamicsで制御します。

これはこれで、バウンディングボックスとかでインタラクティブに制御できて
すごく便利なんです

https://www.youtube.com/watch?v=JLUSGAbRrHc


ただ、あとでソースオブジェクトの置き換えができない!!NOO!!!!!

最初は仮モデルでやって、あとから本モデルにするのが
一発でできないの!?


いろいろためしたが、

どうやら「Shell dynamics」ボタンを押したときに
初期オブジェクトの位置とか固有の値を格納するらしく
それが原因でうまくいかないです。

ノードをつなぎなおしたり、時には半自動のPythonスクリプト作ってみたけど
結局どこかが破綻してしまい、完全再現できなかったので断念・・・

途中の作業メモ・・・無念


MASHでよくやる、オブジェクトを複製して~とかなら置き換え自由。
結局Shell dynamicsだと Distributeノードが作られないのも大きい。。




というわけで、今回はあとで置き換え作業がある可能性高いにもかかわらず
置き換えワークフローを確立できぬままMASHでやります(キツい)





TD tips 備忘録


Pythonでprint

print ("Hello!")

かっこに入れる

n = op("firmata")
p=n.par.Active

-----

firmata プロジェクトを再起動すると接続が切れる問題。
再接続するPython


# format auto setting

n = op("firmata")

n.par.Active = 0
n.par.Pinmode2 = 0
n.par.Port = "/dev/cu.usbmodem1421"
n.par.Version = 1
n.par.Capability = 1
n.par.Analog = 1
n.par.Reportanalog = 1
n.par.Reportdigital = 1

import time
time.sleep(1)

n.par.Active = 1