Search Unity

日々進化する Unity のグラフィックスを活用したアプリケーションを開発したいと思うことはよくあります。しかし、HD レンダーパイプライン(HDRP)やレイトレーシングのような高品質なグラフィックスを可能にするテクノロジーは、どのようなデバイスでも動作するものではありません。

そこで私たちは、WebRTC のテクノロジーを利用して、ブラウザーから Unity の高品位なレンダリングを使用したプロジェクトを活用できるようにするフレームワークを開発しました。このフレームワークはランタイムからもエディターからも利用できるため、HDRP を使ったカーコンフィギュレーターや建築モデル、その他ツールとの連携など、様々な用途に応用できます。

ブラウザーとリアルタイムを繋ぐ WebRTC

WebRTC とは、Google が 2011 年から開発しているオープンソースソフトウェアで、ブラウザーやモバイルプラットフォーム間でピアツーピアのリアルタイム通信を可能にするために利用されています。WebRTC は主要なブラウザーで対応が進められているため、最新のブラウザーさえインストールされていれば、多くの端末で利用可能です。

私たちは Unity で WebRTC を気軽に活用できるようにするライブラリを Apache 2.0 ライセンスのもと、オープンソースのプロジェクトとして GitHub に公開しました。また、このライブラリはプレビューリリースとしてパッケージマネージャーに公開されているので、プロジェクトに気軽に追加することができます。

WebRTC + Unity のドロップインフレームワーク「Unity Render Streaming」

Unity 向けの WebRTC ライブラリを開発するとともに、このライブラリを用いて Unity のアプリケーションをブラウザーから利用できるようにする Unity Render Streaming というフレームワークの開発に取り組んでいます。

Unity Render Streaming をプロジェクトに追加することで、Google Chrome や Safari などの、皆さんが日頃利用しているブラウザーから Unity で開発したアプリケーションをリアルタイムに操作できます。また、私たちはデスクトップのブラウザーだけでなく、iPad や iPhone、Android の主要ブラウザーで動作を確認しています。

Unity Render Streaming もパッケージで公開しているため、パッケージマネージャーからすぐに追加することができます。ソースコードはこちらの GitHub リポジトリから取得できます。

ユーザー入力をブラウザーから

Unity Render Streaming はブラウザー上で行われた入力操作を Unity アプリケーションへ即座に送信してディスパッチします。キーボードからの入力、マウス及びタッチの操作、HTML ボタンのイベントに対応しています。Unity 上で通常の開発と同じように入力処理を実装すれば、Unity Render Streaming フレームワークが WebRTC の DataChannel API を通して新しい Input System に入力イベントを受渡して処理するため、普通の Unity の開発体験と同じようにブラウザーからの入力を利用することができます。

複数の端末に同時配信する

Unity Render Streaming を使用したアプリケーションは、同時に複数の端末と接続することが可能です。同時接続可能な台数はマシンスペックと映像品質に依存しますが、通常のマシン環境であれば、同時に 4 台程度の接続は許容範囲です。

1 つ注意が必要なのは、Unity Render Streaming を利用する際のネットワーク環境です。WebRTC は映像のストリーミング配信も行うので、映像品質を維持するためには安定したネットワーク環境が必要になります。

また、複数の端末への配信が可能といっても、端末数が増える分だけ負荷は増加します。
Unity Render Streaming 単体でもイントラネット環境でのストリーミングは簡単に構築することができますが、実際のインターネットでの配信サービスを作る際は遙かに複雑な仕組みが必要となることを覚えておく必要があります。

例えば、10 台以上の端末への配信を考える場合は、SFU と呼ばれる配信用の分散サーバーを使ったシステムを構築する必要があるほか、インターネットで WebRTC を活用するためには、別途 STUN / TURN サーバーといったものを利用する必要があります。

映像のハードウェアエンコーディング

ハイクオリティなグラフィックスを高いユーザー体験をもたらせるフレーム数でストリーミングするためには、パフォーマンスと遅延の 2 つの問題を解決する必要があります。

ストリーミング時の遅延を減らして高いユーザー体験を提供するために、NVIDIA Video Codec SDK を使用してフレームバッファの GPU ハードウェアエンコーディングを行い、ブラウザーに送信しています。

そのため、現在の Unity Render Streaming を使用する際には、NVIDIA の GPU を搭載したコンピューターで実行する必要があります。将来的にはより多くの GPU をサポートしていきます。

サポートは?また、使ってみるには?

Unity の WebRTC ライブラリは Apache 2.0 ライセンスのもと、コミュニティサポートのテクノロジーとして運用します。このテクノロジーに興味がある方はぜひ開発に参加してください。リポジトリをフォークしたり、機能を拡張したりすることも自由です。さまざまな可能性を試してみてください。もしかしたら新しいアイデアがひらめくかもしれません。

