見出し画像

【Snap】 Lens Studio のチーム開発での躓きポイント【Lens Studio】

TL;DR

会社のUnityエンジニア2名とデザイナーにて、ハッカソンでSnap chat上で動くAR機能開発制作を行いました。
作ったものはこちら

https://youtu.be/2wX3WBmV704

そのときの開発レポートはこちらです。

このデモを作ったときに得られたLens Studio を使った開発周りのノウハウをまとめました。

Lens Studioとは?

アーティストや開発者がSnapchat上で、AR体験を提供するために設計された統合開発環境(IDE)です。いわゆるUnityやUnrealEngine みたいなアプリのSnapchat版です。


Unity開発系経験者向け用語説明

エンジニアが両名ともUnity開発経験者だったので、他にもUnity開発経験はあるけどLensStudioは初めてという方に向けて簡単に用語の説明です。

Material Editor

  • Node ベースのEditor。いわゆるShaderGraph 相当の機能

  • 描画部分はOpen GLES で動作

  • 視線ベクトルとの内積計算Node など便利Node が揃っています

  • 途中Node時点でのPreview はみられないです

Resources ウィンドウ

  • Unity のProject Window 相当

    • ここに素材などを入れてください

Objects ウィンドウ

  • Unity のHierarchy 相当

開発中の躓きポイント

Unity開発経験者向けのLensStudio での制作過程における躓きポイントをまとめました。

Lens Studio 周り

  • ObjectsTab(UnityでいうHierarchy) にあるObjectが持っている参照先がどれなのかわからない

    • Unity における、SerializeField を選択したときに参照先のResoucesをProjectウィンドウで表示する機能がない。

      • そのため名前検索などで自分で探す必要がある。

  • Object をExport→別PJでImportする際、同一リソースでも連番で別Assetとして認識される。

    • UnityのImporterみたいにHash値が一緒の場合は更新という風にはならないです。

    • 同一のScriptが階層違いだと共存することもある。(特にSampleではTweenスクリプト)

      • これのせいで移植に失敗するとTweenで死んだりします。

  • CustomScript のpublicAPIの作り方に癖があるのと、Inspectorで呼び出すときの参照設定でミスりやすい。

    • 子要素がファーストビューでツリー表示されないので自分で探さないと出てこない。

  • CustomScriptでOnDisableEventを設定してもOnDisable時は実行されず、次のEnableタイミングでOnDisableに紐づけた処理→OnEnableに紐づけた処理の順で実行される。

  • Project を複数開けない。

    • いまとなってはUnity もUnityHub 経由で複数のProject を開けますが、現状Lens Studio は1個までしか開けないため、2個のProject を見比べることができないようです。(何か裏技などあればいいのですが・・・)

Material Editor 周り

  • 当然ですがMaterialEditor はShader周りの知見がないと手も足も出ません。

    • 個人的には業務でUI向けのShader や3Dモデル用のShaderをいくつか作った経験があったため、割とすっと入れました。

    • UnityのShaderGraph 未経験だと多分本当に何もできない

      • 特に、Script 側でMaterial のParameter を更新する際に苦戦します。

        • Script側で露出パラメータを更新するとき、Inspectorに表示されている命名と別のScript用のパラメータ名(変数名をホバーしたら表示されるProperty名)を指定しないと更新できないです。

  • PBR/Unlit どっちでやるべきか?は知見がない場合は迷いやすいかと思います。

  • ノイズNodeがあったが使い方がさっぱりわからなかったです。

    • サンプルがなくパラメータの説明のみなので「使い慣れている」状態や、深く知識がないと使えなかったです。

    • 結局ノイズテクスチャを利用する方法に落ち着きました。

  • UVを扱うにも様々な空間におけるUVパラメータがあったため、慣れている方でないと最初は戸惑うかと思います

チーム開発

  • Unity ではScene のコンフリクト、Prefabのコンフリクトが起きやすいのはチーム開発では常識としてかなり普及していますが、LensStudio をチームで開発するときの知見はほとんど無く、Gitで管理するにもどのファイルを管理すればいいのか?などチーム開発周りのノウハウは現状ない模様です。

  • 当たり前ですが、公式のガイド(https://docs.snap.com/lens-studio/references/guides/overview)は絶対に全てに目を通しておきましょう

    • 特に開発物のチェック方法である https://docs.snap.com/lens-studio/references/guides/general/pairing-to-snapchat/ は必読です

      • これを行わないと実機チェックがすぐに行えません

      • これ以外の方法だと公式にアップロード→審査→利用可能となり、審査自体に30分以上かかるため、開発イテレーションを回すことが非現実的になってしまいます

最後に

Snap 公式がTemplate を用意している機能については本当にビルドしてすぐに試せました。
また、さすがLiDARを使っているだけあって機能の精度も優秀で、ここに関しては現状UnityのAR開発より分があるなと思いました。
一方Android完全非対応だったりLiDAR必須など制限も多いので、裾野の広さはまだまだといった形です。
しかし、今回作ったデモも実作業時間15~6 時間程度で出来上がったので、ただTemplateを組み合わせるだけでもかなり面白い体験を簡単に作れる印象でした。
ぜひ今回興味を持っていただいた方はLens Studio で開発して知見をシェアしてもらえるとありがたいです。

・・・

Graffityでは、このようなAR技術の知見を活かし「最短3か月で“心を動かす”ARエンタメ」をコンセプトに、AR技術に特化したエンタメの企画・開発と、DX化を支援するスタジオ「Graffity AR Studio」を運営しております。

これまで累計23万ダウンロードを突破したARシューティングバトル「ペチャバト」や、グローバルに展開しているARシューティングバトル「Leap Trigger」など、ARゲームを開発・運営しており、これらの知見を活かし、スピード感を持ってARを活用した“心動かす”エンタメの企画から運用までを、ワンストップでサポートいたします。

スピード感を持って仮説検証を通してAR体験をブラッシュアップしたい企業様はぜひ「Graffity AR Studio」へお問い合わせください。

https://graffity.jp/ar_studio

また、 ARを活用したエンタメのユースケースを一緒に作りたい仲間も募集しています!


この記事が気に入ったらサポートをしてみませんか?