2016年12月23日金曜日

Processing でクラスを考える。よくわからんぞ。


Circle c1, c2;    //ColorCircleクラスのインスタンスを宣言

//Circleクラスの宣言
class Circle {
  float x, y, eSize, velocity;


↑こういう宣言があるとする。

違うのは、クラスの宣言と、インスタンスの宣言ちゅうことやね。
データなどをためる変数型などある。

このへんを知ってないと何が?なんだかわからなくなる。
そもそもだが、すでに作られているクラス=パッケージ化したものもある。

色情報を格納するデータ型 color がある。
画像も格納するデータ型 PImage などある。


Processingのときは Javaで書いているはずだが、上記のデータ型などのルールが
Java全部に適応されるのかは?? わかりませんw

C++のデータ型はこちら
https://www37.atwiki.jp/visualstudio/pages/38.html
みてみると colorなどないから、Processing の際の特有なものかな?

====
クラス名は自由に

2016年12月18日日曜日

地図データ


shape file = 共通データはこれみたい。

JPGIS形式 ってなんですか?
KML ってなんですか?

JPGIS → SHAPE → KML 


GeoJSON

https://github.com/moxuse/ofxGeoJSON 

あった、やっとみつけた。それっぽいの。

https://github.com/tangrams/ofVectorTile
こちらはベクター

初心者のアルゴリズム ?


やりたいことはあるが、
プログラムでどう表現していいか?わからない。

初期にぶつかるのは for

まず、円をだそうと思った。なにげなく思うのは、
円 を X、Yの場所へ記述  なってことは思いつくと思う。

→ ofCircle(500, 300, 120)
 円を書く呪文がある。
http://www.myu.ac.jp/~xkozima/lab/ofTutorial2.html
http://yoppa.org/ma2_10/1739.html


http://yoppa.org/ma2_10/1638.html
こちらを参考に構造をみていく。
======
//円の座標を記録するための、クラス変数
ofPoint pos;

of~~ というは型の宣言。
クラスと型はどうちがうのかな?

    //座標を初期化
    pos.x = 0;
    pos.y = 0;
pos というのは宣言され、実在するが、
それに、 . どっとをつけて、文字をいれたら、 オブジェクトがふえるのかな? ← これがインスタンス? ちがうな。

あと、setupで宣言しなくても、draw で 宣言 して使うこともできるみたい。

void testApp::draw(){
    //円を描く点をランダムに設定
    ofPoint pos;
    pos.set(ofRandom(0, ofGetWidth()), ofRandom(0, ofGetHeight()));
     
    //円の半径もランダムに
    float radius = ofRandom(1, 10);
     
    //色もランダムに
    ofSetColor(ofRandom(0, 255), ofRandom(0, 255), ofRandom(0, 255));
     
    //設定した場所と半径で、円を描く
    ofCircle(pos.x, pos.y, radius);
}


これのすごいのは、
オブジェクトを宣言しました。そもそもですが、
変数の型のことをクラス というとのことC++では。
型は流派、 いれるものが固定化されている決まり。

ofPoint というクラスは入れるもの、入るものが決まっているはず。。。。

ほら。

ほら。
なんか詳しく書いてありますが、混乱してきた。

わけが、わからなくてしているのはこちら。
ofPoint pos;
pos.set(ofRandom(0, ofGetWidth()), ofRandom(0, ofGetHeight()));


まず、最初の ofPoint pos;  変数宣言なのでよしとしましょう。 次です。

pos.set(ofRandom(0, ofGetWidth()), ofRandom(0, ofGetHeight()));

http://yoppa.org/ma2_10/2032.html
pos  ドッドセット  なんでw? pos のままだとだめでした。  set をしないと


http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10132459665
ここにかいてあった。

typedef ofVec3f ofPoint; と定義されてあるとのこと。
→ ofVec3f こいつに変換されるとのことだが、、、。

ofVec2fは、ofVec3f と別物。数字みたら想像できるかもだが、2は2次元、3は3次元。

※ちなみに、typedef は 型に新しい名前をつけるやつのようです。typedef ofVec3f ofPoint;  こちらリネームされたちゅうことやね。。。

はぁ ながかった。。

遠回りしましたが、
http://openframeworks.cc/documentation/math/ofVec3f/#show_set


呼び出して、設定する機能?のようです。 
この場合はファンクションと呼ばない?
クラス・メソッド?? むずかしいなぁ。









FBO VBO



Framebuffer Object(FBO)
Vertex Buffer Object (VBO)


OP基礎


app.h  こちらはヘッダファイル
部品を宣言

app.cpp こちらは実装ファイル
何をするか?記述。
http://openframeworks.jp/tutorials/firstSteps/002_openFrameworks_for_processing_users.html
宣言ファイルである hの中身。


変数をひとまとまり = 構造体
typedef struct Item {
 int code;  /* 商品コード */
 int name;  /* 商品名 */
 int price;  /* 価格  */
} ITEM, *LPITEM ;
これの他にC構造体っていう 違うのあるみたいだが、後日。


setup 準備
update 更新
draw 描画


gpuParticleSystemExample


gpuParticleSystemExample こちらをもとにして作ったこれ。
http://yasuhirohoshino.com/archives/30


.h って何をまとめているの?
修正したやつは、pingPongBuffer.h と新しいのがあるが、
なぜ? ofApp.h と分離したの?

→ OP基礎を。

結構修正しているので元ネタをまず解析しないと駄目だなぁ。

GPUということなので、CPUも使って動かすこともあるのね。
どうやってGPUを使うのだろう?

あとそもそも論で、パーティクルって?もおさえておかないと初心者は
あたまが混乱するかな。

ちょくちょくでてくる「FBO」「VBO」って??
もともとのやつ gpuParticleSystemExample こちらは、
位置と速度を別々なシェーダーで演算しているとのこと。
シェーダーって、位置 と 速度を演算する機能なのか?

ちなみに、FBOは FBO(Frame Buffer Object) みたいです。なんだこれ。
1つの描画結果としてframe を一時的に保管して持っておくオブジェクト。
http://qiita.com/edo_m18/items/95483cabf50494f53bb5

こちらに説明がありました。


なんかよくわからないが、Ping Pong FBO というのは、GPGPUの手法のひとつぽいです。
って書いてたが、GPGPUは画像処理以外の際にGPUを使うことを指すのだが、、。
これ画像ですよね。シェーダーって画像処理っていわないのかな??

あああ混乱。

オブジェクトってことで一応理解して、
シェーダーとは別みたいですね。 データもたせてシェーダーにわたすてきなことを書いてあるから。











シェイダーについて



なんとなくわかるがわからないシェーダー

GLSLシェーダーファイルの拡張子は .vert, .frag とのこと。
外部ファイルにシェーダーを分離することができるみたい。
.vs.fsとしている派閥もいるらしい。


GLSLってなんやねん。シェーディング言語みたい。
→ 3Dのみためを決める言語。
→ みため? 光源、陰影、とかとか。

OFでシェーダーを使うには ofShaderオブジェクト を使うらしいがaddon じゃないの?
http://tokyo.supersoftware.co.jp/code/720


画像にもつかえるのね。。理解。


  • Vertex shader
  • Geometry shader
  • Fragment shader
色々あるのね。

http://d.hatena.ne.jp/shu223/20141011/1413030973

Ga4のtest

これを押すとリンクするよ 参考にした記事はこちら