2014年10月25日土曜日

[メモ]Kinect v2をつかって3D Scaningしてみた。


たまには、vvvvではないものもあげてみようかと。
忘れないようにメモメモ。


兼ねてから、3D スキャナが欲しいなぁーと、思ってたので、
Kinect v2 を3Dスキャナとして使ってみた。

取り込んだのは以下のキャップ。







使用機材、ソフト
・Mac Book Pro(Boot Camp Windows 8.1)
・Kinect v2

使い方はいたって簡単でした。

上記、リンクから3D Builderをダウンロード。
アプリケーションを起動し、Kinect v2をつないで、
Scan!!!!!
Start!!!!

映像が表示されるので、取り込みたいもののまわりをKinectを
もってゆっくり回ります。
少しでも早いとやりなおしとかになります。
グラボとか、PCの処理性能によって早くても大丈夫かどうかは左右されそうです。

ちなみに、僕はキャップの回りを30分くらい回ってましたw
動き方は、下の参考資料のページで動画で説明してくれてます。




































終わったらCompleteボタン!!


















こんなのが生成されます。


















あとは、右上の丸いところをてきとーにいじったら、
書き出したり、文字を入れたり、できるみたいです。






























以下、3Dスキャン後の動画です。
https://vine.co/v/OhgeJd5DnMu





保存形式は、3mfとstlの2種類だけでした。
vvvvでは使える拡張子がc4dだったはずなので、
どっかで変換しなきゃだめなのかな??

いずれにしても、簡単にモデリングできたので、
何かに使えそう…。
vvvvで使えたらいいなー!
3D詳しい人いたらコメントなど待ってます。

いつか、右上の丸い操作盤の使い方もまとめてみようかな。



Junky_Inc



参考ページ)
https://www.geeky-gadgets.com/create-your-own-colour-full-3d-body-scan-using-kinect-v2-and-3d-builder-app-24-10-2014/

2014年10月24日金曜日

[VVVVlog16 チュートリアル⑬]Homographyノード、マッピングに1歩近づきます!

プロジェクションマッピングをするためには、
マッピングをしなければなりません。


3Dのモデルを作成し、キャリブレーションし…
ってやると、てんやわんやになると思うので、
ヘルプパッチなどをうまく使って、
「手動」でやろうとおもってます!!笑




マッピングに少し近づくわけですが、
ここで、ヘルプパッチの引用の方法
覚えてもらえるといいかと思います。


ヘルプパッチの出し方は、前回参照
ノードを選択し、F1を押すだけです!簡単!


今回は「Homography」ノードのヘルプパッチを使おうかと思います。
Homographyノードを出して、ヘルプパッチを出します。
以下のようなものがでてくると思います。


















次に、必要範囲を選択し、Control+Cコピー、
最初開いてたノードにControl+Vペースト をします。




Homographyノードの操作は簡単です。
Screen Space Pointsと書いてあるI/O BOXの点を右ドラッグで動かすと動きます!
(マウスを家に忘れてしまい、トラックパッドでは形状変えれません…。ごめんなさい…。)



また、Homographyのノードにカーソルをかさねてもらうと
Transform(2d)の文字が出てくると思います。
Transformの要素を含んでいるので、
変形をさせることができるノードだとわかると思います。


そのため、Quadなどの形にも接続できます。
真ん中の列にQuad、Rendererを追加してみました





















これで、形を変形できるようになったと思います。
好きなところに、好きな形でQuadをセッティングできるようになりましたかね?





プロジェクションマッピング実現に少し近づいた気がしましたかね?

そろそろプロジェクターでも買っておいた方がよいかもしれませんね。笑
そして、マウスを買ってなかった方はそろそろ買っておいた方がよいかもしれません。
真ん中にホイールがついているやつをぜひとも選んでください。




------------------------------------------
補足説明
・Homographyのヘルプパッチの下部にSpreadで複数Quadを出しているものがありますが。
 今回のプロジェクションは個別にQuadを扱いたいので、Spreadを使っているものを
 使わずにやっていこうかと思っています。

