2007-01-01から1年間の記事一覧
昨日の透明ウィンドウはSurfaceViewを使ったやり方でなんともスマートでなかった。 そこで他のやり方を探してたらAPIDemosの中にまさに透明ウィンドウのサンプルを見つけた。 TranslucentとTranslucent Fancyてやつ。透明というか半透明だけど気にしない。 …
kazhik.techさんのところで、 getWindow().setFormat(PixelFormat.TRANSLUCENT); とすればウィンドウが半透明になるということを見た。 半透明な上に画像が表示できたら楽しいよね、 と思って試してみたらうまくいかない。 この設定を有効にするにはSurfaceV…
気がつけば一週間ぐらい何も書いてないじゃないか。 それもこれも大学が(主にレポートが)忙しいせい。 もう冬休みに入ったのでそろそろ何かやる。 今日は天下一カウボーイ大会に行ってやる気をもらったので何かやる。
息抜きがてら、前にActionScriptで作った神経衰弱をAndroidで作ってみた。 神経衰弱と言っても普通のではなく、絵柄の代わりにFlickrのタグを使います。 つまり2つの画像のタグに共通するタグがあれば当たり、なければはずれです。 といってもよくわからない…
ということで床を動かしてみた。 全体的に残念な仕上がりになってしまって残念だ。 法線ベクトルを逐一変更するのが苦労した。 あとおかしな動きをする原因のひとつとして、 やっぱりめり込みてのが考えられそう。 そこらへんの処理を丁寧にしないとダメみた…
前回に続き壁と床との衝突。 課題として壁と床の間でプルプルしてしまうというのがあったけど、 あれがだいぶ改善された。 問題となるのはめり込みのときの対処法で。 めり込んだ分を反射後の方向に動かしてたけどこれじゃよくなくて。 結局のところ衝突する…
床との衝突ができたから壁も追加。 動画見てもらうとわかるけどやっぱり壁と床の間でボールがプルプル震えてしまう。 これはめり込みを補正する関係で起きてるんだと思う。 他の物理エンジンは多分一回のループで何回も力の釣り合いの計算をすることで これ…
というわけで物理シミュレータ。 法線ベクトルを使うと床との衝突がうまくいくということで、 斜面にボールを落としてみた。 割とうまくいってるんじゃないだろうか。 斜面と衝突したよという判定は球の中心から斜面までの距離を求めて、 その距離が球の半径…
物理エンジンはどうしたという声が聞こえてきそうですが。 今頃になって3次元だと大変だということに気づいた。 のでFlickrとかで現実逃避。 でも後々必要になってくるからやらないといけないんだけど。 床との衝突は法線ベクトル使うと少し良い感じになった…
chephesさんのところでlocalhostにつなげるという記事を見て早速試してみた。 普段なら http://localhost/... と書くところを、 http://(プライベートIPアドレス)/... と変えるだけでlocalhostにつなげられる。 localhostに接続できればPHPとか動かせるので…
とりあえずAPEのソースを読んでみた。 大体流れはわかったけど。 これを活かすことができるように頑張る!
物理シミュレータを作るためにいわゆる物理エンジンてのはどんなことをしてるのか調べようと思った。 とりあえずActionScript3.0での物理エンジンを探してみたら有名なところは次の3つぐらい。 Revive APE Fisix みんな一度はデモとかを見たことあるんじゃな…
バネの続きで今度は棒を作ろうと思ってるんだけどなかなかうまくいかない。 原因はなんとなくわかってるだけに余計つらい。 12月に入り気がつけば来年になってしまうので、 そろそろコンテスト用のを作り始めないとまずい。 だから更新も不定期になりそう。…
とりあえずバネが作れたので、 それをいくつかつなげてみた。正八角形に質点を配置して、隣の質点と 向かいの質点をつないだ。 動かしてみたら若干正八角形が崩れてるけど、 バネだからこんなもんかと無理矢理納得した。 棒だとちゃんと正八角形になるのだろ…
今度はバネ。非常に簡単です。 最初、減衰振動の運動方程式解くのダルいなと思ってたけど、 加速度求めるだけならそんな必要ないってさっき気づいた。 まずいまずい。 「げんすいしいんどう」で変換して「元帥進藤」が第一候補てのも困ったもんだ。 たまにMa…
ちょっと作ってみた。 課題がいくつか。 床とか、物体との衝突をどう処理するか。 今は床のy座標より下に行ったらボールの速度反転とかやってて。 さすがにそれじゃまずかろうということで何か考えないといけない。 このReviveのソースとか見て勉強します。 …
自転ができたので今度は公転させようと思って。 回転させること自体は楽にできたんだけど回転の方向がおかしい。 ちょっと気合いいれて考えてみないと。
というわけで回転できた。 割と疲れた。 はじめPapervision3Dのを参考にして作ってみたけどなんか回転がおかしいのと、 うまくクォータニオンから回転行列が作れないので他のやり方を探した。 そこで参考にしたサイトがここ。 途中経過は色々面倒だけど結局…
とりあえず変換行列を使った平行移動とスケール変換だけ作った。 あとは回転だけなんだけどこれはクオータニオンを使うべきなのか。 というかオイラー角だとしてもクオータニオンだとしてもめんどくさそうだ。 あとMatrix3Dというクラスを作ってみたがあんま…
なんとなくブログを毎日更新したいので 特に意味はないけど日記を書く。 そろそろ5000アクセスが近いので 記念に何か作りたいと思うけど。 いかんせん時間とアイディアが足りない。 うーん。 昨日言ってたCrayon Physicsと一緒に これはいいなあと思うのがMI…
一応球体とか立方体が出せるようになったので 今度は平行移動、回転、スケール変換とかの機能を付けたい。 3Dプログラミングはほとんどやったことないんだけど、 こういう変換をする場合は元データの値を変えるんじゃなくて、 変換行列みたいなのを持ってお…
昨日書いたSphereへのテクスチャマッピングの違和感。 こしさんにコメントを頂き解決しました。 まだOpenGL ESの座標系に慣れてなかったり、 各メソッドが何やってるのかを把握しきれてないところがあるので 色々頑張るっていかなければ。 前に作ったCubeと…
Androidで日本語入力できたらなと思ってたらIMEを作ってる人が! すげー。これは楽しみだ。 というかIME作るのって予想以上にというか予想通りというか、ものすごい大変な作業そうだな。。
というわけで球体へのテクスチャマッピングができました。 それに伴ってSphereの頂点の決定法も変更。ほぼPlaneと同じ感じになりました。 つまりSphereクラスのcreateメソッドの中身をごそっと変えた。 作ってて頂点数が256以上になるとおかしくなることに気…
OpenGL ESの練習を兼ねてマインスイーパを3Dで作った。 3Dのマインスイーパというとここが有名っぽいけど、それとは全然違うゲーム。 というか2Dを3Dにしただけという。 それっぽく遊べるので結構面白い。 あとonKeyDownメソッドでキー入力が取得できなくて…
OpenGL ESのプリミティブを手軽に作る第三弾のSphereです。 Cubeの時よりは作りやすかったけど、面を作るところで結構悩んだ。 これでPlane、Cube、Sphereの三つができてマウスピッキングも(一応)できるようになったので、 何か作れるんじゃないだろうかと…
やはりマウスピッキングはOpenGLでやってるような方法は使えないみたい。 なので違う方法を考えた。けどちょいちょい穴があるので似非マウスピッキングということで。 結局何をしてるかというとglReadPixelsメソッドでクリック位置の色情報を取得し比較して…
gl.glEnable(GL_DEPTH_TEST); とすると動かないと先日の日記で書いたが。これが解決した。 結局OpenGLContextをnewするときに引数にOpenGLContext.DEPTH_BUFFERを指定していないだけだった。 悩んだ悩んだ。悩んだだけに解決して嬉しかった。
昨日言ってたGL_SELECT(GL_SELECTIONは間違えでした。)とglReadPixelsについて少し調べてみた。 これはOpenGLでの話なのでOpenGL ESではどうなのか。驚きの結果になった。 まずGL_SELECTの方法。 OpenGL ESにはglRenderModeメソッドがない。 つまりセレク…
あるオブジェクトがクリックされたかを知るには、 GL_SELECTIONを使うかここにあるみたいにgetReadPixelsメソッドを使うといいみたい。 どちらにしろお手軽にはいかないみたい。うーん。