SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Unity初心者が初めて
HTC ViveでVRゲームを作ってみた
2016年8月14日(日)
栗原泰隆
元Flasher、Web制作会社勤務、上海在住5年目。
Unity歴1年、本格的に使うのは今回が初めて。
栗原泰隆。1978年、栃木県出身。2005年、その頃隆盛だったFlashエンジニアに憧れてそれまで勤めていたメー
カー子会社を退職、会社が出来てまだ1年、マンション1室の制作会社に転職、Flashエンジニアとしての第一
歩を踏み出す。
その後、仕事の関係でサーバーサイドエンジニアをやったり、転職を繰り返しながら徐々にFlashエンジニアと
しての実力をつけるが、2008年に登場したiPhoneがFlash非サポートを発表したことをきっかけに急速にFlash
は日陰な技術になっていく。
2011年、その当時勤めていた会社が行った上海現地法人立ち上げのための社内公募に迷わず挙手、猛烈にア
ピールの末、上海勤務2名のうち1名に選ばれその翌年2012年、上海に渡る。その後、上海の水が合ったのか、
あれよあれよと4年が経つ。
去年、映像制作会社に転職したことをきっかけにVRに興味を持ち調査を開始、自分でもUnityを独学で勉強しは
じめる。
今年7月、「Unity VR Expo Akiba」に会社の支援を得て出展、自分で企画、開発したHTC Vive用ゲーム「Space
Tennis」を展示。
kurihara@pyramidfilm.cn
https://www.facebook.com/yasutaka.kurihara
http://www.immersive.jp/
自己紹介
このスライドでは、
Unityで初めてVRゲーム「Space Tennis」を作ってVR Expo
Akibaに出展してみてわかったVR開発のトピックなどをまとめて
みました。
一からUnityを勉強しているため、開発については基本的な内容
が中心になると思います。
VR開発に興味がある人、これから開発してみたいという人の助
けになればと思います。
Space Tennisとは
今年の会社10周年パーティーの出し物用に企画したVRゲーム。
Viveのコントローラーがテニスのラケットになっていて、
前方から飛んで来るボールを打ち返すゲーム。
4ステージ終わった時点での合計得点を競います。
参考記事
Mogura VR記事: http://www.moguravr.com/unity-vr-expo-akiba-2-2/
Vine動画: https://vine.co/v/5ZKJbeWQ29Q
世界観はこんな感じ Unity Vr Expo Akibaのブースの様子 ゲームに熱中すると動作も激しくなる
メンバー
プロデューサー:外間正太(Pyramidfilm上海)
ビジュアル、モデリング:宮村綾(フリー、VJ/デザイナー)
Unityオーサリング:栗原泰隆(Pyramidfilm上海)
開発環境
Cinema4D(モデル)
Unity5.4
ASUSのVive Ready PC + サブとしてMacBookPro13インチ
開発期間
Oculusでの開発を予定していたが、4末に先にHTC Viveが届いたのでViveに切り替え、すぐに検
証をはじめた。開発期間は仕事の合間など作業でAkibaまで約2ヶ月半。ただ、unityでの開発が初
めてだったため、前半の1ヶ月半はほぼunityの検証に費やした。今も絶賛、開発中。
開発概要
企画
キービジュアル作成
基本動作検証
背景モデル作成
ビジュアル検証
仕様検討
実装
仕様再考
再実装
内覧・最終チェック
メンバー全員でViveゲームをやって何をやったら面白いのか話し合う
ゲームの方向性をテニス+シューティングと決めた時点で、実際にunity
で玉を打つデモを作って、当たり判定などを検証
キービジュアルを作って世界観をメンバーで共有
C4Dで背景モデルを作成
出来たモデルをunityにインポートするがいろいろと問題が発覚したので、
ライティングなどを勉強
カウントダウンで開始、時間、スコア、ライフを表示してゲームとして
成立するところまで作る
ステージ制の採用を決定、ミサイル仕様の削除を決定
各ステージ、チュートリアルを実装
会社で内覧会を実施、最終チェック
時間制限を設けること、ハイスコアゲームにすることなどを決定
開発の流れ
企画(1)
本業(広告)で活かせるイベントで使えるVR
 VRが初めての人でも楽しめる
 年齢、性別を問わない
 楽しい、楽しそう(ネガティブは避ける)
