ラベル #vvvv_jp の投稿を表示しています。 すべての投稿を表示
ラベル #vvvv_jp の投稿を表示しています。 すべての投稿を表示

2015年1月3日土曜日

vvvvでシェーダー入門②

2.Tutolial Effects - Manipulatig Colors

20~23行目に注目!!

最初の部分では、
return 1;
になっており、Rendererには白が出力されているはず。
今回はこのCOLORの部分をさわります。

◎float4 = color of a pixel
 float4はピクセルの色


float4(red, green, blue, alpha)を示してる。
float4(1,0,0,1);で赤を示す。

return float4(1,0,0,1);
に変えてみましょう!

Control + S で保存し、結果を反映。
赤になったはず。





















次に、colでまとめて扱いやすくするために、
float4 col;
col = float(1, 0, 0, 1);
return col;

こんな感じで書いてもらったら、同じ結果が返ってくるはず。



さらに、
float4 col;
col = float(1, 0, 0, 1);
col /= 2;
return col;

これで、colの値を半分に。
得られた結果は(0.5, 0, 0, 0.5)
になるはずだから、色も半分になってるはず。





















◎Accessing individual color components/channels
 個々の色をについて扱う場合

個々の値について、扱う場合は、
Colorを出力する場面での、float4は(r,g,b,a)を示すので、

col.g = col.r/2;
と書きかえれば、gの値を先述のrの値を利用して書くことができます。



















col = col.bgra;
のような書き方を加えるとまた色がかわりますね。
この場合は結果は、(1,0.5,0,1)が返ってきてるはずです。
.rb 
.rbba など色々ためしてみてください。
























◎Displaying a texture
 テクスチャーを表示させるには

FileTexture(EX.9 Texture)の入力をしているますが、表示されていないはず。
結果を返すためには、
return tex2D(Samp, In.TexCd);
を入力する必要があります。

公式ページとちょっとちがいますが、colを定義しているので、
col = tex2D(Samp, In.TexCd);
return col.rgba;
と書いてみました。

こんな感じ。
























return col.rgba; を 
return col.b;にすると青色だけぬけるみたいです。
























◎Inverting a texture
 テクスチャーの色を反転させる

col.rgb = 1 - col.rgb;

return col.rgbaを return colに変更
returnでcolの結果を返すことにより、Invertさせてます。
























◎Constracting a texture
 テクスチャーのコントラストを扱う

       float4 col;
      col = tex2D(Samp, In.TexCd);
      col.rgb -= 0.5;
      col.rgb *= Contrast;
      col.rgb += 0.5;
      return col;
      return tex2D (Samp, In.TexCd);

と、打ってみたんですがちょっとエラーが発生。
本文では、Contrastを定義しましょうってことで、定義しましたが、
思った反応が得られなかったらので、
コントラストは外部からいじることにしました。

上記の入力後、3行目くらいに
float Contrastを入力し、Inputピンを増やし、
パッチ上で入力できるようにしました。






























◎Converting to grayscale
 グレースケールの作り方

無理やりやる方法は 
redを30%にGreenを0.59%に、blueを10%にすれば良いので、
こんな感じで書きます。
col.rgba = col.r*0.3 + col.g*0.59 + col.b*0.11;
を入力します。

















もっとエレガントにやるには dot productを使いましょう
const floats lumCoeff ={0.3, 0.59, 0.11};
col.rgb = dot(col.rgb, lumCoeff);
を入力します。






















◎Reusing code in functions
 functionを使い、再利用するっていう方法

今まで、COLORの中を触ってきましたが、
その上にConvertToGrayというfunctionを作り、
COLORの中でつかいます。

以下、functionの部分
float4 ConvertToGray(float4 col)
{
    const float4 lumcoeff = {0.3, 0.59, 0.11, 0};
    return dot(col, lumcoeff);
}

COLORの中に、return ConvertToGray(col); を入力し、
functionを利用し結果を返してください。























こんな感じです。


Junky_Inc

vvvvでシェーダー入門①

あけましておめでとうございます!

昨年は色々な方に読んでもらえて本当に光栄でした。
今年もちょくちょくブログ書いていくので、
是非ともご覧ください。



今回はやっと正月の休み(1日ですが←)もらえたので、
せっかくなのでブログ書こうかと思いまして。

シェーダーとか今までやったことなかったので、
基礎だけでも勉強しようと思います。

vvvvの公式ページ翻訳しながらゆるゆるやります。

公式ページのシェーダーについてのチュートリアルページ



PixelShadingとVertexShadingっていうのがあるらしい。

順番通り、PixelShadingからやってきます。


1.Tutolial Effect - PixelShader Prepalation

Pixel Shaderを書くための準備。


今回はTemplate(EX.9 Effect)を使いましょう。
Template EX.9 Effect をコントロールを押して、
クローンをつくっていいところに名前をつけて保存。
















つくったノードを右クリックでプログラムを開けるので、
とりあえず、公式ページのコードをコピペ。

