MRが楽しい

MRやVRについて学習したことを書き残す

Unity-Chan の新モデルを試してみた

本日はアセットのお試し枠です。
今日まで気付いていませんでしたが、Unity-Chan ページで 2018/1/31 から4体の新モデルが公開されていました。
unity-chan.com
f:id:bluebirdofoz:20180223001045j:plain

早速、unitypackage をダウンロードして Unity にインポートします。
4体のモデルパッケージを全て取り込むと、以下の状態になりました。Model ディレクトリ以外は共通のようです。
f:id:bluebirdofoz:20180223001124j:plain

Model/(キャラディレクトリ)/Prefabs 配下の prefab ファイルを hierarchy にドラッグしてキャラを配置します。
f:id:bluebirdofoz:20180223001153j:plain

4体を配置してみると、こんな感じ。
f:id:bluebirdofoz:20180223001202j:plain

これらのパッケージにはアニメーションやボイスは入っていません。
必要ならば以下のユニティちゃん3Dモデルデータパッケージをインストールする必要があります。
・ユニティちゃん 3Dモデルデータ
 http://unity-chan.com/download/releaseNote.php?id=UnityChan

4体のモデルには Humanoid リグが設定されているため、ユニティちゃんパッケージのアニメーションが共通利用できます。
f:id:bluebirdofoz:20180223001722j:plain

SD頭身ではない、ユニティちゃん以外のキャラが配布されたのは初めてでしょうか。
利用できるモデルの種類が増えることで、今後作成される Unity アプリの幅も広がりそうです。
f:id:bluebirdofoz:20180223001732j:plain
ただ既存の Unity-Chan とはシェーダや頭身が少し異なる感じです。

Unityで基本オブジェクトをフワッと表示させる

本日は Unity の技術調査枠です。
キューブなどの基本オブジェクトを自然にスポーンさせたいことがありました。
実はおいかけっこアプリで似たようなことをしており、記事に記録を残していなかったので書き出します。

まず、基本オブジェクトのスポーン方法です。
GameObject の CreatePrimitive 関数と PrimitiveType を指定する事で任意の基本オブジェクトを生成できます。

// キューブオブジェクトをスポーンする
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);

基本オブジェクトは以下の6種類です。
・Sphere  スフィア
Capsule  カプセル
・Cylinder シリンダー
・Cube   キューブ
・Plane   プレーン
・Quad   クアッド
docs.unity3d.com

以下のスクリプトを作成し、この時点でプロジェクトで実行してみます。
・SpawnTest.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SpawnTest : MonoBehaviour {
    // Use this for initialization
    void Start () {
        // キューブをスポーンする
        GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
        // 位置調整を行う
        cube.transform.position = new Vector3(0, 0, 3);
    }
}

実行すると、キューブが現れました。成功です。
f:id:bluebirdofoz:20180222085213j:plain

しかし、このままだとキューブが何もない空間に突然表示されるので不自然です。
サイズ 0 からサイズ 1 まで徐々に拡大し、フワッと表示されるようカスタマイズします。

以前、学習したコルーチン機能を利用します。
bluebirdofoz.hatenablog.com

スクリプトを以下の通り、書き換えます。
・SpawnTest.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SpawnTest : MonoBehaviour {

	// Use this for initialization
	void Start ()
    {
        // キューブをスポーンする
        GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
        // 位置調整を行う
        cube.transform.position = new Vector3(0, 0, 3);

        // フワッと表示をコルーチン機能で実行する
        StartCoroutine(ShowHuwaEffect(cube));
    }

    /// <summary>
    /// フワッと表示
    /// </summary>
    IEnumerator ShowHuwaEffect(GameObject target)
    {
        // 繰り返し回数
        int loopcount = 10;

        // 更新間隔
        float waitsecond = 0.05f;

        // スケール設定
        // オフセット値
        float offsetScale = 1.0f / loopcount;
        // 更新値
        float updateScale = 0;

        // オブジェクトの有効化(初期位置)
        target.transform.localScale = new Vector3(0.0f, 0.0f, 0.0f);

        for (int loop = 0; loop < loopcount; loop++)
        {
            // スケール更新
            updateScale = updateScale + offsetScale;
            target.transform.localScale = new Vector3(updateScale, updateScale, updateScale);
            yield return new WaitForSeconds(waitsecond);
        }
        // 最終スケール
        target.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f);
    }
}

以下のようにキューブがフワッと表示されるようになりました。
f:id:bluebirdofoz:20180222085250g:plain

公式チュートリアル「HOLOGRAMS 240 7章」を試してみる

本日はチュートリアルお試し枠です。
公式チュートリアル「HOLOGRAMS 240」の続きを実施します。
以下ページからプロジェクトを取得しています。
・Holograms 240
 https://developer.microsoft.com/en-us/windows/mixed-reality/holograms_240

7章 Chapter 7 - Grand Finale を実施します。ページの説明に沿って進めます。

この章では、コラボレーションでしか発見できないポータルについて解説します。

目標

・秘密のポータルを発見するために、一緒に協力してアンカーで十分な発射体を発射する。

インストラクション

・Project パネルで、Holograms フォルダに移動します。
Underworld.prefab を HologramCollection オブジェクトの子としてドラッグアンドドロップします。
f:id:bluebirdofoz:20180221211320j:plain

・Hierarchyで、HologramCollectionオブジェクトを選択します。
・Inspector から、Add Component ボタンをクリックします。
・検索欄に ExplodeTarget を入力します。検索結果を選択して追加します。
f:id:bluebirdofoz:20180221211338j:plain

・HologramCollection を選択し、Hierarchy から Inspector の Target フィールドに EnergyHub オブジェクトをドラッグします。
・HologramCollection を選択し、Hierarchy から Underworld を Inspector の Underworld フィールドにドラッグします。
f:id:bluebirdofoz:20180221211348j:plain


