3DCG屋さんの活動記録

PROFILE ★★こんな人です

3DCGを活用した映像や没入体験コンテンツの制作をしています。テクノロジーの社会実装に興味があり。テクニカルディレクター。面白いこと新しいことにワクワクする気持ちに『素直』でいつづける。

2019年6月6日木曜日

Googleスプレッドシートに画像を一括で挿入(IMAGE関数)


ほぼこちらのスクリプトです!笑
https://www.katsushikatech.net/entry/create-file-list-with-google-apps-script


ありがとうございます!


そして、IMAGE関数に貼り付けるのはファイルIDなので、
URLではなくIDを取得する内容に変更します。

用参考
https://developers.google.com/apps-script/reference/drive/file


list.push([file.getName(), file.getUrl()]);//名前とURLを表示します

変更(ID取得)
list.push([file.getName(), file.getId()]);//名前とIDを表示します★

さらに変更(IMAGE関数に)
list.push([file.getName(), '=IMAGE("http://drive.google.com/uc?
export=view&id='+file.getId()+'")']);//名前とIMAGE関数式を表示します★


以上。

2019年6月4日火曜日

TD memo


Python  scriptでパラメータ変更


TextDAT でシンプルに処理したい。
地味に時間かかった。

色々お作法があるみたいですね。



参考サイト

チップチューンとか面白そう。
音に関する記載が多いので、改めて参考にさせていただきたい!


2019年5月23日木曜日

Arduino Unoでキーボードとして文字入力!その1


まずこれで
L地下、ボタンでLED点灯テスト
よしよし


次にキーボード入力するぞ!
http://eucalyn.hatenadiary.jp/entry/original-keyboard-05  
が、keyboardのコマンドがつかえない・・






あ!UnoはUSBデバイスで認識されないからキーボードにできない!だと!?

まじかぁ。







でもファームウェアを書き換えることでUSB HIDデバイスとして認識されるようになるらしい。
・・・色々調べた僕の理解




キーボードとしてArduino使いたい
<必要なこと>
ボタンを押したらキーボードの挙動をするスケッチをArduinoに書き込み
Arduino自体がPC側でUSB HIDデバイスとして認識される必要がある

①は普通にIDEで書き込めばいいけど
②が問題。UnoはUSB HIDで認識されないファームウェアである。

諦めるな!USB HIDで認識されるファームウェアに書き換えればOK!
(え?ファームウェアって勝手に書き変えれるの?そうみたいです)

書き換え用のファームウェア(USB HID認識されるやつ)をダウンロード  
Atmel FLIPというソフトダウンロード&起動して③で書き換え。(Arduinoの指定の端子を短絡しながら書き換え!)




以上!



ファームウェア書き換え完了したので、
USB HIDで認識されるようになった
=書き込んだスケッチの通りキーボードとして機能する!




イエーーイ!^^





※ここで注意
ファームウェアの書き換えはせいぜい100回ほど・・・(非推奨な行為のため)
しかも、スケッチを書き換えるためには元のファームウェアに書き換え戻す必要あり






え?





おいおい、それはつまり、、、



キーボードとしてのスケッチの書き換え&検証のたびにファームウェアを書き変える必要ありってこと?
あっというまに100回とかいくでしょ。。





つまり、実際はやめとこう!ってことじゃん。



USB HIDとして認識させたい(=キーボードとして使いたい)なら、最初からファームウェアが対応しているものを使いましょうってこと!
Arduino Leonald か Micro 


なるほどー









私も手持ちがUnoでどうしてもキーボードとして使いたかったので
ファームウェアの書き換え作業を進めてましたが、
ギリギリのところで「※注意 スケッチの書き換えには、元のファームウェアに戻す必要あり」を知り、中断しました!!!


といことで Microで試しましょう。


<補足>
・③はArduino-keyboard-0.3.hex
・④はFLIP 3.4.7 for Windows (Java Runtime Environement included)

・Flipの起動でエラー出たときはJavaインストールしたら解決した

順を追ってキャプチャ画像貼ります。

Flipのインストール画面



Flipの起動画面・・・なんとエラー!?



落ち着いてエラーメッセージ見て、Javaをインストールすることに。




 そうしたらFlip起動できた^^





まぁ、結局使わなかったんですけどね。






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


参考サイト

2019年5月19日日曜日

激安DVDプレーヤー、ツインモニターで再生可能な動画形式検証


はい。


ポータブルDVDプレーヤーとして買ったら
SDカードさせて、動画みれるとのことでいろいろ検証。


説明書はこれ

720x576 avi/vob/flv/mpeg2/mpeg4 まで大丈夫

とのことでした。


検証開始。
ひたすら動画変換してSDカードに入れて、実機検証。

まず圧縮率高いmp4!・・・だめまじか


ここから4時間・・・

結論だけいうと、AEのMPEG2の設定でした。
ビットレートがMAX5Mだとフレームレート落ちることなく何とか再生。





以上、自分用のメモでした。
あー疲れた。

ちなみに、480x360で10分動画が500MB未満。
720x540で2分動画が100MBほどでした。

今回買った端末が128GBまでのSDカード対応らしいので
映画なら10~20本入りそう!

おーし。


て、128GBのSDカードほしいな。うちのはまだ8GB。。。

2019年5月14日火曜日

2019年4月17日水曜日

Aftereeffects のエクスプレッションのseedRandom固定させる Script


エクスプレッションで

Random
Wiggle

などランダムな数を使用するとき
レイヤーの順番変えたら動き変わって困るときは
seedRandom()をつかってseed固定します。



まぁ、エクスプレッションの先頭に1行入れるだけですが
今回挿入するプロパティが多かったので自動化Script作りました。



使い方は
プロパティ選択して、Script実行するだけ。
自動でエクスプレッションの先頭に、1文が挿入されます。








参考サイト!!

https://www.cg-method.com/entry/expression-to-script/
http://aejsx.hiroshisaito.net/layer-object/attributes/index

2019年4月12日金曜日

Arduinoと超音波センサーとProcessingで簡易モニター 検証


検証備忘録


仕事でAftereffecstのモーショングラフィック作業してるとき
ふと「キーで気持ち良いボヨヨンとかの動きをさっと作りたいので、PysicalUI作りたい。USB繋げてすぐセンシングして、テキストファイル書き出しして、AEにコピペして」みたいな完全オリジナルPUI作りたいと思って

帰ってから検証して見たのメモ。


実験
Arduino UNO + 超音波センサー
Processing + 可視化グラフ(まずは)

手を自由に動かしてインタラクティブにグラフ確認と、テキスト出力までしたい


結果
全然ダメ

超音波センサーは手のひらでセンシングすると20〜30cmくらいでもうノイズ目立ってくる。
まぁノイズなら調整で正せるかもだけど、反応性が悪い気がする。ついてこない。
(スケッチの問題だと思われる。時間かかるのでまた今度)



次のチャレンジ
MIDIコントローラのスライダーと
Processingを繋げてインタラクティブなUIとテキスト出力
したい!
➡️ここを参考にしてやりたい



とりあえず、今回試したスケッチはこちら。


Arduino



//********************************************************************
//*超音波センサを使って距離を表示するプログラム
//********************************************************************
//********************************************************************
//*超音波センサを使って距離を表示するプログラム
//********************************************************************
#define echoPin 3 // Echo Pin
#define trigPin 5 // Trigger Pin


double Duration = 0; //受信した間隔
double Distance = 0; //距離
void setup() {
Serial.begin( 9600 );
pinMode( echoPin, INPUT );
pinMode( trigPin, OUTPUT );
}
void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite( trigPin, HIGH ); //超音波を出力
  delayMicroseconds( 10 ); //
  digitalWrite( trigPin, LOW );
  Duration = pulseIn( echoPin, HIGH ); //センサからの入力
  if (Duration > 0) {
    Duration = Duration/2; //往復距離を半分にする
    Distance = Duration*340*100/1000000; // 音速を340m/sに設定
    Serial.print(Distance);
    Serial.write("\n");
  }
  delay(1); //シリアルモニタで確認するときは100
}




Processing
/*
 * Arduino - Processingシリアル通信
 * センサーの値をグラフにプロット
 * Processing側サンプル
 */
import processing.serial.*;


int NUM = 1; //センサー個数。今回は1個。「ショックセンサーの例」では2個
Serial myPort; // シリアルポート


float sensors = 2; //センサーの値を格納する配列
int cnt; //カウンター


// グラフの線の色を格納
color[] col = new color[6];
int pSize = 2;  //異なる2つのプロットサイズで


void setup() {
  //画面設定
  size(1600, 400);
  frameRate(240);


  // シリアルポートのリスト取得
  //println(Serial.list());
  // ポート番号とスピードを指定してシリアルポートをオープン
  String portName = Serial.list()[1];
//  myPort = new Serial(this, portName, 9600); //Win
  myPort = new Serial(this,"/dev/cu.usbmodem1421",9600); //Mac
  // 改行コード(\n)が受信されるまで、シリアルメッセージを受けつづける
  myPort.bufferUntil('\n');
  //グラフ初期化
  initGraph();
}


void draw() {
  // センサーの数だけ、グラフをプロット 。今回は1個。複数個のときは「ショックセンサーのプログラム参照」
  fill(col[1]);
  float tx = map(cnt, 0, width, 10, width); //左に余白10
  float ty = map(sensors, 0, 100,height-10,10); //上端がy=0のため、下端をベースに描画するにはこのリマップ← ※上下余白 100
  ellipse(tx, ty, pSize, pSize);
  if (cnt > width) {
  initGraph();
  }
  //カウンタアップ
  cnt++;
}


//グラフの初期化
void initGraph() { 
  background(47);
  noStroke();
  cnt = 0;
  // グラフ描画の線の色を定義
  col[0] = color(255, 127, 31);
  col[1] = color(31, 255, 127);
  col[2] = color(127, 31, 255);
  col[3] = color(31, 127, 255);
  col[4] = color(127, 255, 31);
  col[5] = color(127);
}


void serialEvent(Serial myPort) {
  // シリアルバッファーを読込み
  String myString = myPort.readStringUntil('\n');
  // 読み込んだ文字列を 小数(数字)に変換して、関数に代入
  sensors = float(myString);
}





-----------

参考サイト
今後「Arduinoからのシリアル通信結果をProcessingでテキスト出力」はこれまんま
https://kenyu-life.com/2018/11/24/pulsesensortxtdata/