2007-01-01から1年間の記事一覧

Androidで透明ウィンドウつづき

昨日の透明ウィンドウはSurfaceViewを使ったやり方でなんともスマートでなかった。 そこで他のやり方を探してたらAPIDemosの中にまさに透明ウィンドウのサンプルを見つけた。 TranslucentとTranslucent Fancyてやつ。透明というか半透明だけど気にしない。 …

Androidで透明ウィンドウ

kazhik.techさんのところで、 getWindow().setFormat(PixelFormat.TRANSLUCENT); とすればウィンドウが半透明になるということを見た。 半透明な上に画像が表示できたら楽しいよね、 と思って試してみたらうまくいかない。 この設定を有効にするにはSurfaceV…

気がつけば

気がつけば一週間ぐらい何も書いてないじゃないか。 それもこれも大学が(主にレポートが)忙しいせい。 もう冬休みに入ったのでそろそろ何かやる。 今日は天下一カウボーイ大会に行ってやる気をもらったので何かやる。

AndroidとFlickrで神経衰弱

息抜きがてら、前にActionScriptで作った神経衰弱をAndroidで作ってみた。 神経衰弱と言っても普通のではなく、絵柄の代わりにFlickrのタグを使います。 つまり2つの画像のタグに共通するタグがあれば当たり、なければはずれです。 といってもよくわからない…

OpenGL ESで動く床

ということで床を動かしてみた。 全体的に残念な仕上がりになってしまって残念だ。 法線ベクトルを逐一変更するのが苦労した。 あとおかしな動きをする原因のひとつとして、 やっぱりめり込みてのが考えられそう。 そこらへんの処理を丁寧にしないとダメみた…

OpenGL ESで壁と床との衝突つづき

前回に続き壁と床との衝突。 課題として壁と床の間でプルプルしてしまうというのがあったけど、 あれがだいぶ改善された。 問題となるのはめり込みのときの対処法で。 めり込んだ分を反射後の方向に動かしてたけどこれじゃよくなくて。 結局のところ衝突する…

OpenGL ESで壁と床との衝突

床との衝突ができたから壁も追加。 動画見てもらうとわかるけどやっぱり壁と床の間でボールがプルプル震えてしまう。 これはめり込みを補正する関係で起きてるんだと思う。 他の物理エンジンは多分一回のループで何回も力の釣り合いの計算をすることで これ…

OpenGL ESで斜面との衝突

というわけで物理シミュレータ。 法線ベクトルを使うと床との衝突がうまくいくということで、 斜面にボールを落としてみた。 割とうまくいってるんじゃないだろうか。 斜面と衝突したよという判定は球の中心から斜面までの距離を求めて、 その距離が球の半径…

物理エンジンはどうした

物理エンジンはどうしたという声が聞こえてきそうですが。 今頃になって3次元だと大変だということに気づいた。 のでFlickrとかで現実逃避。 でも後々必要になってくるからやらないといけないんだけど。 床との衝突は法線ベクトル使うと少し良い感じになった…

AndroidでFlickr

chephesさんのところでlocalhostにつなげるという記事を見て早速試してみた。 普段なら http://localhost/... と書くところを、 http://(プライベートIPアドレス)/... と変えるだけでlocalhostにつなげられる。 localhostに接続できればPHPとか動かせるので…

物理エンジン続き

とりあえずAPEのソースを読んでみた。 大体流れはわかったけど。 これを活かすことができるように頑張る!

ActionScript3.0の物理エンジン

物理シミュレータを作るためにいわゆる物理エンジンてのはどんなことをしてるのか調べようと思った。 とりあえずActionScript3.0での物理エンジンを探してみたら有名なところは次の3つぐらい。 Revive APE Fisix みんな一度はデモとかを見たことあるんじゃな…

棒にはまる

バネの続きで今度は棒を作ろうと思ってるんだけどなかなかうまくいかない。 原因はなんとなくわかってるだけに余計つらい。 12月に入り気がつけば来年になってしまうので、 そろそろコンテスト用のを作り始めないとまずい。 だから更新も不定期になりそう。…

OpenGL ESでバネをつなげる

とりあえずバネが作れたので、 それをいくつかつなげてみた。正八角形に質点を配置して、隣の質点と 向かいの質点をつないだ。 動かしてみたら若干正八角形が崩れてるけど、 バネだからこんなもんかと無理矢理納得した。 棒だとちゃんと正八角形になるのだろ…

OpenGL ESでバネ

今度はバネ。非常に簡単です。 最初、減衰振動の運動方程式解くのダルいなと思ってたけど、 加速度求めるだけならそんな必要ないってさっき気づいた。 まずいまずい。 「げんすいしいんどう」で変換して「元帥進藤」が第一候補てのも困ったもんだ。 たまにMa…

