3DCG屋さんの活動記録

PROFILE ★★こんな人です

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

2018年11月17日土曜日

一発で複数のJPGファイルをフォルダにまとめるBAT


備忘録


HDRを大量に制作することになり、先日撮影してきました。
そこで、撮影ポイントが多かったのと、撮影枚数が多かったので
データの確認と整理に予想以上の時間がかかりました。

その中でもJPGファイルの扱いに、、、地味に苦労。
もういっそのことRAWだけで管理して、JPG削除しても?と思ったけど
何があるか分からないので同一フォルダ内に保管することに。

にしても、フォルダ内にRAWとJPGが混在すると煩雑になるので
一発でJPGをフォルダにまとめるBAT作りました。

使い方を動画にしました!




BATの中身は

mkdir jpg move *.JPG jpg

です、短い!

てか、BATにドラッグすると
ドラッグしたファイルのパスでBATが実行されるんだ
(知らなかったがこれは使えそう)



本当は、アクティブウインドウのパスを取得してBAT実行する
ようにしたかったけど、分からなかったです。。
まぁ、最初はコマンドプロンプトで試して
それをBATにできただけでも便利だし、
そもそも当初の目的の時短は達成したからよし!


メモメモ



2018年9月19日水曜日

Touchdesignerで3Dプログラミング基礎


えー、そろそろ3Dの基礎をきちんとするために
テキスト使って練習。

個人的なメモ


・GEO  CAMERA  LIGHT  +  RENDER  で3D描画できる!

・render TOP でcamera指定、geo,light の*は「全て」という意味!
  →つまり、他の3DCGソフトのレンダー設定、レンダーレイヤーやライトリレーションシップみたいな設定をここで行える。なるほど


・Ramp TOP で背景作成。 グラデーション
 リニア(水平、垂直)、円状、放射状

・Composite TOP で画像の合成。overを超多用!

・Out TOP で上の階層Project (container COMP)デノサムネールになる


・geo COMP内にSOPまとめる
※AlembicもこれでOK、outに繋げると便利。紫がレンダー、青がサムネ表示

・MATで質感&テクスチャ割り当て




2018年9月15日土曜日

2018年9月11日火曜日

TouchdesignerのショートカットTips


備忘録


List Viewerの表示切替
Shift+T

※OPのViewなどを一括変更などに




親オペレータのView表示
Shift+V

※別ウインドウが地味に便利?






■参考にしたサイト
https://qiita.com/joe_ohara/items/fab81562f30a13fc67ae
わかりやすいし、使えるショートカット多くて、勉強なります。
・・・ってこれ小原さんブログやん!さすがです。









2018年8月24日金曜日

Touchdesigner で音楽分析「ドラムとスネア」のタイミング取得


Palette / Tools / audioAnalysis ってやつが手軽でよい。

ドラムスネアを拾ってみた、0/1で取得。
Lag CHOP で変化を滑らかにしてLED出力を自然に。


ただ、ちょっとパラメータが間隔でしかわからない、説明があればいいのに。
といわけで、メモメモ















※1年前の福岡TD講座をメモしてくれてる人いた!しかもわかりやすい。
https://qiita.com/nariakiiwatani/items/931f6f337a3a3dc54555

2018年8月23日木曜日

ボタン押したら音再生 タイムラグなしの方法


以前の記事「touchdesigner でいろいろつなげてみた」で

ボタン押してから音がでるまでのタイムラグに困ってたけど
音ファイルに関しては解決した。


audio Play CHOP で解決。

Triggerにして、Triggerにボタンの値を入れるだけ!

ただ、audio Oscillator CHOPの再生は正直まだ微妙。。
とりあえず、frequencyにボタン値の0/1を直接乗算するようにしたら少し改善した。

◆参照
https://qiita.com/tatmos/items/8dc859ce31408ff3e766




2018年8月22日水曜日

Touchdesignerでme.digits がめちゃ使える


ついに見つけてしまった、秘蔵っ子!

なんと、オペレータ名の末尾の連番部分をint型で一発取得してくれる
Touchdesignerのpythonがありました。
これは本当にどこでも使えそう。




とくに、大量のノードを扱うときに重宝します。



touchdesigner でいろいろつなげてみた


