狠狠撸

狠狠撸Share a Scribd company logo
話題のゲームエンジンUnityで
はじめるARコンテンツ開発
2019/06/08
自己紹介
氏名:吉永崇(Takashi Yoshinaga)
所属:九州先端科学技術研究所(ISIT)
専門:AR/VRの活用とモーションキャプチャ
コミュニティ:ARコンテンツ作成勉強会 主催
ARコンテンツ作成勉強会の紹介
? 2013年5月に勉強会をスタート
? ARコンテンツの作り方をハンズオン形式で学ぶ
? 人数は5~10名程度の少人数で実施
? 参加条件はAR/VRに興味がある人(知識不要)
? 各地で開催 (福岡、熊本、宮崎、長崎、大分、鹿児島、山口、広島、関東)
Twitterと勉強会ページで情報を発信しています
#AR_Fukuoka Googleで「AR勉強会」で検索
#ももち浜TECHカフェ
または
#AR_Oita
今日のハッシュタグ
ここから本题
ARとは(1/2)
“Augmented Reality”の略で、日本語で「拡張現実感」
とも呼ばれる。デジタルな情報(CG,音,etc..)を現実空間に
付加する技術全般を指す。特に視覚情報の付加が主流。
ARとは(2/2)
そこに存在しない物を、あたかも存在するかのように見せる技術
CG
AR技術の普及
[最近の動向]
? スマートフォンの普及?高性能化によりARが体験可能に
? 販売促進やゲームでのコンテンツが増えて身近な技術に
? Microsoft, Google, Appleも力を入れ普及が加速
GPSベースのARマーカーベースのAR
各種ツールの登場により体験だけでなく開発も身近に
開発ツール:Unity
Unityとは
? マルチプラットフォーム対応のゲームエンジンおよび開発環境
? GUI上で視覚的にCGを配置したり機能を追加したりできる
? C#によるプログラミングで細かい挙動も記述可能
? アセットストアで高品質なCGやアニメーションを入手できる
ARライブラリ:Vuforia
Vuforiaとは
? ARコンテンツ作成ライブラリ(Android, iOS, HoloLens, etc…)
? JavaやC++を用いたネイティブアプリの開発が可能
? Unity用のライブラリもありノンプログラミングでの開発も可能
? 開発方法に関するブログも比較的多い
? Unity2017からUnityの機能の一部として取り込まれた
まずは鲍苍颈迟测の基本操作
今回のバージョンはUnity 2018.4.1f1
https://unity3d.com/jp/unity/qa/lts-
releases?version=2018.4
マーカー画像
http://yoshinaga.sub.jp/oita_ar/ilovear.jpg
Unityのプロジェクトを作成 (1/2)
Unityを起動後、画面右上のNEWをクリック
New
Unityのプロジェクトを作成 (2/2)
プロジェクト名?保存場所?3Dを指定してCreate project
プロジェクト名
保存場所
3D
最後にCreate Project
Unityの操作画面(概要)
ゲーム空間の設計画面
ゲーム空間にCGを追加しよう
右クリック
ゲーム空間にCGを追加しよう
①3D Object
②Cube
実行してみよう
クリックして実行
クリックして終了
カメラから見た空間
オブジェクトの位置?向き?サイズを調整
移動 回転 拡大?縮小
クリックして選択
Scene(設計画面)の視点を変えよう
[←] [→]で左右移動
[↑][↓]でズームイン/アウト
[Alt]+ドラッグで回転
+ドラッグで上下左右
CGの詳細情報の編集:位置の指定
? オブジェクトの詳細の表示?追加?変更は
Inspectorタブ内で行う
? 例えば、TransformのPositionを変更す
ると位置が変わる
Positionを0 0 0に変更
色の変更:マテリアルの作成 (1/3)
マテリアル(色や質感の設定)を作成
①Assets
②右クリック
色の変更:マテリアルの作成 (2/3)
マテリアル(色や質感の設定)を作成
①Create
②Material
色の変更:マテリアルの作成 (3/3)
New Materialができているはず
マテリアル(色や質感の設定)を作成
色の変更:マテリアルの適用 (1/2)
オブジェクト(Cube)のマテリアルを開く
② Materials横の▼
① Cube
色の変更:マテリアルの適用 (2/2)
オブジェクト(Cube)のマテリアルを開く
MaterialsのElement0
にドラッグ&ドロップ
色の変更:マテリアルの設定 (1/3)
Cube
色の変更:マテリアルの設定 (2/3)
New Material横の▼
Albedo横の□
色の変更:マテリアルの設定 (3/3)
色がつく
スクリプトの追加
①Cube
①Add Component
スクリプトの追加
①New Script
②スクリプト名を付ける
(本資料ではTestScript)
③Create and Add
スクリプトの追加
TestScriptが追加されている
スクリプトの編集
ダブルクリック
スクリプトを使って立方体を回転
public class TestScript : MonoBehaviour {
// 初期化のために初回に一回だけ実行される
void Start () {
}
// 毎フレーム(数10ミリ秒おきに)実行される
void Update () {
}
}
スクリプトを使って立方体を回転
public class TestScript : MonoBehaviour {
// 初期化のために初回に一回だけ実行される
void Start () {
}
// 毎フレーム(数10ミリ秒おきに)実行される
void Update () {
//毎フレームY軸を中心に0.5度ずつ回転
transform.Rotate(0, 0.5f, 0, Space.Self);
}
}
动作确认
Ctrl + Sでコードを保存
続いて、Playボタンをクリックして動作を確認
Play
动作确认
Cubeが回転してればOK
次に行く前に
Playボタンを再度クリックして動作を停止
再度Playで停止
スクリプトを使って立方体を回転
public class TestScript : MonoBehaviour {
// 初期化のために初回に一回だけ実行される
void Start () {
}
// 毎フレーム(数10ミリ秒おきに)実行される
void Update () {
if (Input.GetMouseButton (0)) {
//毎フレームY軸を中心に0.5度ずつ回転
transform.Rotate(0, 0.5f, 0, Space.Self);
}
}
}
动作确认
マウスのボタン押下時だけ回転してればOK
次に行く前に
Playボタンを再度クリックして動作を停止
再度Playで停止
不要なCGの削除
Cubeを削除
Unityを使ったコンテンツ作成のイメージ
Scene画面で配置
Game画面で表示
カメラ CG光源
[詳細情報(Inspectorタブ参照)]
?位置/角度/スケール
?質感(色, テカリ, 透明感など)
?独自の挙動
Unityはゲーム開発環境であってAR専用ツールではない
カメラ CG光源
Unityを用いたARコンテンツの作成
Scene画面で配置
Game画面で表示
UnityにAR開発ライブラリ(Vuforia,ARToolKitなど)を追加
[詳細情報(Inspectorタブ)]
?位置/角度/スケール
?質感(色, テカリ, 透明感など)
?独自の挙動
ビデオ映像 ターゲット CG
? ターゲットの認識(画像処理)
? カメラの位置?姿勢計算
UnityとVuforiaの関係
ビデオ映像 ターゲット CG
? ターゲットの認識(画像処理)
? カメラの位置?姿勢計算
Scene画面で配置
Game画面で表示
Unity標準サポートのARライブラリの を使用
今日の演習内容
https://youtu.be/oDJo4h1Uwbk
ARコンテンツ作成の基本手順
① Unity上でVuforiaを利用できるようにする
② AR用カメラの設定と画像の表示
③ ターゲット(マーカー)データの作成
④ ターゲットのインポート & Sceneに配置
⑤ CGとターゲットを関連付けてAR表示
ビデオ映像 ターゲット CG
開発の前に???
VuforiaでのARコンテンツ作成には
ライセンスキーを事前に作る必要がある
→ https://developer.vuforia.com/
①Develop②License Manager
③Get Development Key
ライセンスキーの作成 (1/3)
← アプリ名を入力(半角英数)
チェックをオン
Confirm
ライセンスキーの作成 (3/3)
ライセンスキーが発行されたことを確認
※ライセンスキーは
原則、アプリ毎に
作成する
先ほど作ったライセンスをクリック
これがライセンスキー
① Unity上でVuforiaを利用できるようにする
② AR用カメラの設定と画像の表示
③ ターゲット(マーカー)データの作成
④ ターゲットのインポート & Sceneに配置
⑤ CGとターゲットを関連付けてAR表示
ARコンテンツ作成の基本手順
ビデオ映像 ターゲット CG
① Unity上でVuforiaを利用できるようにする
Unity上でのVuforia利用設定 (1/4)
①File
②BuildSetting
Unity上でのVuforia利用設定 (2/4)
Player Settings
Unity上でのVuforia利用設定 (3/4)
Vuforia Augmented Reality Support
Unity上でのVuforia利用設定 (4/4)
Accept
闭じて翱碍
① Unity上でVuforiaを利用できるようにする
② AR用カメラの設定と画像の表示
③ ターゲット(マーカー)データの作成
④ ターゲットのインポート & Sceneに配置
⑤ CGとターゲットを関連付けてAR表示
ARコンテンツ作成の基本手順
② AR用カメラの設定と画像の表示
ビデオ映像 ターゲット CG
webカメラの画像を取得?表示 (1/5)
Main Cameraを削除
webカメラの画像を取得?表示 (2/5)
①右クリック
②Vuforia Engine
③ARCamera
Import
webカメラの画像を取得?表示 (3/5)
①ARCamera
②Open Vuforia Engine Configuration
webカメラの画像を取得?表示 (4/5)
App License Keyに
Vuforiaのサイトで発行した
ライセンスキーを貼り付け
webカメラの画像を取得?表示 (5/5)
ここにカメラの画像が表示される
実行/停止
※次の作業に行く前に必ず停止すること(再生ボタンが黒くなっていればOK)
① Unity上でVuforiaを利用できるようにする
② AR用カメラの設定と画像の表示
③ ターゲット(マーカー)データの作成
④ ターゲットのインポート & Sceneに配置
⑤ CGとターゲットを関連付けてAR表示
ARコンテンツ作成の基本手順
③ ターゲット(マーカー)データの作成
ビデオ映像 ターゲット CG
ターゲットのデータって?
人間にとっては認識しやすいが
コンピュータにとっては認識が難しい
コンピュータで認識しやすい目印
のデータを作成してあげる
ターゲットを作成 (1/5)
VuforiaのDeveloper Portalサイトにアクセス&ログイン
①Develop
②Target Manager
③Add Database
ターゲットを作成 (2/5)
ターゲット画像をVuforiaのサイトに保存するためのフォルダ作成
①データベース名この資料ではTest
②Device
③Create
ターゲットを作成 (3/5)
Target Managerから使用するデータベース開く
データベースTestを開く
ターゲットを作成 (4/5)
? [Add Target]をクリック
? Single Imageを選択
? ターゲットとして
使用したい画像を選択
(ilovear.jpg)
? Widthで画像の幅(m)を入力
? [Add]をクリック
0.160.1
ターゲットを作成 (5/5)
[Download Dataset]
→ [Unity Editor]
→ [Download]
分かり易い場所に保存
① Unity上でVuforiaを利用できるようにする
② AR用カメラの設定と画像の表示
③ ターゲット(マーカー)データの作成
④ ターゲットのインポート & Sceneに配置
⑤ CGとターゲットを関連付けてAR表示
ARコンテンツ作成の基本手順
④ ターゲットのインポート & Sceneに配置
ビデオ映像 ターゲット CG
ターゲットをプロジェクトに追加 (1/2)
①Assets
②Import Package
③Custom Package
ターゲットをプロジェクトに追加 (2/2)
Import
ターゲットの利用 (1/2)
①右クリック
②Vuforia Engine
③Image
ターゲットの利用 (2/2)
①ImageTarget
をダブルクリック
②DataBase
でTestをクリック
① Unity上でVuforiaを利用できるようにする
② AR用カメラの設定と画像の表示
③ ターゲット(マーカー)データの作成
④ ターゲットのインポート & Sceneに配置
⑤ CGとターゲットを関連付けてAR表示
ARコンテンツ作成の基本手順
⑤ CGとターゲットを関連付けてAR表示
ビデオ映像 ターゲット CG
Asset StoreでCGを入手
①Window
②Asset Store
Asset StoreでCGを入手
①Kyleで検索
②Kyleを選択
Asset StoreでCGを入手
ダウンロード、その後インポート
Asset StoreでCGを入手
Import
ターゲットとCGの関連付け (1/2)
RobotKyleが追加される
ターゲットとCGの関連付け (2/2)
①RobotKyle→Model
ターゲットとCGの関連付け (2/2)
①RobotKyle
②ImageTargetにドラッグ&ドロップ
確認
NGGOOD
ImageTargetの子として登録
ドラッグ&ドロップ
使用するターゲットの子要素
としてCGを追加すること
动作确认
実験:ターゲットを隠してみよう
ターゲットを認識できなくなるとCGが表示できない
下から見上げたり
Extended Trackingを使用
①ARCamera
②Open Vuforia Engine Configuration
Extended Trackingを使用
①Track Device Poseをオン
②Tracking modeをPOSITIONAL
动作确认
ターゲットを見失ってもある程度は表示を継続
ARと自作スクリプト
Robot Kyle
ARと自作スクリプト
②TestScript
①Assets
动作确认
Kyleが表示されているときにマウスの
左ボタン押下でKyleが回転していればOK
マウスで颁骋の位置を取得する
右クリック時にマウスの位置を取得
void Start () {
}
void Update () {
if (Input.GetMouseButton (0)) {
transform.Rotate(0, 0.5f, 0, Space.Self);
}
else if (Input.GetMouseButton (1)) {
//Input.mousePositionでマウスのスクリーン座標を取得
//print関数で二次元座標(x, y)を出力
print (Input.mousePosition.x + "," + Input.mousePosition.y);
}
}
动作确认
右クリックしながら
カーソルを移動
Consoleタブに
座標が出力される
今やったこと
スクリーン上のカーソルの座標(x,y)を取得
y
x
Imput.mousePosition
で取得した座標(x,y)
これからやること
Imput.mousePosition
で取得した座標(x,y)
ここにCGを移動
スクリーン上の座標をマーカー平面上の座標に変換
y
x
スクリーン座標 → マーカ平面座標の手順の基本
? カメラからスクリーン上のカーソルまでのベクトルvrayを取得
? vrayがマーカー平面に到達する倍率を算出してvrayにかける
? ???
a? ???
? ??? 1倍
2倍
a倍
2次元座標を3次元座標に変換 :コーディング
else if (Input.GetMouseButton (1)) {
print (Input.mousePosition.x + "," + Input.mousePosition.y);
//カメラ中心からスクリーンへの視線方向のベクトルを取得
Ray ray =
Camera.main.ScreenPointToRay(Input.mousePosition);
//rayを用いて倍率を計算 (内積を使用)
float a =
ray.origin.y / Vector3.Dot(new Vector3(0, -1, 0), ray.direction);
//倍率を視線方向のベクトルに掛ける
Vector3 pos = ray.origin + ray.direction * a;
//算出された座標をCGの位置に反映
transform.position=pos;
}
原点の設定
①ARCamera
②Vuforia Behavior
を見つける
③World Center Modeを
FIRST_TARGETに変更
完成
鲍苍颈迟测と痴耻蹿辞谤颈补で始める础搁开発
鲍苍颈迟测と痴耻蹿辞谤颈补で始める础搁开発

More Related Content

鲍苍颈迟测と痴耻蹿辞谤颈补で始める础搁开発