ビル・ゲイツの伝記読んで目覚めたはなし
ブログの1行目のときには着地点はどうしようかってことを考えながら始めるけど、もう2行目くらいになると、もう着地点なんてどうてもいいやってなって、最終的に燃え尽きたところで終わるのが、このブログ。
いつも行っている市立図書館の児童図書コーナーでエジソンの伝記を読んでいる少年がぼそっと言った一言がどうも、忘れられなかった。笑
「エジソンてなに、めっちゃ失敗してからすっげえ発明したんじゃん(群馬弁で)」
これ、俺が大学生のときにビル・ゲイツの伝記を読んでいたところに起きた感情を同じ価値のものをこの少年が、この年齢で獲得してやがる・・・。まじか少年。てそのときに思った。
実はイノベーションは失敗の先にあったらしい
いや、だって、その大学生の時まで、素晴らしいイノベーション(発明)って”天才”が「ぱっ!」ってうノリで発明できるものだと思ってた。
例えば、このエジソンのパターンだったら、きっと夢の中で
「エジソンくん、しっているか・・・実はな、白熱電球ってものはな、こういうシステムで、ここをこうやると、ぱっと光って実用的につかえるよ」
ってささやかれて、「パッ!」と思いつて、「はい、できた、いっちょ上がり〜!」的なことをイメージしてた。これが嘘じゃない、まじで。笑
だから、イノベーションを起こせるのはもう、一握りのハーバード大卒業の天才しかできないんだよ、きっと「パッ!」が降りてこないし。っておもっていた概念が崩壊した。
自分が、人生に全力になったのは、それから(ビル・ゲイツの伝記を読んでから)。そこで、
「お!なんだなんだ、好きなことを突き詰めて失敗しまくればイノベーションって起こせんじゃん、やば!」
から意識ができた。
なので、今日出会った少年は、意識ができたに違いない。悔しいけど羨ましい。
それが、今日の一瞬。
Openframeworksでブロック崩しもどきを作る②
さて、前回の続きです。今回は一気に完成版的なところまで行きます。
作るに関して参考にしている本はBeyond Interaction[改訂第2版] -クリエイティブ・コーディングのためのopenFrameworks実践ガイド
2.うごくものがある
を作っていきます。これは、もう単純に、
if (token){ ofSetColor(255, 255, 255); ofDrawCircle(location.x, location.y, 20); } ofDrawRectangle(mouseX-50, mouseY-25, 100, 50);
これで、書きました。tokenはキーボードの”b”を押すとTrueになるようになっています。なので、起動時はボールは動いてなくて、キーボードのbを打ったら動き始めるようになっています。同時に、ボールを当てるバー(Rectangle)もかいてます。
あーーー。
ここまできたんですけど、なんか、もうコードをばって載せたほうが早いと思ったので、一気に載せてしまいますね。笑笑
これが完成版
#include "ofApp.h" //-------------------------------------------------------------- void ofApp::setup(){ ofBackground(0, 0, 0); ofSetCircleResolution(32); //透明度の設定 ofEnableAlphaBlending(); //混色方法 //ofEnableBlendMode(OF_BLENDMODE_ADD); ofSetFrameRate(60); ofSetCircleResolution(30); //キーボード(b)を押した問に、ボールが出現 token = false; } //-------------------------------------------------------------- void ofApp::update(){ if (token){ location.x = location.x - velocity.x; location.y = location.y - velocity.y; for (int i=0; i<circles.size(); i++){ float j = circles.size(); circles[i].update(); ofPoint loc = circles[i].getPos(); float dist = ofDist(location.x, location.y, loc.x, loc.y); if(dist < 70 ){ if (circles[i].getRadius() != 0){ circles[i].setRadius(0); velocity.x = velocity.x * -1; velocity.y = velocity.y * -1; } else{ } } } } if (location.x < 0){ velocity.x = velocity.x * -1; } if (location.x > ofGetWidth()){ velocity.x = velocity.x * -1; } if (location.y < 0){ velocity.y = velocity.y * -1; } if (location.y-300 > ofGetHeight()){ std::exit(1); //velocity.y = velocity.y * -1; } if (location.x >= mouseX-50 && location.x <= mouseX+50 && location.y <= mouseY){ if (location.y + 45 >= mouseY){ //velocity.x = velocity.x * -1; velocity.y = velocity.y * -1; } } } //-------------------------------------------------------------- void ofApp::draw(){ for (int i=0; i<circles.size(); i++){ float value = i; if(circles[i].getRadius() != 0){ //ofDrawBitmapString("value: " + ofToString(value), 10, 10); circles[i].setWord(ofToString(value)); circles[i].draw(); } else { } } if (token){ ofSetColor(255, 255, 255); ofDrawCircle(location.x, location.y, 20); } ofDrawRectangle(mouseX-50, mouseY-25, 100, 50); } //-------------------------------------------------------------- void ofApp::keyPressed(int key){ switch (key) { case 'b': token = true; } } //-------------------------------------------------------------- void ofApp::mousePressed(int x, int y, int button){ CustomCircle circle; circle.setPos(ofPoint(x,y)); circle.setRadius(ofRandom(50,50)); circles.push_back(circle); }
ではでは!!
Openframeworksでブロック崩しもどきを作る
2ヶ月くらい前に始めたOFですけれども、特に理由なくブロック崩しみたいなものを作ってみようというモチベーションがどこからか湧いてきたので作ります。
とりあえず、以下の要素があったらOKにしますした。
・ブロック的なものがある
・動く物がある
・動くものがブロックに当たるときえる
・動くものは下にいくと、ゲームオーバーになる
まあ、こんなかんじですねかね。
1. ブロック的なものがある。
これですけど、結構座標を計算してforでテキトウに回せば行けそうな気がしてそうやってやろうとしたんですけど、個人的に、自分で指定した位置にブロックを作りたくなって、マウスでクリックしてその位置にブロックを作ることにしました。
まずは、CustomCirckeという円を書くクラス(?)を作っておきました。そのあとはこんな感じで、マウスのクリックした場所をGetしたりしていくつかブロックをつくてみました。こんなかんじになりました
ソースは一部、こんな感じです〜!
void ofApp::mousePressed(int x, int y, int button){ CustomCircle circle; circle.setPos(ofPoint(x,y)); circle.setRadius(ofRandom(50,50)); circles.push_back(circle);
void ofApp::draw(){ for (int i=0; i<circles.size(); i++){ float value = i; if(circles[i].getRadius() != 0){ //ofDrawBitmapString("value: " + ofToString(value), 10, 10); circles[i].setWord(ofToString(value)); circles[i].draw(); } else { } }
てんさいをみた
”天才”ってはじめて自分の感性に触れさせた瞬間に、判断できる。例えば、天才に出会ってしまったときは、その後の一瞬でこいつ、天才だ。って判断できる。
その判断した後の5分位に、それに対する悔しさがドサッと降ってくる。
ただ、実際、その”彼”のどこがすごいかって、なかなか言葉にすることはできないけど、なぜかしらないけれども、めっちゃ熱いやかんを触ってしまったのと同じくらいのスピードで、その天才とカテゴライズすることができる。
なぜ、俺が彼を天才とするのか。
それって結構不思議で、友人に、この人やばくね、っていっても共感されないことから、きっとそれは普遍的(みんなにあてまる)ことではないんですね。
おもしろいー。
ただ、それだけ。笑
この感動を書きたくて笑
openframeworksで一眼レフカメラをつかいたい2
前回の続きです。
ちょっと結論からなんですけど、色々試してみたんですけど、まだ成功していないです。途中経過段階で止まっている状態です。
とりあえず、その止まるまでを書きますね。
まずはここからofxPhotoをGetしてRead me に書いてあるとおりに、Header pathsとかを変更して、とりあえず、Build。
quicktime/quicktime.h' file not foundというエラーが出る。なのでテキトウに解決策を探して、どうやら新しいVersionのOfをダウンロードすれば行けるっぽいので、DLしたら、とりあえず、行けました。
しかし、その後。
200を超えるビルドエラーが出てきました。原因はいまも不明なんですけど、apple mach-o linker errorでした。build settingsをいろいろとあさって変更したりしたんですけど、何してもこれが解決できず。
なので、まず1回ここで、”嫌になる気”になって1時間くらい暴食しました。
その後
MacでoFから一眼レフを制御する(libgphoto2+ofxPhoto) — Cameura.com
ここのサイトだと、ライブラリーがWin用になっているから、これをmacportsで諸々変更する必要があるっていうのが書いてあるんですけど、これやんなくていいんじゃないか。って思って、普通に既存のライブラリーをアドオンのファイルから消していたものを戻して、再び、ビルド。
エラーが8個まで減りました。
しかし、これもまだapple mach-o linker error。さらにいろいろ調べて、C++ starndard libraryをlibstdc++というのに変更してRetry。
そしたら、エラーは一つに。
(unordered_map 'file not found)
これを乗り切ればいけるか・・・。というところまで来た感じがするんですけど、これがどうしても乗り越えれず。今に至りました。
なので、いまのところ、Nikonoの一眼でOfでLive Viewっていうのができていません。悔しい。また、もう少しOFとかを理解したらRetryしてみよう。
悔しい。笑
いじょう。
openframeworksで一眼レフカメラをつかいたい
最近、Openframeworks(OF)をやっているんですね。そこで、かれこれ1ヶ月くらい勉強したりしなかったりしている状態で、目の前の一眼レンズがあったので、この一眼からLive Viewを取り入れて、OF上でどうにかこうにかしたいな・・・。と思っていたのが、きょうです。
ということで、やってみました。参考にしているのはこちらのサイト。
結論からいうと、まだ完了しているわけではなくて、一眼レフ(NikonのD3200)とPC(macOS Sierra)をUSBでつなげて、PC上で機種をDetect(検出)するところまでで止まってます(時間的な意味で)。
ちなみに、私、ごりごりのエンジニアとかじゃなく、大学院時代にMATLABをいじっていた、素人童貞レベルのやつなのでまじで、専門知識は0に近いとおもってください。
さて、これをやるにあたって、やったことはさっきのサイトをFollowしたんですが、かんたんに思い出すと・・・
1. MacPortsでlibgphoto2をインストールしようとする
−ということなんですけどこれ、まずそもそもMacPortsって何?ってところから始まってめちゃめちゃググりまくって、それらしきものをここでまず、インストールして、「$ sudo port install libgphoto2」
をターミナルでタイプしました。
そしたら、なんかいい感じにインストールができたように見えました。
しかし
2.「$ gphoto2 –auto-detect」を実行しようとしたらエラーが
出たんですね。ここでは、「gphoto2」なんてコマンドないよ!って出てきました。あれ、libgphoto2をインストールしたときに一緒にこれもインストールされるものかと思っていたら違うのかな・・・というあまり深く考えずに、独立的にここから、gphoto2をインストールしました。そしたら、gphoto2 –は使えるようになりました。
しかし
3.「$ gphoto2 –auto-detect」を実行しようとしたらエラーが(Again)
またエラーが出ました。なんか「Xcodeを8にアップデートしたら実行できるよ」みたいな感じで出たので、アップデートしました。そしてリトライ・・・だけどできない。
4.「sudo port selfupdate」を実行したら一眼を認識してくれた
そうそう、これを行ったら、あんまり理由はわからないけれど、一眼を認識してくれました。
ついでに、「gphoto2 --capture-image-and-download」を実行すると、写真が取れていたので、成功しているのでしょう。
今日はここまでです。明日はofxPhotoのところをやってみようとおもいます。
では、いじょう!!!
リニューアル
こんにちは。今回を機に、心機一転です。
というのも、いつも自分史の節目節目でブログを変えていたんですけど、今回はめんどうになったので、過去の記事はエクスポートして、リニューアルです。
では、それでは!