3DCG屋さんの活動記録

PROFILE ★★こんな人です

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

2017年11月23日木曜日

BenQのプロジェクターシミュレーションサイトすごい


プロジェクター欲しいなと思って、投影サイズ、設置距離など計算してたけど複雑でいまいち具体的にできなかったけど、このサイト使って細かい調整できそう!

http://projectorcalculator.benq.com/


BenQのプロジェクター選んで、自分理想の投影環境(サイズ、投影位置など)を入力すると、設置距離とか算出してくれる。
さらに、右側に図が出るけど、その図のPJをマウスでD&Dして設定も出来という、超インタラクティブなシミュレーションツール・・・すすごい

僕の理想は130インチなのでこれ

あ、意外と距離が近い、もっと離せるし離したい。
とのことで、ギリギリまで距離離せるとしてこれ。 

これいいな〜!欲しいよPJ!

近距離から大画面に投影できるHT2150STを検討中。




本当は、CinematicColor(Rec.709対応)のHT3050が欲しい。
映画やアニメを見る人にはぜひオススメしたい⬇️機能性


ただ、このHT3050は距離を3m以上離さないと130インチできないからな...
でも・・・


やっぱり映画見るなら色表現を重視したい!

なんかW1210STがHT2150ST同等の短焦点でRec.709対応、ってサイトに書いてあるけど多分これ誤りだろうな。中身は完全にじだと思う。。型番違うだけでしょ。
にしても筐体はほんと同じ!



以上、買うなら以下を重視。

使用目的:映画
視聴環境:暗い
重視:色表現(速度や明るさではない)
わざわざPJでやる意味:大画面
耐用年数:10年先まで使える性能(〜2027年)
デザイン:白
環境制限:設置距離はスクリーンから2500mm以下=短焦点

などなど。
正直将来まで使えること考えると、
4KUHD対応とかLED光源だけど
70万とかする非現実なもの。。

