強火で進め

このブログではプログラム関連の記事を中心に書いてます。

日本Androidの会の「コンテンツWG祭り!!!」に行ってきた

こちらのAndroidのイベントに参加しました。報告ヨロとのリクエストがあったので内容報告。

勉強会/2008年12月のイベント - 日本Androidの会(日本アンドロイドの会)
http://www.android-group.jp/index.php?%CA%D9%B6%AF%B2%F1%2F2008%C7%AF12%B7%EE%A4%CE%A5%A4%A5%D9%A5%F3%A5%C8

Androidで3Dグラフィクスを極める道 〜3Dエンジンの移植を通して〜

エイチアイ 高橋憲一さん

OpenGL ESについて
  • JSR239相当
  • Versionは1.0+1.1の一部
  • 付属ドキュメントは空っぽ
docomo向けのエンジンを移植
  • 微妙に引数の数が違う関数がある
  • EGLがAndroidは見える/Dojaは見えない
  • バッファの扱いが異なる。Androidはnio。
実機でテスト

そのままでは動かなかった。以下を追加する必要があった。

SurfaceHolder#setType(SurfaceType.SURFACE_TYPE_CPU)が必要

なんだか早くないみたい

iPhoneでは40以上のfpsだったものが13fps

最適化

できるだけGPUで処理させる

  • MatrixPalette
  • Vertex Buffer Objeect
  • 圧縮テクスチャ
MatrixPaletteについて
  • ボーンアニメーション、スキニングをハードウェアで実行できる。

※Matrixをパレット上に配置し、順番に呼べるらしい。

G1にて以下のコマンドを実行し、テストした場合、48個。

glGetIntergerv(GL11Ext.GL_PALETT_MATRICES_OES, paaram);

GL11Extの配下の関数を使おうとすると…
glMatrixIndexPointerOES等
「Unsupported Operation Exception」が発生

OpenGL ESのJNIの中、NativeのGL関数を呼ぶ前の時点で例外を上げている
/frameworks/base/core/jni/com_google_andrioid_gles_jni_GLImpl.cpp

docomoのDoja 5.1以上では使えるのに…30fps

圧縮テクスチャ
  • メモリ効率が向上
  • ハードウェアで伸張
  • ATITC(Androidなど)、PVRTC(iPhoneなど)
  • G1のハードMSM7201A
  • GPUATI
レンダラーを確認

glGetString(GL10.GL_RENDER);
Q3Dimension MSM7500 と返ってくる
ATIGPUだと確認できる

ATITCを使うには

テクスチャデータをATITCに変換
glCompressedTexImage2D()にATICを示すフォーマットタイプを渡す。

GL10、GL10Ext、GL11、GL11ExtのどこをATITC_RGB等の定数がないい

直接値を指定してみた
0x8c92 ATITC_RGB
0X8C93 ATITC_RGBA
→成功

13fpsが16fpsに向上

エミュレータでは使用できない。

Vertex Buffer Object
  • 頂点座標をハードに転送し、オブジェクトとしてIDで管理。
  • 形が固定のモデルなら使える。

→使えそうでは有るが検証が未定。

すごい3Dアプリ紹介

Neocore

  • Android Marketにある
  • 24.5fps出ている。
MascotCapsuleの最新版の紹介

※MascotCapsuleシリーズすごいなぁ。docomoiPhoneAndroidとどんどん対応するなぁ。

Androidでパズル・ナンプレ問題自動生成を動かす

Time Intermedia 藤原博文さん

Cプログラミング診断室—さらに美しく健康的なプログラムのために (単行本)を書かれた人らしい

改訂新版 Cプログラミング診断室

改訂新版 Cプログラミング診断室

こっちの表紙の方を知ってる人も多いとおもいますがこちらの改訂新版となります。

個人サイト

『パソコン初心者の館』藤原博文の館
http://www.pro.or.jp/~fuji/

会社サイト

業務システム開発実績|株式会社タイムインターメディア
http://www.timedia.co.jp/devcase/index.html

世界各国で数独ナンプレが人気であることを紹介

  • 専用機やゲーム機になどにもリリースされている
  • 多くの新聞で掲載
  • 丘に白いラインに書かれていたり、看板に書かれていたりする。

今回、Androidに移植したのはこちら。

NPV1 | Japanese | PUZZLE GeneRator JaPan
http://puzzle.gr.jp/show/Japanese/NPV1

こちらのJava版は

  • 1000行
  • コア部分は100行以下

jp.gr.puzzle.npgenerator.v1
Version 1.0のインポートしただけ。
変更:0文字

自動生成を別Threadで実行→上手くやらないとエラーが発生

static を使うと速くなる。

フリメア
http://puz.hp.infoseek.co.jp/game/furimea.html

※これもAndroidに移植したらしい
オリジナルはJavaだけどソースが無い。動作を

SurfaceViewが良い
  • 別スレッドで動く
  • 速いらしい
  • 「ロックしてからDrawする」という手順が使える

lockCanvas()
unlockCanvas()

プログラムしての感想
  • Javaを知っていれば簡単にはじめれる
  • レイアウトがXMLで出来て便利
  • 遅い、開発には工夫が必要
  • サンプル、解説、書籍が少ない(ない)

※0.9から1.0に変わったときに大きく内容が変わったらしい。しかし、現在のバージョンに対応している本は無いらしい

  • 英語で調べる必要がある
  • エラーメッセージが分かりにく
その他のサイト紹介

Karetta|Android迷走記
http://karetta.jp/book-cover/android

稲葉のパズル研究室
http://puz.hp.infoseek.co.jp/

私のAndroidアプリの作り方!

日本語IME simeji の作者、adamrockerさん

作成のアイディア
  • notificationやGoogle Suggestでナンチャッテでできないか?

inJapを作成。糞みたいな変換ができるでJap

Socail IMEを見つける

simeji。名前の由来は「Social IME 字」

Android Marketの注意点
  • Helpページの準備が必要(公開ページの説明は325wordまでであるため)
  • Update通知機能が有った方がいい

処理の手順はこんな感じ
1. Versionチェック
2. アプリのバージョンチェック
getPackageManager()などから取得。
3. Android Marketへアクセス
marktet://search?q=simeji にアクセスさせる → Marketでキーワード「simeji」で検索した結果が表示される。

ARToolkitAndroidで動かす!

今村謙之 with ケイブ

  • カメラの画像取得はSoketを待っているだけ。
  • Soket関連の本や「俺流プロトコル入門」(発表者さんが筆者)がおすすめらしい。

俺流プロトコル実装入門 ~Private Implementation Protocol~

俺流プロトコル実装入門 ~Private Implementation Protocol~

  • シミュレータでも遅いですがAndroidの実機ではもっと遅いらしい

※これからチューンナップするらしい

  • ヨーロッパのデザイナーからコンタクトがあったらしい