展開して楽しむ
・アプリケーションをビルドして HoloLens にインストールします。
・アプリケーションが起動したら、一緒に協力して EnergyHub に弾を発射する。
f:id:bluebirdofoz:20180221211400j:plain
アンダーワールドが現れたら、アンダーワールドロボットに弾を発射する。
f:id:bluebirdofoz:20180221211424j:plain

公式チュートリアル「HOLOGRAMS 240 6章」を試してみる

本日はチュートリアルお試し枠です。
公式チュートリアル「HOLOGRAMS 240」の続きを実施します。
以下ページからプロジェクトを取得しています。
・Holograms 240
 https://developer.microsoft.com/en-us/windows/mixed-reality/holograms_240

6章 Chapter 6 - Real-World Physics を実施します。ページの説明に沿って進めます。

この章では、壁からはじき出すホログラムを追加します。
皆が立ち上げたプロジェクトでスペースをいっぱいにします。

目標

・実世界の表面から飛び出す発射体を発射する。
・他のプレイヤーが見ることができるように発射物を共有する。

インストラクション

・Hierarchyで、HologramCollectionオブジェクトを選択します。
・Inspector から、Add Component ボタンをクリックします。
・検索欄に Projectile Launcher を入力します。検索結果を選択して追加します。
f:id:bluebirdofoz:20180220232437j:plain

展開して楽しむ
・アプリケーションをビルドして HoloLens にインストールします。
・アプリケーションがすべてのデバイスで実行されているときは、エアタップを実行して、実世界の表面で発射体を発射します。
・発射体が他のプレイヤーのアバターと衝突したときにどうなるか見てみます。
f:id:bluebirdofoz:20180220232451j:plain

Blender標準テクニック[ローポリキャラクター制作で学ぶ3DCG]を試す その52(二つのウェイト値の設定)

本日は書籍「Blender標準テクニック[ローポリキャラクター制作で学ぶ3DCG]」の実施枠です。

今回はウェイトペイントの続きです。
f:id:bluebirdofoz:20180219000540j:plain
バトル衣装部分のウェイトペイントを行っていきます。

首、上半身から腕、足など基本的なウェイトペイントはドレス衣装と同様です。
f:id:bluebirdofoz:20180219000556j:plain

バトル衣装では腰部分の布が足を前に動かしたとき、パーツを貫通してしまうという問題が発生しました。
f:id:bluebirdofoz:20180219000616j:plain

布部分には足ではなく、下半身のウェイト値を設定しています。
f:id:bluebirdofoz:20180219000737j:plain
下半身ボーンを動かした場合にも、この部分は追従してほしいためです。

こういった場合は一つの頂点に二つの頂点グループのウェイト値を設定することで解決します。
貫通する布部分に、下半身のウェイト値に加えて、足のウェイト値を追加設定しました。
f:id:bluebirdofoz:20180219000749j:plain

すると布部分が足が動いた際にも変形し、貫通しなくなりました。
f:id:bluebirdofoz:20180219000800j:plain

リボンなどのヒラヒラしたパーツはこのように他ボーンのメッシュに干渉することが多いので、二つ以上のウェイト値の設定を活用する必要があります。

公式チュートリアル「HOLOGRAMS 240 5章」を試してみる

本日はチュートリアルお試し枠です。
公式チュートリアル「HOLOGRAMS 240」の続きを実施します。
以下ページからプロジェクトを取得しています。
・Holograms 240
 https://developer.microsoft.com/en-us/windows/mixed-reality/holograms_240

5章 Chapter 5 - Placement を実施します。ページの説明に沿って進めます。

この章では、アンカーを実際のサーフェス上に配置できるようにします。
共有座標を使用して、共有エクスペリエンスに接続しているすべての人の中間点にそのアンカーを配置します。

目標

・プレーヤーの頭の位置に基づいて空間マップにホログラムを配置する。

インストラクション

・Project パネルで、Holograms フォルダに移動します。
・CustomSpatialMapping.prefab を Hierarchy にドラッグアンドドロップします。
f:id:bluebirdofoz:20180218230014j:plain

・Project パネルで、Script フォルダに移動します。
・AppStateManager スクリプトをダブルクリックして Visual Studio でファイル開きます。
・内容を Holograms 240 ページで公開されている AppStateManager.cs のコードに書き換えます。


・Project パネルで、Script フォルダに移動します。
・HologramPlacement スクリプトをダブルクリックして Visual Studio でファイル開きます。
・内容を Holograms 240 ページで公開されている HologramPlacement.cs のコードに書き換えます。


展開して楽しむ
・アプリケーションをビルドして HoloLens にインストールします。
・アプリケーショのが準備完了したら、サークル内に立って、EnergyHub が全ての人の中心に表示されるかを確認します。
・タップして EnergyHub を配置します。
・音声コマンド「Reset Target」を試して、EnergyHub のバックアップを取り、グループとして一緒に作業して、ホログラムを新しい場所に移動します。
f:id:bluebirdofoz:20180218230031j:plain

DevicePortalのアカウント名とパスワードをリセットする

本日は HoloLens の技術調査枠です。
HoloLens のアカウント名とパスワードをリセットする方法について知る機会がありました。

方法としては簡単です。
アカウント名、パスワードの入力を5回連続で失敗するだけです。

自身の HoloLens で試してみます。
f:id:bluebirdofoz:20180217073246j:plain

アカウント名、パスワードの入力を連続して失敗すると……。
f:id:bluebirdofoz:20180217073259j:plain
セットアップ画面が開きました。

アカウント名とパスワードを再設定して、DevicePortal にアクセスできます。
f:id:bluebirdofoz:20180217073311j:plain