2007-11-01から1ヶ月間の記事一覧
なんとなくブログを毎日更新したいので 特に意味はないけど日記を書く。 そろそろ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メソッドを使うといいみたい。 どちらにしろお手軽にはいかないみたい。うーん。
そんなわけでOpenGL ESをPapervision3Dみたいに扱いたい計画の続き。Cubeを作ってみた。 ソース見てもらうとわかるけど非常にめんどくさいしごちゃごちゃだし。どうにかならないかな。 そんで陰面除去するときに、cheprogrammingを参考に、 gl.glEnable(GL10…
リソースファイルからは比較的容量の大きいメディアファイルは再生できないようなので、 普通の曲なんかを再生するにはAndroidのエミュレータにファイルを転送しておく必要がある。 転送にはadbコマンドを使う。エミュレータが起動した状態でターミナル(Mac…
前にソースは今度と言っていたMediaPlayerの話。 一応動くは動くんだけど再生できるファイルとできないファイルがあったりする。 再生の仕方は前にも書いた通り。res/rawフォルダの中に再生したいファイルを入れ、リソースIDで指定する。 うーん。もう少し調…
やっぱり3Dというのは魅力的で。使えるなら使いたいものです。 ということで色々試してみた。 最初に思ったのは「こりゃめんどくさい」ということ。いちいち頂点自分で決めるの?とか。 元々ActionScriptでPapervision3Dを使ってたので余計にめんどくさく感…
なんか面白いのできた。 AndroidにはAnimationというのがあって、 色々値を決めると勝手にアニメーションしてくれる優れもの。 といいながらあんまり触ってないので実態はよくわからないけど。 気持ちとしてはActionScriptのTweenerとかそんな感じ? という…
今までリソースからBitmap形式の画像を取得するには、loadImageメソッドを自作し対応していた。 しかしBitmapFactoryを使うことでこれが非常に簡単になるのだ。なるのだ!そのやり方は、 Bitmap bmp = BitmapFactory.decodeResource(res, id); これだけ。res…
そんなわけで第二回。 前回い忘れてたけど基本的にレイアウトファイルは使わない方向でいきます。 対応するアトリビュートは例えばEditTextなら、 http://code.google.com/android/reference/android/widget/TextView.html の最初の方にある"XML Attributes"…
前にGridVIewで作ったMineSweeperを普通に作ったらどうなるのかと試してみた。 そしたらやっぱり楽だった。 でもこれはAndroidの機能とか特に使ってないので面白味がない。 だからそろそろOpenGL ESとかを使ってみようと思う。 まだ直すところが沢山あるので…
Androidには便利なWidgetがいくつもあるがそれを使いこなすのは難しい。 そこで自分のためということも含め使い方の解説をしていきたい。 今回とりあげるTextViewはテキストを表示するだけでなく、例えばボタンのラベルとかにも使われている。 そんなわけで…
Androidではandroid.media.MediaPlayerを使って楽にメディアファイルが再生できる。 今回はリソースから再生する手順を紹介するが、 公式HPにはそれ以外にもファイルのパスや、URLから再生する方法も掲載されている。 http://code.google.com/android/toolbo…
なんとなく思いついてボタンでブロック崩しを作った。 当たり判定とかが楽にできたのがすごい。 パドルやブロックの横に当たったときの判定はしてないんですがそれっぽく動く。 なかなか面白いです。 左右のキーでパドルの移動。 パドルを押すと再スタート。…
今までずっと悩んでいたwidgetの動的な配置。 結論から言うとこれはAbsoluteLayoutを使うと解決できる。 その手順を簡単に説明すると次のようになる。 AbsoluteLayoutをnewする。 配置したいwidgetをnewする。 配置したいwidgetにAbsoluteLayout.LayoutParam…
Androidに用意されているwidgetの中にGridViewというのがある。 これはサンプルや公式HPを見ればどんなものかわかる。例えば以下に載っている。 http://code.google.com/android/reference/view-gallery.html これを見たとき「マインスイーパ作れるじゃん!…
レイアウトファイルの扱いについて少し書いておく。レイアウトファイルとは何かというと、オブジェクト(ボタンとかテキストフィールドとか)をどこに配置するかや、 オブジェクトの高さとか幅を初めとする様々な情報を記述するもの。 まずプロジェクトを作…
Androidのサンプルにはボタンとかボタンとかボタンを使ったものがたくさんあって。そうするとボタンを使いたくなるわけで。 サンプルを見ると大体のはレイアウトファイル(./res/layout/の中に入ってるファイル。勝手に呼んでみた) にボタンの幅なり高さな…
やはりループは必須である。ということでループの仕方。 普通の携帯アプリとかならwhile()ループを使って実現すると思う。 けどAndroidのサンプルを見てるとHandlerを使うのが普通みたい。 今回のはサンプルにあるSnakeと同様にHandlerを拡張して使っている…
そんなわけでアプリ作るのに必須のキー入力。 キーイベントを取得するにはonKeyDown()をオーバーライドすれば良い。 そのときのポイントが2つ。 "setFocusable(true);"を忘れない "invalidate();"を忘れない invalidate()が必要なのはループするためなので、…
毎フレームごと描画処理をしたいときはinvalidate()を使う。 ソースの最後の方のinvalidate()というのがミソ。ただこれは描画処理のみなので、他の処理をしたいときはHandlerを使うみたいだ。 ソースはサンプルにある"DrawPoints.java"を少し改造したもの。 …
昨日AndroidのSDKが発表されたので早速試してみる。 http://code.google.com/android/index.htmlまずAndroidとは何か。詳しい説明は「ん・ぱか工房」さんの「Androidメモ」が参考になる。 http://www.saturn.dti.ne.jp/~npaka/android/SDKのインストール方法…