本日は、Unityのようなリアルタイム制作ツールとは、どのようなもので、どのような分野で利用されているのかという、Unityの概念学習的なチュートリアルを行いました。
目次
リアルタイムとは
リアルタイムの意味
まず、ここでいうリアルタイムとはディスプレイにイメージ(画像やグラフィックなど)がどれだけ早く表示されるかという事を指します。制作物を更新したら、それが瞬時に表示され、待ち時間がなく制作できる状態が最高の状態です。また、Unityのようなツールで制作されるコンテンツは、コンテンツ制作者とエンドユーザーとの間でリアルタイムの対話が発生するという意味もあります。
昔のコンピューターでは、これらの表示処理に時間がかかっていたため、更新のたびに表示されるまで何分も待つ必要がありその制作時間に膨大な時間がかかっていました。時間の掛かるレンダリング(画像やグラフィックの表示処理)でユーザーとの対話のないコンテンツをオフラインレンダリングと呼びます。映画などがそうですね。
ゲームのようにユーザーとの対話を含むコンテンツは、オフラインレンダリングで制作するのは現実的ではありません。(時間がかかりすぎます)そのため、リアルタイムレンダリングの技術はゲームと共に進化してきており、一般的にリアルタイムレンダリングの速度向上はビジュアルクオリティ、アニメーションの複雑さ、エフェクトなどを犠牲にして成り立っていました。しかし、最近のハードウェアの進化により、リアルタイムレンダリングの質は実写と見間違う位まで進化しました。
リアルタイム制作ツール(Unity)がどのように利用されているのか
現在のリアルタイムレンダリング技術は、オフラインレンダリングと完全に同等とまではいっていませんが、その差は急速に縮まっています。以下の動画は、Unityチームがリアルタイムレンダリングで制作したDemoです。
このクオリティを制作するのにどの程度のPCスペックが必要かはわかりません。また、一つ一つのグラフィックやエフェクトの制作には多大な時間が掛かっていると思われますが、このクオリティの映像がUnity上でリアルタイムに制作できるとは驚きです。
Unityとは
Unityはゲームエンジンとして制作されましたが、今ではゲーム以外の様々な分野で使用されています。とはいえ、まだUnityはゲームエンジンツールとしての側面が強いです。ここでは、Unityを知るためにゲームエンジンとは何なのかを学習しました。
ゲームエンジンとは
ゲーム制作とは、見た目以上に複雑です。単純なテキストを画面に表示するだけも、表示するデバイス(PCやスマホ)に明るさ設定に応じた画面を表示できるよう電源を供給させたり、ネットワーク接続状態を維持したり、テキストの表示する場所を指示したりといった多くの処理が、OSによって見えないところで実行されています。こういったことを管理するのは非常に大変です。このような事を一つ一つ考えていては、ゲーム制作などできません。
メールソフトが、文章を書いてボタンを押すだけで送信できるように、ゲームエンジンとは、制作者がゲーム制作に集中できるように作られたツールです。ゲームエンジンとは、3D/2Dモデル、スクリプト、音声ファイル、テクスチャ、アニメーションといった素材を表示させ、組み合わせる事ができ、それらを実行させたいデバイス用に書き出すことができるツールです。
ゲームエンジンで、何を作るのか
ゲームエンジンでは、制作したものでユーザーが体験することの全てを作ります。ジャンプを使用するアクションゲームであれば、ジャンプのアニメーションだったり、VRだったら、ユーザーが歩き回る3Dフィールドの制作だったりです。これらは全て、ユーザーとの対話による体験を制作するということであり、このユーザー体験を作るということが、ゲームエンジンの全てです。
ゲームエンジンでは、一つ一つのアセット(3Dモデル、音楽などの素材)を制作するツールではありません。それらは、Digital Content Creation(DCC)ツールで作成されます。DDCツールとは以下のようなものです。
- 3D DCCs(3Dモデル、アニメーションキャラクターなど):Maya、ZBrush、Blender
- 2D DCCs(2Dキャラクター、テクスチャなど):Photoshop、Illustrator、Substance、Painter、Gimp
- オーディオDCCs(BGM、効果音など):Audition、Logic Pro、Reaper、Audacity
- IDEs(Integrated Development Environments)(プログラム):Visual Studio、Rider
- リアルタイムエンジン(リアルタイムレンダリングの3Dコンテンツやアプリケーション):Unity、Unreal
3DCCs、2D DCCs、オーディオDCCs、IDEsで作成された素材たちを、Unityのようなゲームエンジンで組み合わせ、コンテンツを作成します。
素材を自分で作成することができればよいですが、全てを作成することは難しいので、Unity Asset Storeで無料のものを使用したり、欲しいものがあれば購入することができます。
Unityの歴史
はじまり
2005年、Unityの創設者であるJoachim Ante、David Helgason、Nicholas Francisは、会社設立から1年後、MacOS向けのビデオゲームGooBallをリリースしました。このゲームは、Over the EdgeEntertainmentと呼ばれていました。ゲームは、他の開発者にエンジンのライセンスを供与することを目的として、彼らがゼロから構築したエンジンで作成されました。
Unity以前のゲーム開発
Unity以前のゲーム開発は、各ゲーム開発会社が固有のゲームエンジンを作成していました。(小島プロダクションのFoxEngineなど)時には、1つのゲームのためにゲームエンジンを作ることもありました。そのため、ゲーム開発には、ゲームエンジンの制作が必要であり、また、ゲームの作り直しする場合に、ゲームエンジンまで作り直す必要がある場合もあり、そのコストは莫大なものでした。ゲームエンジン制作には、非常に高度な知識とプログラミングスキルが必要なため、そういった技術のない開発者は高いお金を払ってゲームエンジンを手に入れる必要がありました。
Unityの誕生
GooBallは成功しませんでしたが、Unityエンジンは、Apple’s Worldwide Developers Conferenceで初公開され、その後2000年代中盤にインディーゲーム開発に革命を起こしました。その頃ちょうど、高速インターネット(おそらく光回線)が普及し、ゲームのデジタル配信が初めて現実的なものになりました。(Steamなどのダウンロードサービス)それまでは、インディー開発者が、独自にゲームを開発し、販売するという事はほぼあり得ませんでした。しかし、インターネットの高速化が進むにつれ、デジタル配信サービスも普及していき、インディー開発者達がUnityを手にすることにより、ゲーム開発と販売の両方が可能になりました。
Unityは他のエンジンと価格面で差別化を図っていました。Unityは、無料で使用することも可能であり、有料版でも手ごろな価格で利用できました。Unityは開発者フレンドリーなエンジンであったため、その後、Unityコミュニティーは成長していきました。
App Storeがオープンした際、UnityはApp Storeがサポートするプラットフォームの一つになりました。そのため、モバイルゲーム市場でも普及し、App Storeでリリースされている半分のゲームがUnityで制作されています。そして現在では、その状況がiOSとAndroid端末両方で起こっています。
Unityはどのような分野で利用されているか
先にも述べたように、Unityはゲームエンジンではありますが、様々な分野で利用されています。ここでは、どのような分野で利用されているかを学習しました。
ゲーム
今では、Unityで作成されているゲームは、全体の50%にもなるそうです。VRやAR、MRといった分野では60%がUnityで作られているそうです。
メディア、エンターテインメント
映画、アニメーション、広告といった分野でもUnityは使われています。この分野では、ゲームと違い、基本的に対話的なコンテンツは制作されないため、必ずしもUnityで制作する必要はないかもしれませんが、Unityを使うことで制作時間の短縮ができる場合もあるようです。
私自身が一番Unityに可能性を感じている分野がこの分野です。映画やアニメ、広告といった物が今後対話的なコンテンツとなっていくと予想しています。(それを作りたいと思っています)それは、ゲームと殆ど変わらないかもしれませんが、たぶん違うものでしょう。また、映画やアニメ、広告という名前では無くなるかもしれません。
建築、建設業
Unityで建築物の3Dモデルをリアルタイムレンダリングして、デザインや設計に役立てたり、建設のシミュレーションなどに使用されています。ARやVR等と組み合わせることで、建物を建てる前から建物の完成状態をシミュレーションし、中を歩いたりして確認できるため、デザイナーやエンジニアの能力をさらに引き出すことができます。
自動車、輸送業、製造業
建築、建設業と同じように、車のデザインシミュレーションに使われています。車の3Dモデルを作成しておけば、その色や形を自由に変更してデザインすることができるため、デザイナーやエンジニアがデザインや設計を徹底的に追い込むことができます。また、そういった3Dモデルを使った映像や3Dモデルそのものを消費者に見せることにより、広告宣伝効果向上にも役立っています。
その他にも、いろいろな分野で利用されていると思いますが、共通している利用ケースは以下のような点です。
- 対話的なコンテンツの作成
- デザインコンセプト制作の高速化
- チームでの共同作業化
- 完成状態を可視化
- 作成したコンテンツやアセットの別プロジェクトへの再利用
Unityクリエイターとしての利用シーン
最後に、実際のUnityクリエイター達がどのようにUnityを使い始めたのかというインタビューを見て、Unityの利用具体的な利用シーンを学習しました。おおよそ以下のような動機で使い始めた方がいました。
- VR体験のコンテンツを作りたかった
- 顧客に見せる、建築物のシミュレーションモデル制作
- ゲーム制作をするためのエンジンを探していた(先生や友達の紹介で、自分で探してなど)
- カートゥーン(アニメーション)を作るため
まとめ
リアルタイムエンジン、ゲームエンジンの概念や、Unityの歴史を通して、Unityがなぜ利用されるのかを学びました。
また、様々な利用シーンを学ぶことで、Unityを自分がこれからどのように使っていくべきか、どの分野に自分か興味があるのかが明確になりました。10年前始めてUnityに触れた時は、漠然とゲームが作りたいという動機でしたが、今では映像やアニメーション、ARやVRといった分野での対話的コンテンツの作成に興味があることを再認識できました。
まだ、何を作りたいというところまで行っていませんが、引き続き勉強しながらアイデアを練りたいと思います。