今回は、今までちょこちょこ機能を勉強してきたTDで、今の自分でできる「やりたいこと」を盛り込んでみた。

・Arduinoつなげてボタン入力、LED制御
・↑はFirmataでやる
・OSCで制御
・音ならす(422Hz)
・音楽に連動した動き

ていうのをやってみた。
備忘録。




おお!
たのしい。

できたこと。

★ArduinoをFirmataでつなげて、
アナログ出力 =ボリュームつまみの抵抗値を8bit(1024段階)で取得!
デジタル入力 =ボタンスイッチを1bit(ON/OFF)で取得!
デジタル出力(PWM) =LEDの明暗を8bit(1024段階)で制御!

★OSCで
デジタル入力 ON/OFFボタン
デジタル入力 スライダー

★Touchdesignerの
Oscillator CHOP  で単音(?)発生&ボリュームつまみで音程制御。
Audio関係のOPつなげて、低音の大きさに連動してLED赤を点滅。




以上。

ただ、ボタン押してる間だけ単音出るようにしたんだけど
タイムラグがある・・・OSCでもArduinoでもキーボード入力でもだったので
OscillatorCHOPに問題がある??
違和感なくレスポンスよく音が出るように改良したい。


-------------------------
参照サイト

◆touchOSCの信号が受信されない
PC側のセキュリティソフト問題でした。
ソフトの設定から解決!
https://www.ch-otsu.com/app/1559/



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で実現する。

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







2018年6月5日火曜日

AEで下位層の時間を取得する方法


エクスプレッションで複雑にやろうとして
結構時間かかったけど

力技で解決!


備忘録メモ


Time Remap
を適用して得た値が=内部のタイムコード(フレーム)


なんと!!!
でそれを引っ張ってきて、fpsかけて、小数点切り捨てて
使えます。

例:
Math.floor(thisComp.layer("c02_t08_0508_EXP 2").timeRemap*29.97)


ちなみに、該当コンポ・レイヤーをインデックスで指定するなら
上記のエクスプレッションは


例2:
layerIndex = Math.floor(thisComp.layer("Null 1").effect("Slider Control")("Slider"));
Math.floor(thisComp.layer(layerIndex).timeRemap*29.97);

※Null1のスライダーにキー打って、インデックスを変化させてます


以上。



------------
下位層のコンポの時間取得失敗
・comp.layer(index).time で行けると思ったら、現コンポのtimeだった><;
・Timecodeエフェクト 手軽!だがエクスプレッションに時間を引き継げなかった><;
・MasterPropertyで内部のアトリを持っていく・・・のは無理やった

2018年5月10日木曜日

Macで文字置換 TAB


備忘録

Macでタブキーを置換んで使うときは

alt + TAB

テキストエディタで置換んできるよ



コンマで区切られた一連のデータ
※Arduinoのシリアルモニターログなど

Macのテキストエディタでコンマをタブに置換

Googleスプレッドシートに Command+Shift+V でセル分けペースト

2018年4月11日水曜日

windows10での復元 備忘録


そのまま 復元 したらエラーでできない!
なんやかんやで時間かかったので備忘録メモ。
※ウイルスソフトを無効にして、とのエラー

まず、ウイルス対策をすべて無効にするために、ネット環境をOFF!LANケーブルは抜く。

WindowsDefenderセキュリティセンターで、全て無効にする
ファイアーウォールもすべて無効(こわ)

スタートメニュー ⇒  msconfig  から、セーフモードにチェック入れて再起動 ⇒セーフモード起動


起動後
スタートメニュー ⇒ control ⇒ 回復 ⇒ 復元ポイントを開く


復元成功!

スタートメニュー ⇒ msconfig から、セーフモードのチェックを外し再起動  ⇒通常起動


起動後、WindowsDefenderセキュリティセンターですべて有効にしてから、LANを接続!


2018年4月9日月曜日

こんにちは!RealSense くん!


RealSense来ました。


品切れ続出のD415が来たので、さっそく挙動を試してみました。

ちなみに、市場では4月から4半期が始まり・・・まだまだ品薄状態は続きそうですね。
さすがに10月ごろになれば落ち着くとは思いますが、必要な時は早めに注文しよう~と。

D415 D430 の比較わかりやすいこちら

さて、RealSenseの挙動テストしたので備忘録メモ。



