×

Arshes v1.10.0

Arshes v1.10.0をリリースした。

リリース内容としては

  • UIの大幅な変更
  • カラーグレーディングのパラメータ追加
  • パフォーマンス改善

という感じだが、UIを整理するにあたって、背景にある概念の整理ができたのが大きな進捗なように思う。

整理したこと

  • ユーザーの中には**「シェーダークリエイター」「フォトグラファー」「ライトユーザー」**がいる
  • シェーダークリエイターがシェーダーを使って**「カメラエフェクト」**を作成・公開する
  • カメラエフェクトに加えて、カメラ映像にはビルトインの**「カメラフィルター」**が適用される
  • ユーザーはフィルターを調整したりエフェクトを選んだりして写真や動画を撮る
  • 「撮影」と「シェーダー編集」は同時にできなくてよい

ユーザーのペルソナ

Arshesはシェーダーで作ったカメラエフェクトを使って写真を撮るアプリである。 冷静に考えると、シェーダーと写真の両方に慣れ親しんでいる人は多くないはずなので、ユーザーについて真面目に考えてUIを整理することにした。

  • シェーダークリエイター:シェーダーを書く。Arshesのコンテンツクリエイター層。
  • フォトグラファー:写真を趣味にしている人たち。カメラを持っていたりLightroomなどで現像することに慣れている。
  • ライトユーザー:それ以外のユーザー。

ユーザーが増えたときにどうなるかは見てみないとわからないが、自分が目指すところとしては、シェーダークリエイター以外のユーザーが増えてほしいなと思っている。また、実際にアプリを使っていると撮影とシェーダーの編集を同時に行うことはほとんどない。そもそもシェーダーの編集はRemote Editorを使って行う方が良い。そう考えると、シェーダークリエイター以外にはシェーダー編集のUIは見えなくて良い、という結論に落ち着いた。 シェーダークリエイターとの境界に比べて、ライトユーザーとフォトグラファーの境界はよりグラデーションになっていると思われる。

エフェクトとフィルター

少し細かいが、ユーザーが「シェーダーを書く」のではなく**「シェーダーを使ってカメラエフェクトを作る」**ということにした。 冷静に考えるとシェーダーを書いたことがない人の方が多いわけで、そういう人にとって「シェーダーを選ぶ」よりも「エフェクトを選ぶ」方が自然である。VRChatにおいては「Udon(Sharp)でワールドを作る」し、clusterにおいても「ClusterScriptでワールドやアイテムを作る」のと同様である。シェーダーはcoolなので前面に出すという世界観も考えられるが、ひとまずはシェーダークリエイター向けのUIを除いては「カメラエフェクト」と呼ぶ方が良いように感じている。

カメラフィルターはv1.5.0でリリースした「カラーグレーディング」機能で、これは写真における現像処理に該当する。実際UIもLightroomを参考にしている。 フィルターとエフェクトの境界は、触る人がフォトグラファーかシェーダークリエイターかという線引きに従うようにした。 技術的にはカメラフィルター部分をユーザー生成のシェーダーに置き換えることも可能なんだが、しばらくは不要そうと判断した。 そうなったときのことを考えても「シェーダー」よりも「カメラエフェクト」の方が適切だと思われる。

エフェクトとフィルターという呼称は「Prequel」という写真加工アプリを参考にした。 Prequelではエフェクトとフィルターが沢山用意されていて、それらの組み合わせがサムネイルとともにトップ画面に並ぶ。 ユーザーは内部を意識しなくてもサムネイルを見ればどういう絵が得られるかがわかる。 Arshesでも、毎回シェーダーでカラーグレーディングの処理を書くのが面倒になって、アプリ組み込みの機能にしたが、同じような境界がPrequelにも見られて面白い。

プリセット

ライトユーザーを増やすためには手軽にいい感じの写真が撮れるべきであり、そのためにはいい感じのプリセットがあると良い。 プリセットの候補としては

  • カメラエフェクトのシェーダーパラメータのプリセット
  • カメラフィルターのプリセット
  • 上2つを組み合わせたプリセット

などが考えられる。絵作りにおいてはカメラフィルターのプリセットがコスパが良いので最初に作るのはこれがよさそう。 ちょうどLightroomのプリセット公開に相当する部分なので、クリエイターはフォトグラファー層ということになって、落ち着きも良い(コンテンツクリエイター層は広い方が良い)。 次のバージョンあたりで、カメラフィルターのプリセットを公開できるようにしたい。

UIの整理

概念の整理がすすんだのでUIも作り直した。

~v1.9.0

v1.10.0ではサイドメニューを追加して、編集画面への動線を隔離した。 フィルタープリセット機能を実装したら、また変わりそうだが、大筋は維持されると思う。

シェーダー一覧 / サイドメニュー / 自分のシェーダー一覧

最適化諸々

4Kで動かすと発熱がやばいのでやれそうなことをやった

  • cameraTextureのフォーマットをRGBA16bitからRG11B10bitにした(容量半分!)
  • depthTextureが不必要にHD/4KにアップスケールされていたのでOSから渡される解像度準拠(240x320程度)にした(めっちゃ軽くなった)
  • カメラフィルターのLUT化(32^3 でLUTを動的に作るようにした)

次やること

先に書いたようにフィルタープリセット機能を作りたい。 シェーダーによるエフェクトがメインのように思われるかもしれないが、実際にはカメラフィルターが重要だと思っている。

それから、アプリ内で撮影した写真や動画をアプリ内のライブラリで確認できるようにしたい。 iOS標準の写真アプリを開くのは面倒だし、エクスポート機能は課金対象候補なのでストア公開前にやっておきたい。

あとは多言語対応とかGraphQLの取り回しがうさんくさいのを修正したりとかもせねば〜

Continues

Continued by

Referenced by