さーて、どうしようか、時期が来たら買う!!
ちなみにスクリーンはこれ!(ただし仕様書では短焦点PJ非対応とのこと。電話で問い合わせしたら「生地自体は4K対応。短焦点NGの理由はスクリーンが歪むから。レインボーノイズや投影歪みが出ることあります。スクリーンを四方から引っ張ったりしたらOK」とのことでした。ちゃんと設置して、しかも買うなら天井高2600mm以上のロングバージョンだろうから、そうなると巻き取りの芯部分はスクリーン上部で、投影部分から離れてるから多少歪みがあっても映像には影響ないだろう、と楽観視してます^^

以上、BenQ Projecter Screen Calculate!





2017年11月18日土曜日

BGE logicのお勉強 〜PythonをActuatorのスイッチに


PythonをControllerにして、pythonからActuatorを実行。

シンプルそのもの!




これがわかるまでに時間かかったー><;
英語解説を調べるのが下手か、
日本語解説が少なすぎるのか。。

とにかく、これで
Pyserialで外部からシリアル通信して、
それをActuatorに接続できる!!
Pyserialでシリアル受信して、python内でオブジェクトを制御していたけど、それは嫌で何が何でもActuatorに接続したかったんですよね〜😂




というわけで、最終的に参考になったのはこちら



==============-
おまけ


▪️キーボードを押すたびに加速するLogic
http://pyoyoyo.blog.fc2.com/blog-entry-31.html

▪️python Controller
https://wiki.blender.org/index.php/Doc:JA/2.6/Manual/Game_Engine/Logic/Controllers/Python

Dを押すと、テキストの変更がリアルタイムに反映される

2017年11月11日土曜日

Windows版 Blender2.79でpyserial使う設定


家のMacではBlender2.79&Pyserial の環境構築!
会社のWindows PCでも同じ環境にしたい、ということで構築メモ。


Macでの経験から次の手順でいきます

・WindowsにPyserialをインストール
・Windowsに追加されたpyserialのフォルダを、Blenderに手動でコピー

これで力ワザですがうまくいくはず!!

==========================================
まず、Python3.5 (Blender2.79標準)を入れます。

・・・・いつものように親切な人の解説に助けられ作業!
 ⇒こちらです

はい、入りました!


次にPyserial。

えーと、Macは pip なるコマンド(?)があって簡単にインストールできたけど
Windowsは以下の手順でやります。
参考元はこちら

(1) pyseial のソースファイルをDL (本家から

(2) DLしたファイルを解凍

(3)コマンドプロンプトを起動

(4) 以下を実行(C:/Apps/pyserialに保存した例)

cd C:/Apps/pyserial
python setup.py install


おっと、ここで問題が。
PCのデフォルト(つまりコマンドプロンプトで python を実行すると、なぜか ver2.7が実行される。ver3.5を起動したいのに。。)
ということで、3.5をデフォルト起動にする設定。

(5)環境変数の設定
<一時的に変える場合>
pythonのインストールフォルダが C:/Python35 だとして

set PATH=C:\Python35;%PATH%

これでpythonのパスが更新されました。

<恒久的に変える場合>
システムの詳細設定から環境変数の編集


ここに、C:\Python35 を追加するだけ!
※ちなみに私は C:\Python27 がここに残っていて、なんどコマンドプロンプトで起動してもPython2.7が起動されるというイライラ事態になっていました。
もし他のバージョンのパスが残っているときは消してください。
テキストエディタに一度コピーしてから修正すると良いです!


そして、もう一度 (4)を実行。
.
.
.
.

おけ!!!


以上でWindowsにPython3.5  pyserialのインストール終了
===========================================


そして、ここからは Blender に pyserial をインストール。
ちなみに Blender 2.79 は Python 3.5。

Macでやったのと同じ方法でいけば
WindowsにインストールされたフォルダごとBlenderにコピーするというもの。

コマンドプロンプトで

python
import serial
serial

を実行して表示されたパスに、pyserialのファイルが入っているので
それをそのままBlenderのPythonパスに入れれば、成功!!!

のはずがうまくいかない><;

悩んだ末、あれ?これそのままコピーしたらいけるんじゃない?
(DLした pyserialのソースを解凍して、中に入っている serialフォルダ)

てことで、BlenderのPythonフォルダにコピー
.
.
.
.
.

はいキタ!!!


めちゃ早いやん。

Blender2.79にpyserial入れるまとめ

(1) pyserialを本家からDL
(2) 解凍
(3) フォルダ内のserialフォルダをBlenderにコピー

以上!




2017年11月4日土曜日

ArduinoとBlenderGameをSerialでリアルタイム通信 その3[完結]


MacのPythonを3にしてpyserialを追加する!


というわけで、Python3にする方法はこちら参考!

まず、HomeBrewをインストール
ターミナルで以下を実行

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

以下の表示で完了。ちょっと時間かかった (5分?)

==> Installation successful!

==> Homebrew has enabled anonymous aggregate user behaviour analytics.
Read the analytics documentation (and how to opt-out) here:
  https://docs.brew.sh/Analytics.html

==> Next steps:
- Run `brew help` to get started
- Further documentation: 

    https://docs.brew.sh



次にPython3
ターミナルで以下を実行

brew install python3

と、ここでDLは完了したけど
インストールで問題発生&エラーで終了。(5分?)

どうやらXcodeのコマンドラインツールのインストールが必要なようでした。
つまり、ターミナルで以下をじっこう

xcode-select --install

以下の表示で完了。(1分?)

xcode-select: note: install requested for command line developer tools


そして、再度 python3のインストールコマンド実行。
brew install python3

以下の表示で完了。(4分)


Pip, setuptools, and wheel have been installed. To update them
  pip3 install --upgrade pip setuptools wheel

You can install Python packages with
  pip3 install <package>

They will install into the site-package directory
  /usr/local/lib/python3.6/site-packages

See: https://docs.brew.sh/Homebrew-and-Python.html
==> Summary
🍺  /usr/local/Cellar/python3/3.6.3: 7,973 files, 111.1MB, built in 3 minutes 57 seconds


はい!python3インストール完了!!




あとは、前回にやったpip3からのpyserialインストールをやるだけ。
参考こちら。

以下、備忘録・・・

brew link --overwrite python3

ターミナルでpython3実行するときは python3

ここで、pythonのモジュールを確認!★★★★


python3 -c "help('modules')"

これでpipや pyserialがあればオK

私の場合、pipはあったがpyserialはなかった。。なぜ??
というわけで以下を実行★★★★


python3 -m pip install -U pyserial


あ、入った!
Blenderで、上記コマンド実行後に表示されたPathをsysで読み込んだらimport serial通った!

・・・が結局うまくいかず!!


というわけで、力技にします。。。
フォルダのファイルをコピペで
MacPythonのpyserial →  BlenderPythonに丸々コピー

でMacのフォルダ構造がいまいちわからんかったけど、ようやく判明!

以下が、MacのPython保存場所
ここの奥底のsite-packageのpyserial(serialフォルダ)を丸々コピー


そして、BlenderのPython保存場所
ここの奥底のsite-packageにpyserial(serialフォルダ)を丸々ペースト

以上!

そして Blenderでimport serial すると・・・・

問題なく通った!!!

あとはその1のプロジェクトファイるをそのまま実行したら成功!
長かった・・・眠い。。。

ちなみに、これでもエラーでBlenderが泊まるときは以下の点を確認

・Arduinoが接続されているか
・Arduinoのポート名が正しいか
・Arduinoのシリアルがbusyではないか(シリアルモニターは閉じる!)

など

あー疲れた、けどこれでようやくいろいr試せる^^

ArduinoとBlenderGameをSerialでリアルタイム通信 その2


前回のその1
pyserialのインストール不具合で失敗しました。。

その後もなかなかうまくいかなかったけど、
ようやくうまく言ったので、まとめマス!!!

タイトルは
ArduinoとBlenderGameをSerial通信、ですが

厳密には

Blenderでpyserialを使えるようにする @Mac、です

そもそも、つまづいた部分を、順を追って確認。
1)  Pythonでシリアル通信するには、pyserilのアドオン追加。
2)  Blenderにpyserial追加する方法がわからないので、MacのPythonにpyserial追加。
  ※方法の詳細はあとで説明