・マウスを忘れると困るシリーズ。Homographyでしたが、ほかにも困るときがあります。
 メインメニューを出すときに、マウスの真ん中のホイールを押すのですが、
 マウス忘れた!!!
 そんな時は、Shift+右クリックで出すことができます。
 困ったときは試してください!


Junky_Inc

2014年10月23日木曜日

[VVVVlog15 Tips1]if文の書き方 >=,=,<=(Value)

チュートリアルブログの方が若干滞り気味ですが…
vvvvTipsという題で、
僕が勝手につまづいたり、ふと思ったことを書いていくことにしました。笑
チュートリアルみたいな細かい説明はしないと思います。
そして、新たに説明用は組まず、僕のパッチの一部をひっぱるだけにします。



僕はプログラマーあがりではないのですが、
よくプログラム基礎本とかをパラパラ読んでいると、
if文というのをよく見ます。

「もしAだったら、Bで、そうじゃなかったらC」
みたいな感じ。



今回、複数のプログラムを自動で制御する必要が出てきたので、
数値を使って簡易的にif文を書いてみようかと思いました。
if文とかプログラマーっぽい!!←



使ったノードは
「 >=、=、<= 」 の3つです!
結果のところに見やすいようにToggleを付けてON、OFFを見てます。

>= は、~以上なら1(ON)を返す。~以下なら0(OFF)を返す。
=  は、一致した場合1(ON)を返す。じゃなかったら0(OFF)を返す。
<= は、=以下なら1(ON)を返す。~以上なら0(OFF)を返す。

みたいな感じです。























=ノードEpsilonは前後の許容範囲的な感じのものを示してます。
このパッチでは境界にあたる数値を15に設定してみました。




うむ。便利。
というか、今まで実験とか、手動でも管理できる大雑把なものばっかりだったんだなーと
ふと思いました。
そして、今日も実験。vvvv使って牛乳逆流させてました。



2014年10月17日金曜日

[VVVVlog14 チュートリアル⑫]応用編!LeapMotion Tips3指を数える!Count

第三弾Leap Tips!!

C.指の本数を数えてみる

もはや勢いでやります!!
以下、画像参照!!



















以上!!!笑



ヘルプパッチも一緒に載せてますが、
スライスの数( )を、数値として出します!的な感じです!
Finger IDのアウトレットにつないで、
Countノード通して出力してみました!

指のカウントをSwitchにしてみたり…
指の数が数えれたらアイディア次第で広がるのではないでしょうか?


第三弾が、めっちゃ浅いですが…
一旦、これでLeap3連続Tips終了しまーす。


次回からは、プロジェクションマッピングに向かって、
ずんずんやっていきたいと思います!



[VVVVlog13 チュートリアル⑪]応用編!LeapMotion Tips2、camera

さぁさぁ、LeapMotion Tips第二弾もやっていきましょう!
前回記事は、ここです。

今回は、B.カメラ操作をしてみる
という回です。
カメラ操作といっても、Renderer内の視点をかえてみるというやり方ですね。

Camera(Transform SoftImage)ノードを出してみましょう。
 インレット一番目YawがX軸方向の回転
 インレット二番目Initial PitchがY軸方向の回転を示します。

 なので、X座標とYaw、Y座標をInitial Pitchへ接続します。
 今回はSource Maximamを1に設定しておきましょう。

 あとは、以下の画像のように接続してみましょう。
 Quadを色々な方向から見ることができます。

















これでカメラは操作できるようになりました!


しかし、LeapMotionの認識からはずれると、
Quadは消えてしまいますね!


ここでPointです!

AvoidNILをはさむ!
AvoidNILを挟むことで、HandPositionをロストしたときに、
0の値を出力するので、Quadが消えなくなります。
今回はLeapとVectorの間に挟みました。

※この手法は、以前にvvvvookにも載っている
 Takuma Nakataさん(@tkumatn)に教えていただきました!




こんな感じで、LeapMotionを用いてカメラの位置を変えたりすることもできます。

今回は2dのQuadを用いましたが、3dの物体を扱えるようになると
もっと幅が広がるので、ぜひとも試してください!!


本日のワンポイントは、AboidNIL!!