以下、順を追って箇条書きします。


(1) PCのOSアップグレード(winodws7 to windows10 upgrade)


(2) REALSENSE viewerインストール


(3) Realsense D415をパソコンに接続


(4) USB2だとD415認識せず。ただのデプスカメラになる。(深度は認識、RGBは非認識)


(5) USB3に再接続で、D415認識
 RGBもデプスもOK,D415の型番も表示。
※なぜか、たまにUSB2と認識される。。抜き差しすれば直るからPCの問題?


(6) Viewerの確認


(7) NuiTrackの無償版インストーラ.zipをDL


(8) (7)同梱のOpenNIインストール


(9) (7)同梱のPrimeSenseインストール(意味なかった?)


(10) (7)同梱のNuitrack.exe起動
C:\Users\nuitrack-win64\nuitrack\activation_tool\Nuitrack.exe


(11) 実行するとD415が認識され、モニタ起動


(12) カメラから離れて全身が写るとジョイント認識
※腕のクロスや首の角度、デフォルトでこれはなかなか楽しみ


(13) NuiTrackの無料版は5400fで終了!



以上。



◆以下はテスト動画
(10)~(13)の部分





あとは、これをProceessingから制御する方法を模索!
どうすればいいんだろう><;
ライブラリないし、ラッパーもjava?でできるのかな。

だれか教えてくださいw










2018年1月11日木曜日

王道Kinect!まさかの生産終了!涙


人物の動きを検知する・・・手っ取り早いのはやはりKinectなのか!


ということでカメラについてまとめサイト!勉強になります
https://qiita.com/fukushima1981/items/77930d3775117d66e5e8


とここで、なんとKinectV2含む製品が製造終了していた!
2017年に。
追悼するまとめサイト、勉強になります
https://wpteq.org/xbox/post-34317/


KinectV2 + Processing + Mac のチュートリアルサイト
https://qiita.com/migizo/items/d0440e36d18f3fdde48c



とりま、今ある Kinect v1 + Processing + Mac で試す。

今後:人のボーンを検出してParticleが寄ってくるエフェクト試す

KinectV2欲しい (在庫あるだけで、販売終了するから早く買わなきゃ)



パソコンで使うときには変換ケーブル必須!
kinectV1とは互換性ないので、新規で買わなきゃ・・・


にしても合計3万か。
この機能にしてはお買い得かな!
会社で5台くらい買ってもらいたい




========================
==  補足 2018.4.8 ============
========================

考えた末、将来性のあるIntel Realsenseを使って制作することに決めました。
KinectメーカーのMicrosoftoがおすすめするのがRealsenseだし
値段も機能も手が届きそう、ってことで!

Xtion2も悩んだけど、やっぱりここはKinectお墨付きのやつにしました。へへへ

にしもて、AppleがPrimeSense買収して、部品を外部に売らなくなったらKinectが製造中止になったってホント?ならひどーいぜよ。
RealSenseもKinet並みに自作ユーザーが増えてもらわないと、あまりにも情報が少なすぎるよ><;

ちなみに、Realsenseを試してみた処女記事はこちら。
https://dekapoppo.blogspot.jp/2018/04/realsense.html

2018年1月8日月曜日

Processingで画像の上に文字やら塗りやら


前回の『Processingで映像テスト』のスケッチを使って、色々試してみた





内容は
・カメラから映像取得して表示(反転表示=鏡)
・キーボードを一度押すと「塗り」エフェクト適用
 ・マウスの位置で色がリアルタイムに変動
・キーボードをもう一度押すとエフェクト解除


実行結果


text()  で文字表示
int() でfloatをintに変換
str() で数値を文字列に型変換
+ を使って文字列を結合

scale() で画像を反転
tint() で塗りつぶし



以上。
まだまだ基礎から



2018年1月6日土曜日

Processing カメラ映像の活用(超入門)


Processingでカメラの映像を使う、入門レベルのテスト!


・ライブカメラの認識
・ライブカメラの読み込み開始
・ライブカメラの読み込み停止


以下スケッチ例





こちら参考にしました!
yoppaさんのProcessingと映像処理
Processingとライブカメラ









2018年1月5日金曜日

ProcessingでopenCV始めました