3)  BlenderのPythonで、Macに入れたpyserialのpathを追加 ←うまくいかない!><;


というわけで、色々試して次の通りしたらうまく言った。

上記の(1)から順に説明します。
Macのターミナルで以下を実行



easy_install pip

sudo pip3 install pyserial


これでMacのPythonにpyserialが追加されました。
さてどこに保存されているか、そのPathは?



上記コマンドを実行した後に表示されたpath!
…と思っていたら違った(;;)

本当は


python

import serial

serial

<module 'serial' from '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/serial/__init__.pyc'>


で実行して、最後の青塗りの2行に注目!!
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

この部分が有効なpyseiralのPath!
これに気づくのに時間かかった〜。。。


というわけで、BlenderのPython consoleでpyserialのpath追加!

>>>imoprt sys
>>>sys.path.append("/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages")




はい!
無事追加されました!


というわけで、Arduinoとのシリアル通信してみた。

・・・が、うまくいかない!?




やっぱり、そうでしたか・・・

[Python version]
Mac     2.7
Blender 3.5

import sys
sys.version

で確認できます。

というわけで・・・・・

MacのPythonを3にする方法は次回!





2017年11月2日木曜日

ArduinoとBlenderGameをSerialでリアルタイム通信 その1


iPhone -> OSC(iPhoneアプリ) ->   Blender(PC) の通信は成功。


iPhoneではなく
物理インターフェースと Blenderを接続するのにSerial
で試す。

ここで、以前やって見た
Arduino ->  Serial -> Blender の記事はこちら(2016年4月)
ちなみに、前回はArduinoの入力インターフェースでBlender制御。
今回やってみるのは逆の流れで、
Blender内の変化をArduinoにつなげたLEDに反映してみる。