他のViveゲームをやってみて
 Audioshieldは意外と単調でつまらない
 シューティングゲーム楽しい!(Space Pirate Trainer)
やってないけど参考にした事例として
NPEX Energy Rhythm(http://panora.tokyo/8196/)
 体験者の動きから楽しさが伝わってくる
 モチベーションの上げ方
 UIの親切感
2回のブレストで見えてきたゲームの方向性
 HTC Viveを使った立ったまま行うゲーム(立ちゲー)
 音楽に合わせて玉を打ち返して得点を競うゲーム→音楽に合わせるは無くなった
 世界観的には近未来、宇宙をイメージ
 イベント利用を考え難易度は低め、ルールも簡単で理解しやすく
 短時間(1分〜1分半程度)で楽しめる→最終的には3分弱に
どうしてテニス型にしたのか
 シューティングが面白いのはわかっていた
 もともとのコンセプト(誰でも遊べる、ネガにならない)を考えると血生臭くなる可能性
 Viveの特性を考えると立ちゲーはマスト
 Audioshieldのつまらなさは、やっている人の動きの地味さにある
 動きを派手にするには?ボクシング?テニス?と考えて、最終的にはテニスに落ち着いた
企画(2)
全体のイメージの共有
異なる役割の3人(プロデューサー、デザイナー、プログラマー)で企画を行うにあたり、
全員が最終イメージを共有しやすいようにプロジェクトの当初でキービジュアルを作った。
VR EXPOの出展を決めた時も、ゲームは未完成だけどKVを使って応募できた。
(KV作っておいて良かった。)
VR EXPO AKIBAに応募したときのビジュアル。
KVに即席で文字を入れた
宇宙イメージ+テニスという方向性が見えた時点
で、デザイナーがイメージを作成。
実際の背景の3Dモデルもこのときに作成したもの
を使ったので、ほぼゲームの世界観はこのイメー
ジになった。
グラッフィク検証(1) – 暗くする
C4Dのモデルをステージに配置した直後の
状態、デフォルトのDirectional LightをOffに
しても暗くならない。
Main CameraのClear Flagsを黒に、
Lightingで環境光を消してC4Dの太陽ライ
ト位置にDirectional Lightをアタッチ、完
全に真っ暗にするには環境光の反射の設置
も0にする必要があるが、0にすると暗す
ぎたので反射だけは少し調整した。
すべてのライトを無効にしてもシーン全体が暗くならない
Main Camera-Inspector-Clear Flags:オブジェクトが配置されていない部分の塗りのデフォルトを指定する
SPACE TENNISでは宇宙空間にしたかったので、Assets Storeで星空のSky Boxを購入した。
購入したSky Box
Skybox Simple Nebula(https://www.assetstore.unity3d.com/jp/#!/content/8453)$1,95
Window-Lighting-Ambient Intensity:環境光の強さの設定
下記のブログ記事を参考に環境光を調整した。
http://tsubakit1.hateblo.jp/entry/2015/03/26/011351
グラッフィク検証(2) - 発光、透過、映り込み
発光
飛んでくるボールを発光させる
Material-Inspector-Emission(発光)を1.0以上に
参考にしたブログ記事:
http://tsubakit1.hateblo.jp/entry/2015/06/24/055130
このブログ記事で紹介されている「Bloom Pro」($5)も使った。
モバイル向けらしく軽かったので採用。
透過、映り込み
ディスク部分はShaderをSpecularにして透過、映り込みを実現、
枠の部分はEmission強めで発光させた。
右はディスクのMaterialの設定。
プレーヤーが立つディスクはガラスっぽい質感にしたかった
ので、Standard Materialの指定でShaderにSpecularを指定、
映り込みを実現。
透過はRender ModeにFadeを指定した。
設定はマニュアルを見ながら実際の見た目を見ながら行った
ため、この設定が本当に正しいかどうかは良く分かっていな
い。
参考にしたUnityのマニュアルページ:
Metallic vs Specular ワークフロー
http://docs.unity3d.com/ja/current/Manual/StandardShaderMetallicVsSpecul
ar.html
Viveコントローラーの使い方
 私がよく参考にしたのは「フーレムシンセシス VR開発メモ」
フーレムシンセシス VR開発メモ
https://framesynthesis.jp/tech/unity/htcvive/
 RightController.csをつくり、Controller (right)に追加
 RightController.csのStartでTrackObjectを取得
trackedObj = GetComponent<SteamVR_TrackedObject> ();
 RacketのモデルをImportして、ViveのControllerのModelと同じ階層に追加
 元のModelは非Activeに
 CGのボタンと実際のコントローラーのトリガー位置を同期する
button = GameObject.FindGameObjectWithTag ("Button");
var device = SteamVR_Controller.Input((int)trackedObj.index);
float value = device.GetAxis (Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger).x;
float diff = defaultTriggerValue - value;
if (button != null)
{
Vector3 position = defaultTriggerPositionValue;
position.z = defaultTriggerPositionValue.z + diff;
button.transform.localPosition = position;
}
これから初めてViveで開発する場合、Viveのセットアップやコントローラーの使い方について
は、すでに良くまとまっているブログ記事があるのでこれらを参考にすれば良いと思う。
手に持ったラケットでボールを打つ検証
 RacketのモデルをViveのControllerのModelと同じ階層に追加、元のModelは非Activeに
 ボールとラケットに当たり判定用のBoxColliderを追加
 ラケットとボールに張ったBoxClliderに設定したPhysic Materialで跳ね返りをほぼ最大(0,99)に、
Bounce CombineもMultiplyに
 それ以外のDynamic FrictionとStatic Frictionも検証したが、摩擦系は玉の跳ね返り方にそれほど影響し
ない(玉の質量にしそうだが検証しきれなかった)
 BoxClliderはモデルより厚めにしないとラケットを早く打った時にすり抜けてしまうのでラケットの厚
さの3倍程度まで大きく(リアリティは薄くなるがすり抜けるよりはマシ)
 玉にRigidbodyを追加、Collision DetectionをContinuousに設定
 Gravityは検証時は使ってなかったが、直線的な玉の動きは予想がしやすく面白みが無いので後ほど
Gravityを使うように変更した
 その他、調整に使ったのはEdit-Project Settings-PhysicsManagerのSleep Thresholdの値あたりだが、劇
的に当たり判定がよくなることは無かった
 最終チェックでラケットを早く振ったプレイヤーの玉が前に飛ばないで後方に飛んでしまう問題が多発
して調整しようとしたが、Expo本番までに時間がなく修正しきれなかった
Unityでボールを打つデモを作るのは簡単だったが、当たり判定と跳ね返
り方の調整には実際にプレイしながらでないとわからないので時間がか
かった
物理エンジン
AngleXとAngleYにHMDを起点に上下左右にずらす距離を指定。
//Viveの目線に合わせる
Vector3 target = new Vector3 (Camera.main.transform.position.x, Camera.main.transform.position.y + gap, Camera.main.transform.position.z);
var heading = target - this.startPositon.transform.position;
var distance = heading.magnitude;
var direction = heading / distance; // This is now the normalized direction.
this.transform.position = direction;
//ボールを上下左右にちらす
transform.Translate(Quaternion.AngleAxis(this.AngleX, Vector3.up) * this.transform.position );
transform.Translate(Quaternion.AngleAxis(this.AngleY, Vector3.right) * this.transform.position);
Vector3 force = this.transform.position;
GameObject ballObject;
ballObject = Instantiate (Resources.Load ("ThrowBall", typeof(GameObject)), this.startPositon.transform.position, Quaternion.identity) as GameObject;
ballObject.transform.LookAt(target);
Rigidbody rigidbody = ballObject.GetComponent<Rigidbody> ();
rigidbody.AddForce (force * this.Speed, ForceMode.VelocityChange);
SpaceTennisは毎回ランダムな位置にボールが飛ぶように設定した
ボールを飛ばすスクリプト
 ボールGameObjectにRigidbodyコンポネートを追加
 RigidbodyをAddForceで力を加える
 AddForceの第一引数に渡すベクトルはターゲット位置、投球位置、左右に散らす距離を
利用して求めた
Unity – スクリプトリファレンス
http://docs.unity3d.com/ja/current/ScriptReference/Rigidbody.AddForce.html
ボールの当たり判定
OnTriggerEnterは衝突するColliderのisTriggerフラグが立っている場合のみ発行される。
Space Tennisではラケットとの衝突判定のハンドリングにはOnCollisionEnterを使い、
ラケット以外ののオブジェクトとの判定はOnTriggerEnterを使った。
どちらを使っても当たり判定はできるが、ラケット以外のオブジェクトでは、ラケットで触れた後しか反応させた
くなかったので、一度ラケットが当たって時点でHitフラグを立てておき、OnTriggerEnterの中ではHitフラグを判定
するということを行った。
(Ball.cs内のスクリプト)
void OnCollisionEnter(Collision hit)
{
if (hit.gameObject.CompareTag ("Racket") && !Hit)
{
timer = new Utils.Timer ();
timer.FireDelegate = showPoint;
timer.startTimer (.2f);
Hit = true;
}
}
void OnTriggerEnter(Collider target)
{
if ((target.gameObject.CompareTag ("Hexagon") || target.gameObject.CompareTag ("LastBoss")) && Hit && !throughTarget)
{
throughTarget = true;
Vector3 position = transform.position;
pointInstance.transform.position = position;
if (target.gameObject.CompareTag ("Hexagon"))
{
anim.StartAnim (2);
Destroy (pointInstance, 5f);
}
}
}
Unityでのイベント処理の方法
UnityのGameObjectにはSendMesssageがあるが、
FlashのEventシステムに較べて以下の問題があると思う。
SendMesssageの問題点
 送信先のオブジェクトの参照を持っていないといけない
 メッセージを伝播する仕組みがない
Space Tennisでは
SteamVRのソースを真似てUtils.Eventクラスを作った。
使い方
1. イベント発行時に実行したいメソッドを定義
Private void onIntroEnd(params object[] args)
2. AwakeでイベントをListen
Utils.Event.Listen (Utils.Events.INTRO_END, onIntroEnd);
3. 適当なクラスからイベントをSend
Utils.Event.Send (Utils.Events.INTRO_END);
public class Event
{
public delegate void Handler(params object[] args);
public static void Listen(string message, Handler action)
{
var actions = listeners[message] as Handler;
if (actions != null)
{
listeners[message] = actions + action;
}
else
{
listeners[message] = action;
}
}
public static void Remove(string message, Handler action)
{
var actions = listeners[message] as Handler;
if (actions != null)
{
listeners[message] = actions - action;
}
}
public static void Send(string message, params object[] args)
{
var actions = listeners[message] as Handler;
if (actions != null)
{
actions(args);
}
}
private static Hashtable listeners = new Hashtable();
}
イベント管理用のUtils.Eventクラス
2Dアニメーション
2DのアニメーションにはSpriteStudio 5を利用。
SpriteStudio 5 Player for Unity
https://www.assetstore.unity3d.com/jp/#!/content/22916
自分が元FlasherなのでSSのUIはFlashに近いので割りと馴染みやすかった。
カウントダウンの文字を512 x 512で作ってImportしたら大きすぎたのでScaleを0.01にして使った。
ひとつのプロジェクトファイル(sspj)で複数のアニメーションをさせる方法
ひとつのプロジェクトファイルで複数のアニメーションをさせることが可能。
Space Tennisでは得点の表示アニメーションをひとつのファイルにまとめて行った。
ssaeに複数のアニメーションを追加
StartAnimの引数に渡す番号は上からのインデックス
値になる。
anim.StartAnim (0);
とした場合は、右の0_point100のアニメーションが実
行される。
VR空間でのUIの使い方
UIの基本についてはAmazonで買った本で学習した。
UnityゲームUI実践ガイド
https://www.amazon.co.jp/dp/B00U0ZUETW/ref=dp-kindle-
redirect?_encoding=UTF8&btkr=1
Space TennisではCanvasの下にレイヤーを7層重ねて、状態に
よってGameObjectのアクティティブ状態を切り替えて表示/非
表示を制御を行った。
InfoBoard…画面左上のTIME/SCORE/LIFE
Result…結果表示
Welcom…ゲーム開始前の状態の表示
Intro…ゲーム前のチュートリアル画面
RemainingTime…残り時間表示
Message1…メッセージ1
Message1…メッセージ2
Canvasの設定
Render Mode: World Space(X:0, Y:0, Z:10)
Width: 1024 / Height: 768
FontはAssetとしてProjectにImportしておくと選べるようになる。
チュートリアル(Intro)
ゲームをはじめる前にプレーヤー全員に体験してもらうにチュートリアル機能をつけた。
はじまる前にチュートリアルで実際にボールを打ってもらい、スムーズにゲームに導入していけるようにと、
イベント会場でスタッフが全員に説明しなくても良いように、チュートリアル内に
ゲームの説明を入れた。
目的
スムーズな導入
会場スタッフの作業軽減
SPACE TENNIS へようこそ
「SPACE TENNIS」は、ミッションをクリアしながらハイスコアを目指す
ゲームだよ
心の準備はできたかな?
中央の三角かボールからボールが飛んで来るよ
ラケットで打ち返してね
それじゃ まず練習だ
トリガーを引きなら打つとボールが加速すよ
今度はトリガーを引きながら打ってみて
カウントダウンの後にゲーム開始だ
最後まで楽しんでねカウントダウンの後にゲーム開始だ
1回目練習
2回目練習
汎用メッセージ(Message)
ゲーム中に汎用的に使えるメッセージビューを作成した。
1. メッセージ表示用のMessageItem.csを作成、Messageゲームオブ
ジェクトに追加
2. Message制御用のMessage.csを作成
3. MessageItem.csのStartでMessageに自身を登録
4. メッセージを表示するタイミングでMessageを通してshowMessage
をコール
Message.GetView(0).showMessage (Glossary.GAME_END_COMPLETE,
showMessageCompete);
第一引数に表示する文言、第二引数にコールバック用のdelegateメソッドを指定。
public class MessageItem : MonoBehaviour {
public int messageNum;
void Start ()
{
Message.SetView(this, messageNum);
〜省略〜
}
}
using UnityEngine;
using System.Collections;
using System.Timers;
namespace Quadra
{
public static class Message
{
public static MessageItem View0;
public static MessageItem View1;
public static MessageItem GetView(int number)
{
if(number == 0) return View0;
if(number == 1) return View1;
return null;
}
public static void SetView(MessageItem view, int number)
{
if(number == 0) View0 = view;
if(number == 1) View1 = view;
}
}
}
MessageItem.cs
Message.cs
3Dアニメーション
private void move()
{
System.Random rand = new System.Random ();
int num = rand.Next(POSITIONS.Count);
float y = this.gameObject.transform.position.y;
Vector3 pos = POSITIONS[num];
iTweenExtention.SerialPlay (this.gameObject
,(iTweenAction)iTween.MoveTo, iTween.Hash ("y", y+0.5f, "time", 1.5f, "easeType", iTween.EaseType.easeInOutSine)
,(iTweenAction)iTween.MoveTo, iTween.Hash ("y", y-0.5f, "time", 1.5f, "easeType", iTween.EaseType.easeInOutSine)
,(iTweenAction)iTween.MoveTo, iTween.Hash ("y", y+0.5f, "time", 1.5f, "easeType", iTween.EaseType.easeInOutSine)
,(iTweenAction)iTween.MoveTo, iTween.Hash ("y", y-0.5f, "time", 1.5f, "easeType", iTween.EaseType.easeInOutSine)
,(iTweenAction)iTween.MoveTo, iTween.Hash (
"position", pos
,"time", 1
,"easeType", iTween.EaseType.easeInOutQuint
,"oncompletetarget", this.gameObject
,"oncomplete", "onMoveComplete")
);
}
3DオブジェクトのアニメーションはFlashのTweenerに似ているiTween(無料)を採用。
Space Tennisではラスボスの動きなどに使用した。
iTweenExtention(有料$2)のSerialPlayを使うことで連続したアニメーションが簡単に記述できた。
iTween
https://www.assetstore.unity3d.com/jp/#!/content/84
iTween Native Extension
https://www.assetstore.unity3d.com/jp/#!/content/18391
LastBoss.cs
音楽の使い方
Unityでは3Dサウンドが利用可能。
利用方法は簡単で、音を発生させるGameObjectに追加したAudioSourceのInspectorでSpatial Blendのつまみを
3Dに向けるだけ。
AudioSource-Inspector-Spatial Blend(3D エンジンがオーディオソースに影響を与える度合い)
その他、Min DIstanceとMax Distanceなどで聞こえる距離を設定したり、Rolloffの設置を行った。
Space Tennisの場合、ボールが近づく感じを音でも迫力を持たせたかっため、Volume RolloffをLogarithmic
Rolloff(オーディオソースに近ければサウンドは大きいが、オブジェクトから遠くなるとサウンドは急速に小さ
くなる。)にした。
音のフェイドアウトはiTweenのonupdateを使った。
下記はカウントダウン開始と同時にBGMをフェイドアウトさせるところ。
private void onCountDownStart(params object[] args)
{
iTween.ValueTo (gameObject, iTween.Hash (
"from", defaultVolume
,"to", 0
,"time", .5f
,"onupdate", "SetVolume"
,"easeType", iTween.EaseType.linear
));
}
private void SetVolume(float value)
{
audioSource.volume = value;
}
その他
VRの開発に慣れてきてからは、メインのゲーム開発はMacBookProで行い、当たり判定の調整など実際にHMD
を被らないと出来ない場合のみ、WIndowsマシンで開発した。
UnityはPackageのExport/Importが簡単なので複数のマシンで開発するのも問題ないと感じた。
自宅やちょっとした移動中など、持って歩けるノートPCで開発したくても今のVR開発環境はノートPCが対応し
てないため諦めているということもあると思う。しかし、コード上でちょっと工夫することでノートPCでもMac
環境でも開発は出来た。
Space Tennisの場合は、Hierarchyで[CameraRig]を非アクティブにして、[CameraRig]内のカメラと同じ設定を
施したMain Cameraをアクティブ化、Configクラスに設けたGameModeをコンソールモードを設定、HMDに依
存した処理はGameModeを見てエラーにならないようにした。
void Start ()
{
Config.gameMode = Config.GameMode.CONSOLE;
if (Config.gameMode == Config.GameMode.CONSOLE)
{
racket = GameObject.Instantiate (Racket, Vector3.zero, Quaternion.Euler(new Vector3(0,0,0.5f))) as GameObject;
}
game = this.GetComponent<ShootGameMain> () as ShootGameMain;
}
PackageをImport後、実行(Run)すると100%、例外エラーが発生する問題が発生。原因は設定されていたTag
がなぜか外れてしまっていることで、Tags & Layersを開き、適当なTagを追加することで治った。
VR Expo Akiba当日
 プレーヤーの向く方向の調整ができなかった→プログラムで変更できるようにし
ておこう!
 プレイ中に壁に振った手などを当てる人が出た→HMD起点にボールが投げられる
仕様が裏目。本番は固定位置を起点にボールを投げれば自然に元の位置に戻るは
ず。
 現場の思いつきで背面に投影するためのプロジェクターを接続したこと原因で
ゲームが何度もフリーズを繰り返す→現場の思いつきでシステムを変更すること
はやめよう。だいたい問題が起きる。
 運営にプレイ時間を短めに報告していたため、ファストパスに行列→正しいプレ
イ時間を運営には報告しよう!
などなどありましたが、開始の10時半から終了の17時まで列が切れず好評で終わり
ました。総勢50名ぐらいの方にプレイ頂けたと思います。
ご来場頂いた方には大変ありがとうございました。
まとめ
VRの検証には時間がかかる→しっかり計画を立ててから始める
3Dグラッフィクも必要以上に勉強しなくても開発は可能→Flashなど2D系の開発し
かやったことのが無いエンジニアでも開発可能
Unityの考え方を知ればC#のプログラムはそれほど難しくない
Asset Storeのコンポーネントはそのままでも利用できる→デモと割り切ればAsset
Storeで売られているコンポーネントをそのまま使うのも全然有り
プログラマーがひとりでもVRゲーム開発は可能
実際にコードを書きながらゲームを作る楽しさがある
VRはまだ未知の部分が多い分野、恐れずにはじめよう

Weitere ähnliche Inhalte

Was ist angesagt?

ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
Takahito Tejima
 
博士課程の誤解と真実 ー進学に向けて、両親を説得した資料をもとにー
博士課程の誤解と真実 ー進学に向けて、両親を説得した資料をもとにー博士課程の誤解と真実 ー進学に向けて、両親を説得した資料をもとにー
博士課程の誤解と真実 ー進学に向けて、両親を説得した資料をもとにー
Atsuto ONODA
 

Was ist angesagt? (20)

Immersal を活用した AR クラウドなシステム開発とハンズオン!
Immersal を活用した AR クラウドなシステム開発とハンズオン!Immersal を活用した AR クラウドなシステム開発とハンズオン!
Immersal を活用した AR クラウドなシステム開発とハンズオン!
 
自己紹介スライドショー201606
自己紹介スライドショー201606自己紹介スライドショー201606
自己紹介スライドショー201606
 
【Unity道場 建築スペシャル2】点群ビジュアライゼーション
【Unity道場 建築スペシャル2】点群ビジュアライゼーション【Unity道場 建築スペシャル2】点群ビジュアライゼーション
【Unity道場 建築スペシャル2】点群ビジュアライゼーション
 
はじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTrackingはじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTracking
 
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築するピクサー USD 入門 新たなコンテンツパイプラインを構築する
ピクサー USD 入門 新たなコンテンツパイプラインを構築する
 
今改めて見る Plane finding
今改めて見る Plane finding今改めて見る Plane finding
今改めて見る Plane finding
 
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
iPhoneでリアルタイムマルチプレイを実現!Photon Network EngineiPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
iPhoneでリアルタイムマルチプレイを実現!Photon Network Engine
 
Viveはじめました
ViveはじめましたViveはじめました
Viveはじめました
 
誰でも見やすいパワーポイントを作るための パワーポイントバイブル
誰でも見やすいパワーポイントを作るための パワーポイントバイブル誰でも見やすいパワーポイントを作るための パワーポイントバイブル
誰でも見やすいパワーポイントを作るための パワーポイントバイブル
 
UniRx の1歩目
UniRx の1歩目UniRx の1歩目
UniRx の1歩目
 
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
 
若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発若輩エンジニアから見たUniRxを利用したゲーム開発
若輩エンジニアから見たUniRxを利用したゲーム開発
 
博士課程の誤解と真実 ー進学に向けて、両親を説得した資料をもとにー
博士課程の誤解と真実 ー進学に向けて、両親を説得した資料をもとにー博士課程の誤解と真実 ー進学に向けて、両親を説得した資料をもとにー
博士課程の誤解と真実 ー進学に向けて、両親を説得した資料をもとにー
 
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
【Unity道場スペシャル 2017博多】クォータニオン完全マスター【Unity道場スペシャル 2017博多】クォータニオン完全マスター
【Unity道場スペシャル 2017博多】クォータニオン完全マスター
 
【Unity道場】使って覚えるTileMap
【Unity道場】使って覚えるTileMap【Unity道場】使って覚えるTileMap
【Unity道場】使って覚えるTileMap
 
「ユニティちゃんを踊らせよう!」モーションキャプチャーデータのアニメーション演出
「ユニティちゃんを踊らせよう!」モーションキャプチャーデータのアニメーション演出「ユニティちゃんを踊らせよう!」モーションキャプチャーデータのアニメーション演出
「ユニティちゃんを踊らせよう!」モーションキャプチャーデータのアニメーション演出
 
AI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
AI x WebAR: MediaPipeのハンドトラッキングを使ってみようAI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
AI x WebAR: MediaPipeのハンドトラッキングを使ってみよう
 
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るCinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作る
 
【Unite Tokyo 2018 Training Day】ProBuilderで学ぶレベルデザイン レベルデザインについて
【Unite Tokyo 2018 Training Day】ProBuilderで学ぶレベルデザイン レベルデザインについて【Unite Tokyo 2018 Training Day】ProBuilderで学ぶレベルデザイン レベルデザインについて
【Unite Tokyo 2018 Training Day】ProBuilderで学ぶレベルデザイン レベルデザインについて
 
Agile and Business
Agile and BusinessAgile and Business
Agile and Business
 

Ähnlich wie Unity初心者が初めてHTC ViveでVRゲームを作ってみた

Ähnlich wie Unity初心者が初めてHTC ViveでVRゲームを作ってみた (6)

xR Tech Tokyo 登壇資料 Mixed Realityではじまるコラボレーティブ・コンピューティング
xR Tech Tokyo 登壇資料 Mixed Realityではじまるコラボレーティブ・コンピューティングxR Tech Tokyo 登壇資料 Mixed Realityではじまるコラボレーティブ・コンピューティング
xR Tech Tokyo 登壇資料 Mixed Realityではじまるコラボレーティブ・コンピューティング
 
ポコロンダンジョンズを彩るアニメーションノウハウ
ポコロンダンジョンズを彩るアニメーションノウハウポコロンダンジョンズを彩るアニメーションノウハウ
ポコロンダンジョンズを彩るアニメーションノウハウ
 
Unityティーチャートレーニングデイ -認定アソシエイト編-
Unityティーチャートレーニングデイ -認定アソシエイト編-Unityティーチャートレーニングデイ -認定アソシエイト編-
Unityティーチャートレーニングデイ -認定アソシエイト編-
 
Vue.js + firebase 実案件で使ってみた
Vue.js + firebase 実案件で使ってみたVue.js + firebase 実案件で使ってみた
Vue.js + firebase 実案件で使ってみた
 
UnityとBlenderハンズオン第10章
UnityとBlenderハンズオン第10章UnityとBlenderハンズオン第10章
UnityとBlenderハンズオン第10章
 
Mixed Reality Toolkit V2.4.0の機能 ~ Progress Indicator ~
Mixed Reality Toolkit V2.4.0の機能 ~ Progress Indicator ~Mixed Reality Toolkit V2.4.0の機能 ~ Progress Indicator ~
Mixed Reality Toolkit V2.4.0の機能 ~ Progress Indicator ~
 

Unity初心者が初めてHTC ViveでVRゲームを作ってみた

Hinweis der Redaktion

  1. Viveの開発環境は「フレームセンシシス」などを参考にセットアップ フレームセンシス Unity+HTC Vive開発メモ https://framesynthesis.jp/tech/unity/htcvive/