3DCG屋さんの活動記録

PROFILE ★★こんな人です

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

2018年7月21日土曜日

Mayaで自作ノードについて python


Mayaでスクリプトは作ってきたけど、ノード(プラグイン)は挫折の連続で作ってこなかった。
が、ここにきて仕事で必要になってきた。
ので、作ります。

ちなみに

MayaでのPythonツール開発の流れ

から

  1. Mayaに搭載されている機能をあれこれ実験してみる.
    • 実現したい項目の基本操作を抑える.
    • 開発が必要な機能(足りない機能)を調査する.
  2. 関連するコマンドを簡単に実験してみる.
    • Mayaで編集操作を行うとスクリプトウィンドウに実際に行われたMELコマンドが表示される.
    • Maya ヘルプから,該当するコマンドのPython版を検索し,サンプルコードを実験する.
  3. Pythonコマンドの組み合わせ + GUIで簡単なツールを作成してみる.
    • 編集操作の一連の流れがPythonコマンド列に対応するので実験結果を見ながら組み合わせを調整していく.
    • GUIについてもサンプルコードを実験し,自作コマンドを各GUIに割り当てる.
  4. PyMELでPythonプログラムの整形
    • Pythonコマンドでかかれたプログラムは,PyMELに比べるとあまり直感的ではない.
    • PyMEL ヘルプから対応する関数を検索し,PythonコマンドをPyMEL表現に置き換えていく.
    • PyNode関数で各オブジェクトの固有のクラス型に変換できるので,各クラスから呼び出せる関数を調べてオブジェクト指向型に置き換えてみる.
  5. 足りない機能をPython APIで補う.
    • 新しいノード(データ構造,計算処理の1セット)を追加する部分は,Pythonコマンド,PyMELでは扱えない.
    • Python API ヘルプを参照しながら必要な機能を開発していく.
※以上、Github.com参照

なるほど、わかりやすい。
Maya歴4年(勉強期間も合わせて)の私は、今 (3)まで業務で行っている段階。
(5)に挑戦してるけど、なかなか実現しない。






Arduinoで赤外線リモコン 拡張! その1


別の部屋にあるAVアンプ(赤外リモコン)を制御する!

リモコン押す
⬇️
Arduino1 赤外線受信 & データ送信
⬇︎
ワイヤー
⬇︎
Arduino2 データ受信 & 赤外線送信
⬇︎
別室のアンプが赤外線を受信(音量変更)


参考サイト
まずはIRセンサーが生きてるか確認。
で、GitHubからDL!お世話になりました!
http://arakaze.ready.jp/archives/4245

http://arakaze.ready.jp/archives/4245

==========-
受信を確認しながら、送信をパルスで送りつづける
なんてのは普通のLOOPではできない!
ということで、割り込み処理に挑戦だ!

割り込み処理で受信と送信をリアルタイムに同時に
http://play-arduino.seesaa.net/article/422913405.html


プログラムをなんどもなんども確認して、
また、受信と送信を分けてネットのスケッチを参考にして
http://4009.jp/post/2016-08-23-summer/

ここの、受信センサーは受けるとLOW、常時はHIGHだとは気づかなkッタ><;
センサーとLEDを同じHIGHでやってはだめだッタ
http://310web.ddo.jp/led_kairo/pic_kairo/e_51_sekigai/index.html

が、だめだ。
これたぶんんLEDの出力が弱いせいだ
https://www.miniinthebox.com/ja/p/38khz-arduino-compatible-ir-infrared-transmitter-module_p903311.html?prm=2.18.104.0

正直微かにしか光っていない
強いのを買おう

で結局作ったのはこれ
//http://4009.jp/post/2016-08-23-summer/
//
volatile int state = 1; // 赤外線センサの入力値格納変数割り込み用の宣言
const int OUT_PIN = 13; //赤外線出力のピン設定

void setup()
{
  //赤外線出力のPIN設定
  pinMode(OUT_PIN, OUTPUT);
  //赤外線センサが反応している間ずっと割り込み設定
  attachInterrupt(0, ir, LOW);
}

void loop()
{
    // 赤外線センサがHIGHなら実行し続ける=赤外線発し続ける
    if (state == HIGH) {
        state = LOW;
        digitalWrite(OUT_PIN, HIGH);
        delayMicroseconds(8); //26μsのデューディー比3ぶんの1だけHIGH
        digitalWrite(OUT_PIN, LOW);
        delayMicroseconds(18);
       }
}

//割り込み処理 関数
void ir(){
  state = HIGH;
  delayMicroseconds(26);
}
=============


いやぁ
電子工作のブラウザシミュレーション使うか
http://d.hatena.ne.jp/nowokay/20171106

あー、色々調べると
赤外線LEDと抵抗、トランジスタを組み合わせないといけない
そしてLEDを明るくするには流す電流を増やすだけ、なるほど。
じゃあArduinoのモジュール赤外線LEDの方が良さそう。

-------------------

ということで、秋葉原の電子部品屋さんへ・・・
一応50mAの赤外線LED購入(今の赤外線LEDはmA不明)。
ただ、店員さん曰く「リモコン用で売ってる赤外線LEDなら強度不足より、プログラムを疑う方が良いと思います」、なるほどー!!!!!

というわけで、モジュール(ハード)か、赤外線送信プログラム、赤外線受信プログラム、どこがおかしいかを順番に確認することに。

で、1ヶ月かけてようやく Arduinoで赤外線送信 -> アンプで受信(音量変化)ができた!
以下ワークフロー。


【備忘録】キーワード
・やっぱりライブラリ IRremote は優秀
・IRrecvDumpV2で受信。リモコンから受信してシリアルモニターに表示①
・シリアルモニターでRawDataをコピー②
・IRsendRawDemoで送信。上の信号をペースト③
 →赤外線送信でアンプが反応!!(感動)


よしよし!
ハード部分に問題はなかった。
あとは、今2つのスケッチでやったことを
1つのスケッチにまとめ、1台のArduinoで実現する。

続きはまた今度・・・ふぅ