3Dモデルの身体を借りてプレゼンがしたい。
そう思った私はKinectを使ってカメラからリアルタイムで3Dモデルを動かしつつ、スライドを動かせるプロジェクトを作りました。
必要なもの
ユニティちゃん等の3Dモデル
作り方
まずはKinectの動作確認から
上記のAssetsをインポートする。
terrainの上に3Dモデルを置き、Kinect v2のアセットからAvater Controllerというスクリプトをつける。
次にCreate Enptyから空のオブジェクトを作り、Kinect Managerスクリプトをつける。
ここで再生をし、3Dモデルが動けばKinectは正常に作動していることになる。
次にプレゼンテーションの部分を作る。
GameObject > UI > ImageからImageを作成する。
CanvasやImageを3Dモデルがよく見えるように配置する。
Canvasの移動はInspector > Canvas > RenderModeを変更することで移動できる。
ImageのInspector > AddComponent > C#Scriptでスクリプトを作成する。
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class presentation : MonoBehaviour {
public Sprite[] Slide;
Image SlideImage;
int i = 0;
public void NextSlide()
{
i = i + 1;
SlideImage.sprite = Slide[i];
}
public void BackSlide()
{
i = i - 1;
SlideImage.sprite = Slide[i];
}
void Start()
{
i = 0;
SlideImage = GetComponent<Image>();
SlideImage.sprite = Slide[i];
}
void Update ()
{
if (Input.GetMouseButtonDown(0))
{
NextSlide();
}
if (Input.GetMouseButtonDown(1))
{
BackSlide();
}
if (Input.GetKeyDown(KeyCode.RightArrow))
{
NextSlide();
}
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
BackSlide();
}
if (Input.GetKeyDown(KeyCode.Space))
{
NextSlide();
}
}
}
このスクリプトは配列を用いることでInspector上でスライドの枚数をSizeで指定し、表示されたSize分Elementにスライド画像を挿入することによってスライドの変更のたびにスクリプトを書き直さなくてもよいようにした。
マウスの左クリックか右矢印キーでスライドを進む、右クリックか左矢印キ-でスライドを戻るようにした。
ジェスチャーによってスライドを切り替えることはまだ実装していない。
スライドのシステムは作ったため、今度はスライド資料の準備をする。
画像ファイルを読み込むため、パワーポイントで資料を作っている場合はエクスポートでファイルの種類をjpgに変更して保存をする。
資料画像をAssetsにインポートしたら、各画像ファイルのInspector > Texture TypeをdefaultからSprite(2D and UI)に変更する。
ImageのInspectorの中の先ほど作ったスクリプト上でSizeの変更ができるため、スライドの枚数をSizeに入れ、Enterを押す。
その時にSizeの大きさ分だけElementが追加されるため、スライドの順番に各画像ファイルをドラッグ&ドロップする。
これで再生を押すとモーションキャプチャもしつつプレゼンテーションができるようになっているはずです。
有線のマウスを使うと上記Gifファイルのように変な格好になってしまうため、できるだけワイヤレスマウスを使いましょう。
まだ私は実際のプレゼンテーションで使ったわけではないため、スライドに上手く映るかはわからない。
実際に使おうと思うのなら、普通の資料も予備に用意してください。
良いPCライフを
3Dモデルはユニティちゃんを使いました。
© Unity Technologies Japan/UCL