UnityとKinectを使って3Dモデルプレゼンツールを作った話

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
Unityでボーリングを作った話
Unityで画面をクリックすればボールに前向きの力が加わるボーリングを作った。

ピンモデルの作成
まず、無料の3DCGツールである、Blenderを使い、ボーリングのピンを作ります。


モデルが完成したら、fbxファイルとしてエクスポートします。
ボーリングの作成
Unityのプロジェクトを作成し、ピンファイルをAssetsに入れます。
次にピンを配置します。
ピンのInspectorのAddComponentからBoxColliderとRigidbodyを導入します。
BoxColliderは大きさをピンに合わせ、RigidbodyはUse Gravityにチェックが入っていることを確認してください。
また、CreateからPhysicsMaterialを作成し、DynamicFrictionに反発係数を入力します。
ピンのBoxColliderのマテリアルにPhysicsMaterialを割り当てます。これによってピンが地面に当たったときに跳ねるようになります。
ピンをAssetsに持っていき、Prefab化し、Prefabからボーリングの形になるようにピンを配置します。
今度はCreateからterrainとSphereを作成し、ボーリングに合うようにサイズと位置の調整をします。
SphereのAddComponentからC#スクリプトを作成します。
スクリプトに中身がGetComponent<Rigidbody>().AddForce(dir);となる関数を作成します。これは特定の行動によって”ボールに力が加わる”ようになる関数です。
void Update()内に「もしマウスがクリックされたら"ボールに力が加わる関数"を入力する」というスクリプトを書きます。関数のカッコ内(引数)にはnew Vector3(x,y,z)を使い、x,y,zにそれぞれ加えたい力の数値を入れます。
このスクリプトがうまく書ければクリックするたびにボールに加わる力が増していくようになります。
今度はSphereの投げる位置を左右に移動させるスクリプトを書いていきます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class shootPosition : MonoBehaviour {
float speed = 0.3f;
void Update () {
float dz = Input.GetAxis("Horizontal"); float z = dz * speed; transform.Translate(0, 0, z);
}
}
左右の矢印キーを押すことで0.3fのスピードでボールを左右に移動させるスクリプトです。
スクリプトがうまくかけたら一端Sceneを保存しましょう。
最後にピンやボールの配置をもとに戻すボタンを作成します。
GameObjectのUIからButtonを配置し、位置の調整をします。
Buttonのテキストを変更し、ButtonにもC#スクリプトを作成します。
public void ButtonClicked()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
このスクリプトはボタンが押されたら現在のSceneをリロードするというコードです。
これによってボタンを押したときにピンとボールが初めの位置に戻るようになります。
あとは重さを調節すれば完成です。
これでUnityで簡単なボーリングゲームが作成できるはずです。
良いPCライフを
PCを組んだ話(後半)私の事例
ここでは私の組んだPCを紹介したいと思います。
私のPC
マザーボード ASUS TUF H370-PRO GAMING
メモリ CORSAIR DDR4-2666 8GBx2
電源ユニット 玄人志向 KRPW-AK750W/88+
ケース Sharkoon SHA-BW9000W-W ATX
Windows10 Home
マウスとキーボードはもともと持っているものを。
ディスプレイはノングレアの24インチのものを使っています。
選んだ基準
まず私はVRゲームがやりたかったため、VRの基準となるGPUのVR最低ラインがGTX1060だと調べました。VRはGPUの性能によって酔いが変わってくると聞き、2段階上位のGTX1070にしました。
次にCPUをAMDかintelかを迷い、初PC自作だったため、下手に冒険をせずにintel製にしました。CPUのスペックはi5でも使用に問題ないと判断したためi5にしました。
メモリは時期として高騰していたため、最低限の16GBにしました。
ケースは他のPCパーツを取り換えても交換しないであろうため、白く見た目が好みのものにしました。
マザーボードは拡張性の高く、安心できるものにしました。
最後にWebサイトからPCパーツの使用ワット数を算出し、約二倍の高効率のものを選びました。
パーツごとの値段は時期によって変動もありますが、ディスプレイなど他のパーツも併せて20万ほどになりました。
PCは良いものにすればいくらでも高価になっていくので自分に合ったものを買うことが大切です。
良きPCライフを
PCを組んだ話(前半) PCパーツの説明
私は去年、PCを自作しました。
私が当時、持ち運びして使うSurfaceと、ノートではないがディスプレイとコンピュータが一体となっている、一体型PCを持っていたのですが、どちらもグラフィックボードを搭載できないため、自作に踏み切りました。
PCを購入する前に、そのPCで何をしたいかを考えることは必要なスペックを最低限のコストで手に入れるために必要です。
PCのスペックを不必要に高くしても、時間とともに安く高性能になっていくため、無駄なコストが発生してしまいます。
私の場合は当時Blenderという3DCGソフトを使っており、Blenderで作った3DモデルをUnity等で動かしたいと考えていました。またUnityはVRに対して親和性が高いとの話を聞いたためVRに対応したPCを作ることに決めました。
PCを作るために最低限必要なもの
①CPU
これはPCのいわゆる脳みそにあたる部分で高いものを買うほどにPCのスピードが速くなります。
ノートパソコン等持っている人はIntel Coreと書かれたシールが貼ってあることがあるが、その書かれている文字がCPUの型番です。
CPUを決めたら、その形に合うような基板を選ぶ必要があります。
マザーボードはPCの内部にある基板のことで、ケースとCPUの形(ソケット)にあったものを選びます。
また、他の付けたいパーツをつけられるものを選びましょう。
③メモリ
メモリはPCの処理の速さを決めるものであり、基本的に数字が大きければ大きいほど速いです。
メモリにはいくつかのバージョンがあり、マザーボードに合ったメモリを使う。現在ではDDR4というメモリが主流です。
また基本的にメモリは2枚以上同時に使うことで本来の性能を発揮できる。型番が同じメモリを挿します。
メモリはGB等のByteで表すが一般的なものはPCの容量とは関係がありません。
補足として、AMD社のCPUとメモリには相性があるらしく、相性の悪いメモリでは反応しないとのことです。
④電源ユニット
電源はPCをコンセントにつなぐものです。
電源は2か所見るところがあります。それはワット数と認証です。
ワット数は作成するPCのパーツをWeb上のツールに入力することで算出できます。購入する電源ユニットは算出したワット数の2倍が最も効率よく、後の増設にも対応しているため良いとされています。
認証は電源の変換効率を示すものです。ブロンズ、シルバー、ゴールド、プラチナがあり、保証される変換効率が80%、85%、90%、95%となっている。変換効率は電気代等に影響します。
補足として、不当に安い電源ユニットは動物電源と言われ、電源が壊れることで他の部品もすべて壊れるものの恐れがあるため買わない方が無難だと思われます。
⑤ケース
ケースはPCの中身を入れる箱です。
大きさは大きいものからATX、mATX、Mini-ITXがあり、大きい方が多くの部品が入ります。
かっこいいものほど高いがPCケースは交換することはほぼないため見た目が重要視されます。
⑥WindowsOS
初めに、Windowsは有料です。
既製品のPCでは元からWindowsが入っているが、自作する場合はWindowsを購入しなくてはなりません。
Windows10の場合、個人で購入できるものはHome版とPro版があり、Pro版は少し高いですがリモート操作等の機能が追加されています。
⑦GPU
GPUはグラフィックボードと呼ばれ、3Dなど同時に演算する必要のあるものを滑らかに映す機器です。
GPUの基盤となる部品はNVidia社とAMD社が主に作っています。一般に聞くGTXシリーズがNVidia社で、RadeonシリーズがAMD社です。
グラフィック機能は基本的にCPUには内蔵されているため必須の部品ではなく、値段もものによっては非常に高いです。
奥行きのあるゲーム用途でPCを使用する場合、公式サイト等に載っている必要PCスペック等を参考にしましょう。VRをする場合VRReadyと呼ばれるGTX1060以上のGPUが必要ですが、VRをしない場合は基本そこまでのGPUは必要ないと思われます。
補足として、AMD社のCPUを使う場合は基本的に内蔵GPUが搭載されていないため、GPUが必須の部品です。
CDやDVD、BDを入れるパーツです。外付けのものを持っている場合、それで代用できます。
BDが入れられるものとそうではないものでは多少の値段の差があります。
WindowsOSはUSBの形状ですが、それぞれのパーツに同梱されているドライバをインストールするために必要です。
ドライバをインストールしないか、公式サイトから直接インストールする場合は必須ではないです。
⑨SSDもしくはHDD
これらはPCのデータを保存する機器である。ドライブとも呼ばれます。
SSDは高いが長持ちし、データを取り出す速度が早く、HDDは安いため、容量の多いデータの保存に向いています。
Windows10を入れるドライブはSSDが推奨されます。
安くすませる場合はOSだけを容量の小さなSSDに入れて、HDDを別に用意し、そこに他のデータを保存すると良いです。
⑩ディスプレイ
PCの画面を映すための機器です。
ディスプレイには主にグレアとノングレアがあります。
グレアは非常にきれいに映るがその分反射もあるため、自分の顔が反射して見える恐れがあります。
ノングレアは反射しないため、目に優しいディスプレイです。
またFPS(First Person Shooter)等のゲームをする場合はfps(frame per second)の高いディスプレイにするとディスプレイに映る速度が上がりますが、ゲームをしない場合はそのような速い応答は求められないでしょう。
ディスプレイを複数使いたい場合は縁の細いものを選ぶと良いです。
⑪マウス
マウスはポインタを移動させるための機器です。
マウスには通常の本体を動かすマウスの他に、トラックボールマウスと呼ばれるマウスがあります。これはマウスに取り付けられているボールを回転されることでマウスポインタを動かします。トラックボールマウスは場所を選ばずに使うことができます。
また、エルゴノミクスマウスと呼ばれるマウスは長時間使用でも手首が疲れづらい構造になっているため腱鞘炎の予防などにも使われます。
マウスは自分にとって使いやすいものを選ぶと良いです。
⑫キーボード
キーボードは文字などを入力するための機器です。
キーボードはメンブレン式、無接点式、メカニカル式など、押したときの感知の仕方で方式が変わってきます。
メンブレン式には樹脂が間に挟まっており、静かな打ち心地です。
無接点式はキーを押した瞬間に反応する機構となっているキーボードです。値段は高めに設定されています。
メカニカル式はキースイッチの種類によって押し心地が変わるキーボードです。カスタマイズ性が高く、手入れも楽なキーボードです。
キーボードは店で触り心地を試して、自分に一番合ったものを探すと良いと思います。
ここまでで最低限必要なPCパーツとなっています。
買うときは事前によく下調べをし、自分の財布と相談しつつ決めてください。
後半はPCを組んだ私の事例を紹介していきたい思います。