ちなみに、OSCの方が他の機器との汎用性ありそうなので、
OSC on Arduino をやりたいが、イーサネットシールドが必要…持ってない。。

どうせPCと合わせてArduino使うんだからPCのネットワーク機能使えばいいじゃん!
つまりArduinoの信号をProcessingでOSCに変換して実現したい…この辺かな


Arduino -> OSC (Processing) ->  Blender 
はまた今度!

今回は

Blender ->  Serial ->  Arduino LED

の確認。
ちなみに以前の記事で

Arduino ->  Serial ->  Blender

も実現してるのでどうぞ。
特にBlender内のPythonで pyserial をimportするところでつまづいたので
参考にすると良いかもです。

なお今回は、基本的にこちらを参照しました!

細かいトラブルシューティング


◆MacでシリアルポートがCOMじゃない!
→/dev/cu.usbmodem1411
 Arduinoのツールか、macのターミナルから確認できる
 
◆BlenderGameのロジックでpythonを使用する
その場で作るpython か pythonファイルを参照

◆Blender 2.79 はPython3.5!
→MacにPython3.5インストール


.
.
.

BlenderのPythonで serial が読み込まれない
続きはまた





続きはその2で!
BlenderのPythonにpyserialを追加する方法もアルよ。




Arduino Blender & Maya Serial通信テスト(Facebook内容転載)


Facebook記事を転載(2016年4月時点の情報です)

Arduino  ->  Serial  ->   Blender
========================

▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️
          for Mac
▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️

【Mac で pyserial】 ★★★
pyserialが動かんわ!!!!かれこれ1ヶ月近くになる
import serialはOKでも、その次serial.Serialが通らない。。
Arduinoにシリアル通信、、できない。
というわけで、win64では諦め、
とりあえずmacで。Blender + pyserialを確立したい
とりあえずmacのpython+Blender環境を刷新。
Blender 2.77に。
python3.5インストール

macにはpython2.7が標準インストールされてるので
それ以外をアンインストール。
●アプリケーションから削除
●アプリケーションに表示のないpythonを削除
  移動/フォルダへ移動 から以下のパスを
/Library/Frameworks/Python.framework/Versions/
 例えば3.4のフォルダを削除して3.5を入れるとかするときなど

pythonの最新版3.51を公式サイトからインストール

pipのインストール
macのターミナルから
easy_install pip
sudo pip3 install pyserial
ここで結果pyserialのインストール先が表示されるので確認
pyserial in /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages
④Blender起動
sys.version
sys.prefix
sys.path.append("ここにserialのパスを入れる")



▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️
▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️

ようやく安定して使えるようになってきた(^^)

安定の使用手順

①Arduino電源再起動(USB抜き差し)
②Blender再起動
③Scriptで一度RunScriptする (シリアルポートの認識?)
  ここでArduinoが反応してチカチカします
④Blender再生→OK



▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️
▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️

Blender でオブジェクトの位置を変数化、
それをpyserialでシリアル通信する。
→Blenderのオブジェクト位置からLEDの明るさ制御


ser.write(b"値.") の値に変数を入れるのに苦労。。。encodeで解決。理由はまだわかりません!!!わら
あと、若干LEDがチカチカするのが気になるけどまた今度

====以下=======================================
import bpy
import serial
import math
ser = serial.Serial("dev/cu.usbmodem1421",9600)

def my_handler(scene):
height = bpy.data.objects['Cube'].location.z
val = math.floor(height)
outPut = str(val)+"." #ArduinoSerialInput needs "." at last
ser.write(outPut.encode())

bpy.app.handlers.frame_change_post.append(my_handler) # Tells blender to load "my_handler" on every new frame

=============================================


<特に pyserial 関係のトラブルシューティング>


blender でpyserialが読み込まれない。。。
原因はBlenderコンソールという、
Blender専用のpythonエディタ上で作業していたから。Mayaも一緒かな?
というわけで、コンソールからフォルダを指定してModuleを読み込めば使えるのか?というわけでエラー時の対処法まとめ


pythonの保存場所は次のコマンドで
import sys
sys.prefix