OpenGL ESでボールが跳ねる

ちょっと作ってみた。 課題がいくつか。 床とか、物体との衝突をどう処理するか。 今は床のy座標より下に行ったらボールの速度反転とかやってて。 さすがにそれじゃまずかろうということで何か考えないといけない。 このReviveのソースとか見て勉強します。 …

OpenGL ESで公転

自転ができたので今度は公転させようと思って。 回転させること自体は楽にできたんだけど回転の方向がおかしい。 ちょっと気合いいれて考えてみないと。

OpenGL ESでクォータニオン

というわけで回転できた。 割と疲れた。 はじめPapervision3Dのを参考にして作ってみたけどなんか回転がおかしいのと、 うまくクォータニオンから回転行列が作れないので他のやり方を探した。 そこで参考にしたサイトがここ。 途中経過は色々面倒だけど結局…

AndroidのOpenGL ESで変換行列

とりあえず変換行列を使った平行移動とスケール変換だけ作った。 あとは回転だけなんだけどこれはクオータニオンを使うべきなのか。 というかオイラー角だとしてもクオータニオンだとしてもめんどくさそうだ。 あとMatrix3Dというクラスを作ってみたがあんま…

特にないけど日記を書く。

なんとなくブログを毎日更新したいので 特に意味はないけど日記を書く。 そろそろ5000アクセスが近いので 記念に何か作りたいと思うけど。 いかんせん時間とアイディアが足りない。 うーん。 昨日言ってたCrayon Physicsと一緒に これはいいなあと思うのがMI…

OpenGL ESでスケール変換

一応球体とか立方体が出せるようになったので 今度は平行移動、回転、スケール変換とかの機能を付けたい。 3Dプログラミングはほとんどやったことないんだけど、 こういう変換をする場合は元データの値を変えるんじゃなくて、 変換行列みたいなのを持ってお…

AndroidのOpenGL ESで違和感

昨日書いたSphereへのテクスチャマッピングの違和感。 こしさんにコメントを頂き解決しました。 まだOpenGL ESの座標系に慣れてなかったり、 各メソッドが何やってるのかを把握しきれてないところがあるので 色々頑張るっていかなければ。 前に作ったCubeと…

Androidで日本語入力

Androidで日本語入力できたらなと思ってたらIMEを作ってる人が! すげー。これは楽しみだ。 というかIME作るのって予想以上にというか予想通りというか、ものすごい大変な作業そうだな。。

AndroidのOpenGL ESで地球をこの手に

というわけで球体へのテクスチャマッピングができました。 それに伴ってSphereの頂点の決定法も変更。ほぼPlaneと同じ感じになりました。 つまりSphereクラスのcreateメソッドの中身をごそっと変えた。 作ってて頂点数が256以上になるとおかしくなることに気…

AndroidのOpenGL ESでマインスイーパ3D

OpenGL ESの練習を兼ねてマインスイーパを3Dで作った。 3Dのマインスイーパというとここが有名っぽいけど、それとは全然違うゲーム。 というか2Dを3Dにしただけという。 それっぽく遊べるので結構面白い。 あとonKeyDownメソッドでキー入力が取得できなくて…

OpenGL ESでSphere

OpenGL ESのプリミティブを手軽に作る第三弾のSphereです。 Cubeの時よりは作りやすかったけど、面を作るところで結構悩んだ。 これでPlane、Cube、Sphereの三つができてマウスピッキングも(一応)できるようになったので、 何か作れるんじゃないだろうかと…

OpenGL ESで似非マウスピッキング

やはりマウスピッキングはOpenGLでやってるような方法は使えないみたい。 なので違う方法を考えた。けどちょいちょい穴があるので似非マウスピッキングということで。 結局何をしてるかというとglReadPixelsメソッドでクリック位置の色情報を取得し比較して…

GL_DEPTH_TEST動く

gl.glEnable(GL_DEPTH_TEST); とすると動かないと先日の日記で書いたが。これが解決した。 結局OpenGLContextをnewするときに引数にOpenGLContext.DEPTH_BUFFERを指定していないだけだった。 悩んだ悩んだ。悩んだだけに解決して嬉しかった。

OpenGL ESでのマウスピッキングつづき

昨日言ってたGL_SELECT(GL_SELECTIONは間違えでした。)とglReadPixelsについて少し調べてみた。 これはOpenGLでの話なのでOpenGL ESではどうなのか。驚きの結果になった。 まずGL_SELECTの方法。 OpenGL ESにはglRenderModeメソッドがない。 つまりセレク…

OpenGL ESでのマウスピッキング

あるオブジェクトがクリックされたかを知るには、 GL_SELECTIONを使うかここにあるみたいにgetReadPixelsメソッドを使うといいみたい。 どちらにしろお手軽にはいかないみたい。うーん。