以下コピペです。
「
//texture
texture Tex <string uiname="Texture";>;
sampler Samp = sampler_state    //sampler for doing the texture-lookup
{
    Texture   = (Tex);          //apply a texture to the sampler
    MipFilter = LINEAR;         //sampler states
    MinFilter = LINEAR;
    MagFilter = LINEAR;
};
 
//the data structure: "vertexshader to pixelshader"
//used as output data with the VS function
//and as input data with the PS function
struct vs2ps
{
    float4 Pos  : POSITION;
    float2 TexCd : TEXCOORD0;
};
 
float4 PS(vs2ps In): COLOR
{
    return 1;
}
 
technique TSimpleShader
{
    pass P0
    {
        VertexShader = null;
        PixelShader  = compile ps_2_0 PS();
    }
}
」
コピペ終了。



あとは、パッチを組むのですが、今回は公式ページどおりではなく、
カメラの方が扱うのが楽な気がしたので、勝手にカメラでためしてますw
cameraはよく使う、camera[transform sofrimage] (3d... です。
いっつも camera 3dでノード出してます!

View、ProjectionをそれぞれRendererの同様の名前に接続し、
操作は、
control + P:遠近
control + O:回転
で、なんとなくでうごかせるはずですw






準備完了。


Junky_Inc

2014年12月3日水曜日

Advent Calendar Day3 vvvvvlogの書き方!(vvvvのブログの書き方)

お久しぶりです!

2014年末に向けて、Advent Calendarが開始しています!
プログラマーに、情報を交換したりするような文化があるらしく、
僕もvvvvにお世話になってるので参加させてらうことにしました!


vvvv Advenvt Calendar 2014
http://qiita.com/advent-calendar/2014/vvvv






さてさて、今回の内容は

「vvvvlogの書き方」です!


Advent Calendarが始まった目的として、
もちろん情報交換やユーザーが増えてほしい! っていうのもありますが、
もう一つの目的として、vvvvについてのチュートリアルやブログを書く人が増えてほしいというものがあります。
日本でももっともっと気軽に情報交換しあうような環境ができたらと思っています!
Do It With Others!!



◎vvvvのブログを書くのに必要なツール
・vvvv
・Blog(Bloggerを使ってます)
・Snipping Tool (Windows標準搭載、画像切り抜き)
・Evernote(内容保存&矢印などの編集用)

僕が使っているのは、以上の4点です。

























ブログをあげる場所と、画像切り抜きさえできれば誰でもできます!
snipping Toolは、Windows8であれば、
検索のところでsnipping toolと打つことで標準搭載されてるツールを使えます!
Evernoteじゃなくとも、書いている内容を保存できるとよいかもしれません。
途中で消えたら切ないです…。


◎ブログを書くための内容の作成
1.パッチを作る
2.手順になるように逆戻りor最初から同じようにパッチをつくる
3.文書で補足

vvvvの特徴や良いところの一つとして、
同じように組み立てる、真似することで再現をすることができるので、
このような順序で書けます!




◎ブログを書くためのポイント
・どの層に向けているのか
①未経験者、初心者
 vvvvの存在、魅力を伝えることが大切
②ライトユーザー、中級者
 親近感を与える、モチベーションを上げる、学習教材の提供
③ヘビーユーザー
 Tips,Contributionの提供


・文字を読まなくてもパッチを見ればわかる
 vvvvは、パッチを真似したりするだけで、同じような表現ができる。
 つまり、同じような感動を共有することができるところがよいところの一つだと思っています。
 画像を見るだけで、情報やパッチの意図を共有できる言語であるということを意識して
 もらえると様々な工夫ができると思います!
 画像を上げるときは、ノードの文字が見えるような解像度で!
 I/O BOXを接続し、内包する数値を可視化する!
 そんな感じです!


・作る目的、作った目的を明確にする
 プログラミングを勉強していくにあたり、初心者講座を積み重ねていくことで
 結果的に何かは作れるけど、できた結果、目的が不明瞭になってしまうことがあります。
 日本では、外部に開けているようなコミュニティの形成をしていけたらよいと思うので、
 できる範囲で、何をつくるためだったのか、こういうことをするために、このパッチを組んだ!
 みたいのを一言添えてもらえると、有意義な情報交換ができると思います!


◎ブログをはじめてよかったこと
・不完全な理解だったことの理解が深まった
・パッチ内の整理が少し上手くなった
・自分のことを知ってくれる人が増え、vvvvユーザーのみなさんと協力し、
 ものづくりをすることができるようになった
 (助けてもらえることばっかりです。)←
・情報発信することで、自分の得意分野が見えてきた

大変な面も多かったりしますが、
ブログをはじめてから得られるものの方が実は多かったです!







◎最後に…
今回は僕なりのブログの書き方を書いてみました!
4月からvvvvを始めた僕ですが、実はプログラマーではありません。
MAXもopenFrameworksも挫折して、たどり着いたvvvvです。
生産性の高いvvvvと、オープンマインドなvvvvの日本コミュニティに支えてもらいながら、
日々楽しく実験してます!新しい世界も見えてきました!

また、vvvvの日本のユーザーさんたちは、
みなさんやさしくお互い情報を共有しながら、技術を向上しあってます!
Twitter(#vvvv_jp)で日々情報をやりとりしてますが、
たまには、ブログを書いてvvvvの日本コミュニティを盛り上げていくのはどうでしょうか?


今なら日本のvvvvの先駆者になれますよー!笑





P.S.困ったら気軽にリプライやメッセください!
Twitter:@Junky_Inc






参考資料)
@yhy_jpさん 【vvvvプレゼン】僕にとっての「vvvv」とは。布教活動について。
https://www.youtube.com/watch?v=DUvM57VvtR0
どの層に向けているのか の部分を参考にさせていただきました。

2014年11月23日日曜日

[vvvvオフ会]感想:第一回vvvvオフ会実施しました!

本日、主催側で、第1回vvvvオフ会を実施させていただきました!

詳しい説明は次回にしようかと思いますが、
内容をさっくり報告させていただこうと思います!




















第一回内容はこんな感じ。


















vvvvを使ってVJパッチを作ろう!という企画でした!
目標は、こんな感じ!!



みんなでこんな感じでがんばりました!




今回使用したノードは以下です。
Quad 
Renderer
XY 座標について
Transform(Scale,Translate,Rotate)
I/O box
Color(HSV,RGB)
LFO
Helpパッチの開き方
Beat Detector(Value) (Helpパッチの開き方)
Random
Map
Damper
Group
Inspectorの開き方
Segment(Resolution,Inner radius)

FFT(4ch)
FileTexture
CircularSpread
Camera

詳しい解説は、ブログに[vvvvオフ会]という名前であげようと思っています。
…ちなみに全部終わりませんでした。←
意外と詰め込んだ内容になってしまったみたいで…。

以下に、今回使用したパッチと、途中までのパッチを残させてもらってます。


変顔になってますが、僕が基礎編を担当させてもらいました!











応用編、vvvvの魅力についてビデオチュートリアルでおなじみの
平野さん(@yhy_jp)が解説してくれました!

















ひたすら緊張していたのですが、
多くの人に興味を持ってもらって、一緒に勉強して本当に楽しかったです!
来てくださった方ありがとうございました!

1か月に1回くらい継続して開催していければと思ってますので、
ゆるーく、楽しくつづけられたらと思います!
今回これなかった方、興味ある方も次回とかにでも顔出してもらえればと思います。
これからもよろしくお願いしまーす!


今日の感想、次回の内容、ブログに書いてほしい内容など
なんでもお待ちしております!



Junky_Inc

2014年11月15日土曜日

[VVVVJ_10]音の高さごとにエフェクトを加えてみよう!FFT

インタラクティブに音に反応させていくにあたって、
今まではBeat Detectorというノードを使い、
ビートのみを検出してきました。

しかし、VJでは高い音に反応しているものや、
メインの音に反応しているもの
低い音に反応しているもの…様々だと思います。


それをするためには、
解析をしなきゃだめなんですが・・・

vvvvには、便利なノードがあります!!
FFT です!!
今回は、4chのノードを用いてパッチをつくりました!

アウトレットの一番左を一つあけて
Bass、LowMid、HighMid、Highの
4chで出力しています!

Mapの値は、Sourceを0-0.3、Destinationを0-2に設定しています。




















ちなみに、一番左のアウトレットFFT(256)は256段階に音を分解することができます。
一つ前のブログで上げた動画の背景は256段階に分解したものを利用してます。


Junky_Inc

[VVVVJ_10]パッチ作ってみたのであげてみた。

VVVVでノリでVJ用パッチつくってみた。
基本的なコードの組み合わせで書いてみた!
よかったらご覧ください!

FFTとかも、今後簡単に解説するのでー!

Tumblurに動画あげてますー!

http://junky-inc.tumblr.com/post/102687304516/vvvvj-music-lets-easy


VVVVJ流行るといいなぁー。
オフ会の内容これでもいいかもなー。

[VVVVJ_9]ドット絵のエフェクト

Texture Filterシリーズ!
Dotsを使ってみました!

Texture Filterの使い方は前回参照!
色々使い勝手が良いですね!

画像のようにつないでもらうことで、
エフェクトBeatに合わせていろいろな変化をつけることができます!
ドットもおしゃんてぃですねw




















こんな感じ!
動かしてみると楽しいですよー!!

あっ…
カラフルな画像使ってるのは色々わかりやすいかなーと思ってです。
自分の撮影した画像でよければ、
サンプル用に利用してもらえればと思いますー!

以下画像です。




























Junky_Inc

[VVVVJ_8]ポリゴン迫る。

前回ポリゴナイズをかけたやつをつかって、
画像が近づいたり遠のいたりというものを作ってみましょう!

使うのは何回か前のブログで書いたCamera(3d)ノード!
Rendereに接続してみましょう!

今回は滑らかさを出す方法をDamperではなく
Oscilatorを用いてます。
Animationノードたちも様々なものがあるので探検してみると楽しいですね!





















Junky_Inc