3DCG屋さんの活動記録

PROFILE ★★こんな人です

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

2017年1月12日木曜日

Processing openCVで動体認識


openCVで動体認識

processing openCVを使って、遠景動画で動体認識してみました。
サンプルの BackgroundSubtraction をそのまま使ってます。
動画だけ別途用意してみました。



opencv.startBackgroundSubtraction(30,100,0.4)
で背景の閾値を調整するようです。
()の中身は・・・よくわかりませんでした。

(①,②,③)としてなんとなく
①?
②動体認識が消えるまでの時間?
③判定感覚時間?(用意した動画が30fpsなので1/30=0.033333より大きい数字に)

本当簡単に試せてProcessingの魅力を改めて感じます。
ただ、ちゃんとライブラリを理解して作り込むには、まだまだ勉強せねば。


これを応用して、動体検出 ➡︎ 輪郭検出➡︎ box2Dの衝突判定
と進めて行こうと思います。

当面の目標はこれ!!
Kinect・・・Processingではまだ未使用だけど、やっぱり便利なのかな



MayaでベベルノードだけアクティブにするPythonスクリプト


Maya pythonスクリプト


パスをベベルプラスで押し出したオブジェクトが複数あり、
一括で押し出し距離を変更したいとき・・・面倒ですよね。

オブジェクトを選択して実行すると、ベベルノードだけがアクティブになるスクリプト作りました。

# coding: UTF-8
##===================================================
## ベベルプラスで押し出したオブジェクトのベベルノードを一括選択
##===================================================
#  使い方:押し出したオブジェクトを選択、実行でベベルノードのみ選択
#  結果:ベベルノードだけがアクティブになります。
#
#

import maya.cmds as  mc

#list select objects  to Shapes
selObj = mc.ls(sl=True)
selObjShapes = mc.listRelatives(list)

bevelNodes = []

#list bevelNodes
for i in listShapes:
    connectSource1 = mc.listConnections(i+".inMesh",s=True)
    connectSource2 = mc.listConnections(connectSource1[0]+".inputPolymesh",s=True)
    bevelNodes.append(connectSource2[0])
 
print bevelNodes
#[u'bevelPlus4', u'bevelPlus3', u'bevelPlus1', u'bevelPlus2']




内容としては、
選択したオブジェクトをリスト化。
ここでシェイプノードのリストに変換。
各シェイプノードで、コネクションを遡ってベベルノード名を取得。
ベベルノード名を、ベベルノードリストに追加。
これをシェイプノードのリストぶんだけfor文で繰り返す。



今回は、ベベルノードがアクティブになっただけで・・・
さらにこの後AttributeSpreadSheetとかで値を変更する必要があります。

時間あれば、リアルタイムに値が反映される attrFieldSlider を使ってみようと思います。


2017年1月9日月曜日

box2D for Processing で物理挙動を試す


processingってライブラリの追加が簡単だから便利です。


今回は物理シミュレーションを簡単に使える
box2Dを試してみます。

Processingのツールバーから
スケッチ/ライブラリをインポート
で「box2D for Processing」を検索してDL。

DLインストール後、再起動すると
サンプルを確認することができます。

以下、最初から入っているサンプルをまとめてみました。


=========================
①ApplyForceAttractMouse
自動で□がランダムに落下。
マウスをクリックすると、カーソルに□が引き寄せられる。


②ApplyForceSimpleWind
自動で□がランダムに落下。
マウスをクリックすると、右向きの風が吹く。



③AttractionApplyForce
可動サークルと引力サークル。
自動で引き寄せられる。




④Blobby
繋がった◯の輪が落下してきて、
ソフトボディ的な挙動を示す。


⑤box2d_exercise_solved
マウスクリックで□が生成。。
重力落下。
床なし画面から消える。



⑥box2d_exercise
マウスクリックで□が生成。
位置固定。




 
⑦Boxes
□が自動生成。
重力落下。
既存の床で干渉。


⑧BridgeExample
サークルで可動の橋。
マウスクリックで□が生成。
重力で落下。



⑨BumpySurfaceNoise
既存の床(ノイズ形状)。
マウスクリックで◯が生成。
重力落下、干渉。



⑩BumpySurfaceSine
既存の床(サイン波形状)。
マウスクリックで◯が生成。
重力落下、干渉。




11 .BumpySurfaceStraightLine
既存の床(直線形状)。
マウスクリックで◯が生成。
重力落下、干渉。



12 .CollisionListening
自動で◯が降ってくる。
床に落下。
◯同士が触れると赤に変色。



13 .CollisionListeningDeletion
自動で◯が降ってくる。
床に落下。
◯同士が触れると赤に変色。
一定時間で◯は消滅。



14 .CollisionAndControl
自動で◯が降ってくる。
床なし画面から消える。
□に干渉、触れると赤く変色。
マウスドラッグで□を引っ張れる。



15 .CollisionAndControllnterface
自動で◯が降ってくる。
床なし画面から消える。
□に干渉、触れると赤く変色。
マウスドラッグで□を引っ張れる。
□は◯との干渉で回転する。



16 .DistanceJoint
マウスクリックで2個◯が繋がったものが生成。
びよんびよん、と伸び縮み。




17 .Liquidy
マウスクリックで放出口生成。
自動で水が出続ける。



18 .Mouse
□が重力落下。
□をドラッグで引っ張れる。
上下左右の壁に干渉。



19 .MultiShapes
既存の床に干渉。
重力落下。
マウスクリックでオブジェクト生成。



20 .Polygons
既存の床に干渉。
重力落下。
マウスクリックでオブジェクト生成。



21 .RevoluteJoint
◯が自動で落下。
下にある回転棒が、マウスクリックで回転。
重力落下、棒に干渉。


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

以上。


試してみるだけでも全部面白いですが、
個人的には1,2,8,14が好き。
いろいろカスタマイズしてみたいです。