0
0

【Android】2Dアプリに3Dの輝きを施す登壇で本当に光輝いていた話

Posted at

はじめに

みなさん、DroidKaigi2024お疲れ様でした!
今回もとても収穫が多いイベントだったと感じましたが、みなさんはいかがでしたでしょうか?
特に今回はキャリアの話も多く聞く事ができ、一石二鳥以上の収穫でした。
そんな中でDaniele Bonaldoさんが登壇されていた【2Dアプリに3Dの輝きを】という登壇がとても印象的な内容でしたので、振り返りも兼ねて記事にできたらと思います。

Filamentが凄すぎる話

まずは以下をご覧ください

screen-20240914-195743.gif screen-20240914-195954.gif

上記はこの度の登壇者であるDaniele Bonaldoさんにて作成されたサンプルプロジェクトを実際に動かして撮影したものになります。
実際に登壇されていた際にも使用されていたサンプルです。

こちらのサンプルプロジェクトはFilamentというGoogleが作成したオープンソースのリアルタイムレンダリングエンジンを使用しています。

登壇の際にも上記gifのような動きは見せていただいていたのですが、実際に触ってみるとカクツキなどなく本当にスムーズで、まさかAndroidアプリでここまで3Dリソースを扱えるとは思いませんでした・・・

ちなみにFilamentに関して少し実装の話をすると、FilamentにはUnityなどのゲームエンジンでは非常にポピュラーな照明とカメラという概念があり、照明も以下5種類から選択ができます。

LightManager.java
public enum Type {
        /** 太陽光のような指向性のライト */
        SUN,

        /** 指定された方向を照らす指向性ライト */
        DIRECTIONAL,

        /** ある位置から全方向に照らすライト */
        POINT,

        /** 照らしたいポイントのみを照らすスポットライト */
        FOCUSED_SPOT,

        /** 外側の円錐と照明の結合が無効になっているスポットライト */
        SPOT

    }

上記照明のうち、太陽光以外は複数を自由に配置可能です。
また、カメラの位置も細かく指定が可能な為、特定のアクションを行ったタイミングである点から点へカメラを動的に動かす、といったような表現も可能になります。

また、上記gifにもあるように、リスト上のUIにも簡単に組み込む事ができ、3Dリソースを使用することへのハードルが非常に低くなった印象です。
ただし、リストへ組み込むという都合上、3Dリソースに対して複雑な操作は難しそうな印象でした。

ちなみにFilamentはモバイルファーストな物理エンジンですが、マルチプラットフォーム対応ということでios側やWebでも使用する事が可能です。

上記はiosのサンプルになりますが、気になる方は是非上のリンクより触ってみてもらえればと思います。

最後に、Daniele Bonaldoさんにて作成されたサンプルプロジェクトは最初のコミットから一つ一つ取り込んでいくことで、過程からより深くFilamentに関する実装を理解できるよう準備されています。

もしサンプルの動作確認をされる際には是非コミットを辿る形で確認してみてください。

さいごに

本当に学びの深い2日間でした、次回もとても楽しみです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0