Open3
Androidアプリに3Dモデルを描画する方法を模索する

前提要件
- Kotlinで書かれたAndroidネイティブアプリを想定
- Jetpack ComposeやAndroidViewから3DモデルのバイナリかURLを渡すだけで描画できるのが理想
- モデル形式はGLTFを想定

使えそうなライブラリやSDKたち
Unity as a Library
フルスクリーンレンダリングにしか対応していないみたいなので今回は除外
Google Filament
公式のサンプルでAndroidアプリケーションに組み込んでいるやつがあった
Rajawali
最近はメンテが滞ってそう...? 結構昔からあるAndroid向け3Dエンジン
libGDX
javaで組まれたゲーム開発フレームワーク

Google Filamentを使ってみる
普通にクローンして、プロジェクトルートのandroid
ディレクトリをAndroid Studioで開く
今回は、samples.sample-gltf-viewer
をエミュレータで実行してみる
ビルドできない
普通にAndroid Studioの実行ボタンを押したらビルドは始まるけど失敗する
ninja: error: '/Users/datt/WORKSPACE/github.com/google/filament/out/android-release/filament/lib/arm64-v8a/libfilament.a', needed by '../../../../build/intermediates/cxx/Debug/1n1v5r36/obj/arm64-v8a/libfilament-jni.so', missing and no known rule to make it
out/android-release
にファイルがないと怒られてるみたい
BUILDING.md
に書いてあるとおり、outにfilamentをビルドしていく
# 予め cmake, clang, ninja をインストールしておく
# filamentのリポジトリルートで実行
$ ./build.sh -p android release
その後にAndroidStudioからビルド&実行したらビルドできた
↓ エミュレータで実行した時のスクショ
なかなか綺麗だけど、重そう