まずはチュートリアルドキュメント(英語日本語)をご一読ください。また、ドキュメントの FAQ も役に立つかもしれません。WebRTC と Unity Render Streaming についてのフォーラムを開始しましたので、ぜひフィードバックや情報交換にご活用ください。

みなさんが WebRTC と Unity で、さまざまな面白いプロジェクトを開発されることを楽しみにしています。

15 コメント

コメントの配信登録

返信する

これらの HTML タグや属性を使用できます: <a href=""> <b> <code> <pre>

  1. NICE one said

  2. nice one said

  3. Guillaume Cauvet

    9月 19, 2019 3:09 pm 返信

    Does it support multiple, different output ? Let say I want to map one camera to a port and a second camera on another port ?

  4. Excellent addition to Unity’s tech line up. Yes, it’s nvidia and windows, but this is no problem for all business customers, visualisation, film etc. Hardware and OS is irrelevant to them.

    As for game streaming like Stadia and more, well that’s a future-thing since this is the first release of this open-source effort. I guess we will even see the Unity editor streamed one day, potentially :D

  5. Sounds very interesting.
    I have a lot of questions, but forum is not open for further replies.

    1. Thank you for your response.
      The forum is already opened, please post your replies.

  6. Stefan Hollekamp

    9月 18, 2019 6:36 am 返信

    Windows only??????
    are you kidding?
    why you do this?
    and Nvidia only lol
    since MS support in Unity3d we get a ton of those crap that runs only on Windows … are you kidding???
    go and figure out…
    very disappointing to see this happen more and more…
    I’m more happy with UE @ moment… better performance on low machines than Unity!
    Unity is just always behind the competitors… and full of bugs .. more and more…
    the last two release are unusable on Mac… 2019.2.5F1 and 2019.2.4F1….
    simple things like Slider is broken… where are the QA???
    i don’t report bug anymore… do not get paid for !
    and all the bug’s i’ve found and documented that got fixed after several years… :-(
    for what??? no thanks nothing in return…
    i really have given up on Unity3d … look in the forums and ask a question…
    maybe maybe you’r get a answer… maybe but never from Unity stuff like in the old day’s where support was important!
    Now it’s just making money and shareholders value what is interesting…
    i’m a user and supporter from first release on Mac

    1. Lol Mac first because you have a Mac?
      It is always best to start developing for platforms that are used the most and then develop further if there is a demand for it. You can reach the most customers and Nvidia + Windows are just more common than Mac’s and AMD’s.
      As an old Mac user I was glad I made the switch to Windows when VR development started becoming big and Unity helps me create those and other projects with ease. Back in the day it was impossible to run anything VR on a Mac.
      If Unity is so bad, why use it and come here to complain? You are free to go wherever you want to go.
      On topic: This new development looks like a really nice step up from WebGL and could be a game changer for online rendering.

      1. Jashan Chittesh

        9月 18, 2019 5:55 pm 返信

        > Lol Mac first because you have a Mac?

        I’m not OP but OP probably wrote “i’m a user and supporter from first release on Mac” because until version 2.5, the Unity editor only ran on the Mac. I bought a Mac back then, a little after Unity 2.0 had been release, so I could use this game engine. Like you, I moved (back) to Windows for VR development – but I do remember the days when the Unity editor was available on Mac only, and those were really good days (you could do builds for Windows even back then, just no authoring on Windows).

        That said, I think that for game development today, it’s a good thing to be able to test on all the platforms, with macOS admittedly being the least important except for doing iOS builds, maybe.

        About Streaming: While in general not a fan of game streaming, I think this could actually be quite useful for local multiplayer, if it can render to different devices like to different screens, and if input is also handled appropriately (it seems from the description that this might be the case). Definitely something I’ll look into.

        1. The multiplayer aspect had me intrigued as well.

    2. I hope you do go elsewhere for your game engine needs, so I never again have to lay eyes on your textual diarrhea of a post.

    3. Lol behind the competition ? :D Optimized for smartphones development like no other. They started mainly on smartphones and for that, they become super large… So no competition here. More like UE has now competition with Unity.

  7. Stefan Hollekamp

    9月 18, 2019 6:26 am 返信

    Windows only…. are you kidding????
    and Nvidia Card req. lol…
    so who can use this????
    where are the Mac user @ Unity3d ???
    it was all better before Windows support :-(

  8. Anthony Rosenbaum

    9月 17, 2019 9:42 pm 返信

    How does it do on Phone browsers?

    1. User needs a WebRTC compatible mobile browser …. Safari, Firefox, or create a Cordova Webview Application with WebRTC enabled