「Blender のpython」でpip及びpyserialをインストール(ファイルをコピペ?)しなきゃでした ><



▪️
▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️
       for Windows

▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️

【Win で pyserial】 ★★★
・・・pyserialがどーしても使えない(インストールできない)ので
思い切ってpythonのインストールをはじめから。

①完全にアンインストール (最後にフォルダ残りかすも削除)
②新規インストール
ここまでで3分
③pip install pyserial をcmdで実行。OK
    しかしpipのアップグレードしてとのことで言われるままにアップデートを実行。が、その後再度pyserialインストールしようとするが更新されていない感じ。もしかしたら、さきにアップグレードするべき?

=========================
てか、mayaでもpyserialつかえた!!キタコレーー!!!!
★★★★★★★★(´艸`*)★★★★★★★★★★


④site-packagesのsrialフォルダをコピー
⑤mayaのpythonフォルダのLib/site-packagesフォルダがあるので貼る
※ちなみにmayaでsys.prefixでpythonフォルダしらべる
⑥あとはArduinoをインストールして接続(ポート認識のため)
⑥あとはblenderのときとおなじ

import serial
serial.Serial("COM3",9600)

今までは余計なことたくさんしててファイルがおかしくなってたぽい。。クリーンインストールしたら何も問題なさそう(^o^)/

=============================
Windowsでpipのエラー出たとき、
cmdで
python -m pip install

これで一旦反応見る。
必要ならpipのアップグレード。

その後
python -m pip install pyserial
==============================


Mayaでオブジェクトの位置からLEDのPWM制御は完成!
あとはpython APIで処理速度を高めるとこまでマスターしたい。


以下プログラム
◆Arduino
char input[4]; //受信した文字列の格納
int i = 0; //文字数のカウンタ
int val = 0; //受信した数値(変換後)
int ledVal = 0; //LEDにPWM出力する値

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(3,OUTPUT);
pinMode(13,OUTPUT);
}

// シリアル通信で受信したデータを数値に変換
int serialNumVal(){
// データ受信した場合の処理
if (Serial.available()) {
input[i] = Serial.read();
// 文字数が3以上 or 末尾文字がある場合の処理
if (i > 2 || input[i] == '.') {
input[i] = '\0'; // 末尾に終端文字の挿入
val = atoi(input); // 文字列を数値に変換
Serial.write(input); // 文字列を送信
Serial.write("\n");
i = 0; // カウンタの初期化
}
else { i++; }
}
return val;
}

void loop() {
ledVal = serialNumVal();
// A3Pinに通電
analogWrite(3,ledVal);
// 基盤のD13PinLEDを点灯
if(ledVal>100){digitalWrite(13,HIGH);}
else{digitalWrite(13,LOW);}
}

◆Python for maya
##========================================================
## maya で ballオブジェクトのYと連動してシリアル送信 フ
##========================================================

# まずはArduinoにポート接続
#import serial
#ser=serial.Serial('COM3', 9600)
#ser.close() #最後に閉じる

# 次にMayaからシリアル送信する
import maya.cmds as mc

def com():
pos = mc.getAttr("ball.translateY")
ledCheck = str(int(pos))+"."
ser.write(ledCheck.encode())

# HUDでイベント察知して更新
mc.headsUpDisplay( 'ArduinoRunning1', s=1, b=5,lw=100,dw=200, l='AraduinoRunninavga',ev="timeChanged",command="com()") #HUD作成
#mc.headsUpDisplay( 'ArduinoRunning1', s=1, b=5,lw=100,dw=200, l='AraduinoRunninavga',ev="timeChanged",command="com()",e=True) #HUD作成
#mc.headsUpDisplay( 'ArduinoRunning1',rem=True) # 最後に削除

===================
pyserial格納場所

パソコン👉 Cドライブ/python27/Lib/site-packages/serial
MAYA👉 C/program file/auto desk/maya2016/python/Lib/site-packages

コマンドラインでインストールしたあとmayaにフォルダをコピペすると良い?