2007-11-01から1ヶ月間の記事一覧

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

なんとなくブログを毎日更新したいので 特に意味はないけど日記を書く。 そろそろ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メソッドを使うといいみたい。 どちらにしろお手軽にはいかないみたい。うーん。

OpenGL ESでCube

そんなわけでOpenGL ESをPapervision3Dみたいに扱いたい計画の続き。Cubeを作ってみた。 ソース見てもらうとわかるけど非常にめんどくさいしごちゃごちゃだし。どうにかならないかな。 そんで陰面除去するときに、cheprogrammingを参考に、 gl.glEnable(GL10…

Emulatorへのファイルの転送方法

リソースファイルからは比較的容量の大きいメディアファイルは再生できないようなので、 普通の曲なんかを再生するにはAndroidのエミュレータにファイルを転送しておく必要がある。 転送にはadbコマンドを使う。エミュレータが起動した状態でターミナル(Mac…

MediaPlayerつづき

前にソースは今度と言っていたMediaPlayerの話。 一応動くは動くんだけど再生できるファイルとできないファイルがあったりする。 再生の仕方は前にも書いた通り。res/rawフォルダの中に再生したいファイルを入れ、リソースIDで指定する。 うーん。もう少し調…

OpenGL ESも使えなくちゃ

やっぱり3Dというのは魅力的で。使えるなら使いたいものです。 ということで色々試してみた。 最初に思ったのは「こりゃめんどくさい」ということ。いちいち頂点自分で決めるの?とか。 元々ActionScriptでPapervision3Dを使ってたので余計にめんどくさく感…

Animationするぞ

なんか面白いのできた。 AndroidにはAnimationというのがあって、 色々値を決めると勝手にアニメーションしてくれる優れもの。 といいながらあんまり触ってないので実態はよくわからないけど。 気持ちとしてはActionScriptのTweenerとかそんな感じ? という…

BitmapFactoryで画像を作れ!

今までリソースからBitmap形式の画像を取得するには、loadImageメソッドを自作し対応していた。 しかしBitmapFactoryを使うことでこれが非常に簡単になるのだ。なるのだ!そのやり方は、 Bitmap bmp = BitmapFactory.decodeResource(res, id); これだけ。res…

Widget解説第二回 "EditText"

そんなわけで第二回。 前回い忘れてたけど基本的にレイアウトファイルは使わない方向でいきます。 対応するアトリビュートは例えばEditTextなら、 http://code.google.com/android/reference/android/widget/TextView.html の最初の方にある"XML Attributes"…

MineSweeperつづき

前にGridVIewで作ったMineSweeperを普通に作ったらどうなるのかと試してみた。 そしたらやっぱり楽だった。 でもこれはAndroidの機能とか特に使ってないので面白味がない。 だからそろそろOpenGL ESとかを使ってみようと思う。 まだ直すところが沢山あるので…

Widget解説第一回 "TextView"

Androidには便利なWidgetがいくつもあるがそれを使いこなすのは難しい。 そこで自分のためということも含め使い方の解説をしていきたい。 今回とりあげるTextViewはテキストを表示するだけでなく、例えばボタンのラベルとかにも使われている。 そんなわけで…

MediaPlayerで、むむむ

Androidではandroid.media.MediaPlayerを使って楽にメディアファイルが再生できる。 今回はリソースから再生する手順を紹介するが、 公式HPにはそれ以外にもファイルのパスや、URLから再生する方法も掲載されている。 http://code.google.com/android/toolbo…

ブロック崩し

なんとなく思いついてボタンでブロック崩しを作った。 当たり判定とかが楽にできたのがすごい。 パドルやブロックの横に当たったときの判定はしてないんですがそれっぽく動く。 なかなか面白いです。 左右のキーでパドルの移動。 パドルを押すと再スタート。…

AbsoluteLayoutで足が生える

今までずっと悩んでいたwidgetの動的な配置。 結論から言うとこれはAbsoluteLayoutを使うと解決できる。 その手順を簡単に説明すると次のようになる。 AbsoluteLayoutをnewする。 配置したいwidgetをnewする。 配置したいwidgetにAbsoluteLayout.LayoutParam…

GridViewで爆弾探す

Androidに用意されているwidgetの中にGridViewというのがある。 これはサンプルや公式HPを見ればどんなものかわかる。例えば以下に載っている。 http://code.google.com/android/reference/view-gallery.html これを見たとき「マインスイーパ作れるじゃん!…

Viewを読み込め!

レイアウトファイルの扱いについて少し書いておく。レイアウトファイルとは何かというと、オブジェクト(ボタンとかテキストフィールドとか)をどこに配置するかや、 オブジェクトの高さとか幅を初めとする様々な情報を記述するもの。 まずプロジェクトを作…

ImageButtonを作る

Androidのサンプルにはボタンとかボタンとかボタンを使ったものがたくさんあって。そうするとボタンを使いたくなるわけで。 サンプルを見ると大体のはレイアウトファイル(./res/layout/の中に入ってるファイル。勝手に呼んでみた) にボタンの幅なり高さな…

Handlerでループループ

やはりループは必須である。ということでループの仕方。 普通の携帯アプリとかならwhile()ループを使って実現すると思う。 けどAndroidのサンプルを見てるとHandlerを使うのが普通みたい。 今回のはサンプルにあるSnakeと同様にHandlerを拡張して使っている…

KeyEventでキー入力取得

そんなわけでアプリ作るのに必須のキー入力。 キーイベントを取得するにはonKeyDown()をオーバーライドすれば良い。 そのときのポイントが2つ。 "setFocusable(true);"を忘れない "invalidate();"を忘れない invalidate()が必要なのはループするためなので、…

Invalidateで描画

毎フレームごと描画処理をしたいときはinvalidate()を使う。 ソースの最後の方のinvalidate()というのがミソ。ただこれは描画処理のみなので、他の処理をしたいときはHandlerを使うみたいだ。 ソースはサンプルにある"DrawPoints.java"を少し改造したもの。 …

Androidを試す

昨日AndroidのSDKが発表されたので早速試してみる。 http://code.google.com/android/index.htmlまずAndroidとは何か。詳しい説明は「ん・ぱか工房」さんの「Androidメモ」が参考になる。 http://www.saturn.dti.ne.jp/~npaka/android/SDKのインストール方法…