かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Mixed Reality アプリに欲しい機能

もうかれこれ 1 年近く Unity は追いかけてないので、今ならあるぜっていうものもある可能性もあるけど、こんなの欲しいな~っていう願望です。

3D 空間を前提としたレイアウトシステム

最近、2D アプリでレイアウトの位置計算を自前ですることってないですよね??? 大体の API やスタイルを適用する仕組みに、こんな感じでよろしくって宣言的に書いておけばプラットフォーム側が解釈してよしなにしてくれる。

自分で座標計算が必要なケースでは、そういうこともできる手段を提供してくれてて、必要なときだけ自前計算します。

そんな感じで一般的なインタラクションとかを作る場合には宣言的にマークアップするだけでよしなにしてくれるような仕組みがほしい。

本当に欲しい。

Xaml Islands for MR

MR アプリ作るときに全部 3D じゃなくて 2D のコンテンツというか普通のウィンドウ浮かしたいってことありますよね。 そのときは uGUI 使って書くと思うのですが元々が GUI アプリ開発用のプラットフォームじゃないので辛いし、OS では提供されてるようなコントロールも意外となかったりしてユーザーに機能を提供するのに、なんで一般的な GUI 部品を自分で実装してるのか?っていう気持ちになります。

ということで UWP のウィンドウもしくはコントロールをホストするような部品が欲しい。欲しい。

可能ならば一般的なウィンドウに対してする操作(移動、リサイズ、最大化、最小化、etc...)はさくっとしたい。

2D アプリで 3D 空間出したい

3D がメインなら 3D の中に 2D をオプションでって形でいいんですが、2D がメインで 3D がおまけ的立ち位置の場合には新しいウィンドウを 1 つ作るくらいのノリで 3D 空間出したい。

こんな雰囲気で

private UnityApplication _app;

private async void Launch3DWorldButton_Click(object sender, EventArgs e)
{
  if (_app == null)
  {
    return;
  }
  
  _app = new UnityApplication();
  await _app.LaunchAsync();
}

そして、こんな感じで動かせるようにしたい。

_app.HogeBehavior.Foo();

_app.HogeBehavior.SomeProperty = "xxxxx";

await _-app.RunOnUnityThreadAsync(() =>
{
});

まとめ

妄想でした。