カメラの映像を処理してインタラクティブコンテンツ作成

openCVを利用する

Processing、マジでわかりやすい(簡単・・ではない!)
openFrameworks、やっぱりまだ早かったか><;


あと、思った以上にProcessingの組み方とopenFrameworksが近い。
処理速度はoFが速いというが、、まずはPrでやってみてからかな。
oFはPrの上位ツールってことでいいと思うので、今後!
移行するときはこちらを参考にさせてもらいます。


というわけで、こちらを参考にしてProcessing+openCVを試して遊んでみた。


※Processing標準のvideoライブラリは、追加インストールになりました。
Quicktimeの非対応に関係したものらしいです。
今回は、追加でインストールしてそのまま使ってますが、
今後は(videoライブラリじゃなくて)openCVの機能使ってみたい。



いつもながら、本当にありがとうございます!!!!


さて、というわけで
環境は

Processing
+
openCV
+
webカメラ(or Kinect)

で輪郭検出&パーティクル演出をまずはやる。



oF 諦めました(笑) ビルドエラーの嵐


oFをXcode8でビルドしようとしたらエラー
Quicktimeが見つからないやつ


で、こちらを参考に解決。


手順は
①SDK10.11 をDL  ⬅️過去のSDKをDLできるのはこちら
②Xcodeの所定フォルダに上記フォルダをコピー



おし、解決・・


と思ったら次は別のエラー!
opensslが見つからないやつ

こちらを参考に解決を試みたあと、
こちらを試みて、、
こちらを試みた、、

解決したら次から次にエラーが・・・

整理すると
CoreOF.xcconfigのファイルをテキストエディタで開く
(場所はoFフォルダ。of_v0.8.4_osx_release/libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig
・2箇所追記
HEADER_SSL = "$(OF_PATH)/libs/openssl/include"

$(HEADER_SSL) を最後のOF_CORE_HEADERSに追記
COREを更新したらXcodeを再起動する。

そもそも・・・
openframeworksの初期設定

・DLして解凍したoFフォルダは書類、ショートカットをサイドバーに設置。
・Xcodeの設定は、ビルドするときアーカイブターゲットをプロジェクト名にする


が、解決しない(涙)

というわけで、MacBookPro で openFrameworks するのは
もう少し勉強?時間がかかりそう。。。


というわけで、Processingを始めようかと思います。




2018年1月4日木曜日

oF 始めました(再開再会?)


昨年末、なんとかBlenderをArduinoのボタンから制御するテストが成功!
基礎的な部分だったけど、なんとか道筋が見えた・・・
あとは実際に子供が遊べるところまで作り込むってところですが

同時に openFrameworks(以下 oF) での演出を始めようかと思います!
今年2018年はoFで作品を作ることが目標!

というわけで、会社はWindowsですが
自宅で諸々テストとか試行錯誤するために
MacbookにoF開発環境を。
実は、過去にこんなの作ったことあるんです

oF Kinect AmiddScreenTest from dekapoppo on Vime

oF+Kinect(v1)+アミッドスクリーン(網戸)で
空間スイッチとかなんやら作成したテスト。

ですが、これやってからしばらくoFに触れていなかったので
開発環境を整備するのにも、、、一苦労。。
まぁとりあえず進めていきます。

今回は、とりあえずKinectは使わずに
カメラからの単純な画像をopenCV使って輪郭検出
それでParticleを制御するものを作ります。


これかっこいい!
高精細!?
パーティクルの全体のイメージはこんなの作ってみたい。(サイトはこちら




というわけで、
こちらのサイト参考に超初心者コースで進めます。
(『いつもお世話になってます、yoppa先生!』)

いくぜ創造!


まず、上記サイトからサンプルデータDL。
開いて、myAppフォルダ直下にプロジェクトフォルダが来るように。

と、ここでうまくXcodeで実行されない・・
あ!ofxCvのライブラリがインストールされてなかった。

openCVを使うためには

ofxOpenCV
ofxCv

が必要! →ofxOpenCVとofxCvの説明

で、ofxCvはGithubから要DL!


addonsに必要ファイルをコピー。
exampleファイルは、appフォルダに移動。


よし、ofxCvはインストールされた。


・・・がエラーでまだビルドが成功しない。。
とりあえず少しずつ解決していきます!