[VVVVlog12 チュートリアル⑩]応用編!LeapMotion Tips1、Translate

さぁ…お待ちかね。
LeapMotionの出番です!!


今回は応用編ということで、
Leapノードをいじってみたいと思います。
LeapMotionは手の位置をとったり、指の本数を取ったりというセンサーなのですが、
細かいことは、公式サイト参照で。←


基本的には、ヘルプパッチを開いてもらえれば動き、
取れる情報もわかるのですが、
ちょっと使い方のコツを紹介できたらと思います。
※ヘルプパッチの開き方は前回記事参照でお願いします。
※LeapMotionのaddonは、最新版のaddonには入ってたと思います。
 addonの入れ方は、vvvvlog2を参照で。



前置きが長かったですが…はじめますねー!

今回は、
A.LeapMotionを使ってQuadを移動させる
B.カメラ操作をしてみる
C.指の本数を数えてみる
この3つをやってみたいと思います。



①移動には、LeapノードのHandPositionを使ってみたいと思います。
 HandPositionのデータを見ると(3)となっており、
 3種類のデータをとることができています。
 X座標、Y座標、Z座標ですね。
 こういう時は、Vectorが便利です。
 今回はVector(3d Split)を用います。

 こんな感じでプログラムをつくってみてください。














自由自在に動いたでしょうか?


ここでPointなのですが…
Yの値、0より下にいかないですよね?



Mapノードを用いて数値を振り分ける
 データを見ながら行ってもらえると良いのですが、
 LeapのY座標は0からはじまっており、
 だいたい0.5くらいまでがいい感じに認識できてます。

 なので、Mapを用いて0~0.5を、-1~1に振り分けます。
 Source Min/Maxを0/0.5
 Destination Min/Maxを-1/1
 インレットに入力してもらえるとよいかと思います。

















Y座標を一番下まで用いることができるようになりましたかね?

こんな感じでLeapからデータをとってくることができます。
つづきは…と思ったのですが、

長くなりそうなので、次回へ繰り越します。




[VVVVlog11 チュートリアル⑨]ヘルプパッチの見方、インスペクタの開き方

今回覚える覚えることは
①F1:ヘルプパッチを開く
②Control + i :インスペクタを開く


以上!!!!!













…で、終わろうと思ったのですが、軽く説明を…。


F1:ヘルプパッチ
 vvvvはヘルプパッチが充実しております。
 初めてのノードに出会ったときは、
 ヘルプパッチを見ると使用例などを見ることができます。

 Transformのヘルプパッチは以下のような感じです。

















ヘルプパッチは参照だけでなく、
選択し、Control+C(コピー)、Control + V(ペースト)
自分のプログラムに利用することができます。

※書き換えたのちに保存するとヘルプパッチ自体が変わってしまうので
 ヘルプパッチはなるべく変更せず、閉じることをおススメします!


Control + i :インスペクタ
 インスペクタを開くことで、ノードの詳しい情報を見ることができます。
 また、不必要なインレット、アウトレットのピンを非表示にしたり、
 非表示になっているものを表示にしたりすることができます。

前回のColorノードのインスペクタを表示してみました。
Chooser Styleというところを右クリックしてもらうと
HSVAからRGBAに変更したりすることができます。





















このように、ノードの詳しい情報を見たり、
変更を加えることができるのがインスペクタです。

画面が広ければ、常に出しておくと良いですね!!




色々説明を書きましたが、今回は
F1:ヘルプパッチ
Control + i:インスペクタ
Control + C,Control + V:コピーアンドペースト

これだけ覚えておけばOKです!
すぐに使わないものもあると思いますが、是非頭の隅にいれておいてください。






[VVVVlog10 チュートリアル⑧]Colorノードで色を変えよう!

Colorノードを用いて色を変えたいと思います。
今回は方法の提示をするので、色の変化などは色々ためしてもらえると幸いです。

色関連で良く使うノードで、今回は3つ選ばせてもらいました!
1.Color
2.HSV
3.RGB
















①Colorノードを出してみましょう!
 右ダブルクリックでColorを選択すればノードを出すことができます。

 Colorノードの操作にはマウスを使います。
 右ドラッグで左右で    H の値の変更
 右ドラッグ+Control上下で S の値の変更
 右ドラッグで上下で    V の値の変更
 右ドラッグ+Shiftで    A の値の変更

ちょっと覚えにくいですが、直感的に操作できるのが、
Colorノードの良いところです。


HSV、RGBノードは通常通りノードを出してください。

HSVは、H(色相)、S(彩度)、V(明度)、A(透明度)
RGBは、R(Red)、G(Green)、B(Blue)、A(Alpha、透明度)

を示します。

なんのこっちゃわからんと思った方は、
とりあえず数値を変えて色を混ぜ混ぜしてみてください。笑


HSV、RGBノードはColorノードに接続することができるので、
つなぐことで色の変化を見ることができます。

以下のような感じですね!
入力方法はI/O BOXの回を見てもらえると良いかと思います!


















※ちなみに、水色と紫は、
 僕の大好きなMonsters Universityのサリーの毛皮色です。←



Colorノードは、Quadなどのグラフィックを表示する
ノードにも接続することができます。
Quadノードのインレットを触ってみて、Colorを見つけ接続してみてください!



今回は、みなさんの探求心にお任せして、
様々な色づくり、Quadへの接続…色々試してみてください!



2014年10月16日木曜日

[VVVVlog9 チュートリアル⑦] Mouseで動かしてみよう!Vectorも!

プロジェクションマッピングを目指して、
ずんずん進めているのですが、ちょっと寄り道をしようと思います。

LeapMotionのようなセンサーもaddonsで手軽に使えるところも
vvvvの良いところなので、近いうちに説明できたらと思っているので、その布石です。笑


※説明がちょっと複雑になってしまったので、
 わからんちんってなった場合は、とりあえず、画像を参考につないでみてください!



今回使う新しいノードは、
Mouse(Device Desktop)、I/O欄の2D Vector
Mouse(Device Window)、Vector(2d Split)です。

目標は、
「マウスにくっついてくる小さいQuadです。」



まず、Mouseからどのようなデータが得られるか確認してみましょう。

Mouse(Device Desktop)、2D Vectorを出してください。
 Mouseは左ダブルクリックからの通常のノードの出し方
 2D Vectorは、右ダブルクリックをし、I/O BOXの2D Vectorを選んでください。

 2D Vectorを選択すると、下のような二行のI/O BOXが出現するはずです!
 まぁ要するに2行のI/O BOXなだけですね。



























Mouse(Device Desktop)左から2番目のアウトレットPositionXY
 2D Vectorのインレットにつなぎましょう。

 すると、Desktop全体をRendererと考えたときのXY座標が出てくると思います。
 vvvvの座標の考え方は、vvvvlog6を参照。



























このように、Mouseカーソルの位置の情報をとることができます。

次に、Mouseからの情報をつかって、Quad、Transform(2d)で動かしてみましょう!
 
③Mouse(Device Window)、Quad、Transformを出してください。
 Mouse(Device Window)は、デスクトップではなく、Renderer内の座標が表示されます。


これをTransformにつないで、
マウスについてくるQuadを出現させようと思うのですが…
問題があります…。

Transformのインレットに直接つないでも思った様にデータ入力できません。
試しにつないでみると…なんか変…。






















そこで、Vector(2d Split)の登場です!
Vector(2d Split)は以下のように使います。

④画面を参考に、I/O BOXとVector(2d Split)を接続してみてください。
 ついでに、Quadの大きさ(ScaleXY)をわかりやすいように0.1にしてみました。


















どうでしょう?
マウスに追従するQuadを作成することができたでしょうか?
Vector(Split)は複数の値を分ける場合に用いることができます。

マウスなどのデバイスから様々な情報を得ることができると思いますが、
情報を処理しやすく分け、振り分けることで、思ったように動かせるようになります。



※番外編ですが…
 Vectorで分けた数値をScaleにつないでみても面白い反応が見られると思います!
 vvvvはつなげることができる部分が少し大きくなるので、
 それを目安に色々つないでみると面白い反応が得られると思いますよー!



遊び心大切!!