snowのフェイスフィルターのスパイダーマンバージョンを作りたいpart2
皆さんこんにちは🌞こんばんは🌇
Misagonです‼️
フェイスフィルタースパイダーマンバージョンを考えてから随分と日が開いてしまいましたが、忘れていたわけではありません😑
試行錯誤の結果、スパイダーマンのフェイスフィルターを作ることに成功しました‼️
まずは見てましょう‼️ジャカジャン🎊
なかなかのクオリティですね‼️
合成してるわけじゃないですからね💦
それでは早速手順を記載していきます。
①ARKit2.0 for Unityをダウンロード
ダウンロード後、解凍してUnityにドラッグアンドドロップしてください。
※iosのバージョン確認もしてね
②Spidermanの3Dモデルを入手 (Sketcfhabに登録必要※無料です)
③Spidermanの3Dモデルを編集して頭だけにする
ダウンロードしたものはモデルがカクカクしているのでBlenderで重複頂点を削除したり、表面を滑らかにしたりと編集します。(Blenderのサイトなどで調べてね)
④Unityに編集したSpidermanのモデルをインポート
⑤各種設定
ARKit2.0とSpidermanのモデルをインポートしたらあと少しです。
まず、UnityARKitPlugin>Examples>FaceTrackingの階層を開いてその中にある
FaceAnchorSceneを開きます。
するとヒエラルキービューに
CameraParent
ARFaceAnchorManager
ARCameraTracker
AxesPrefab
Directional light
が表示されます。(上画像参照)
AxesPrefabは削除か非表示にして構いません。
ARFaceAnchorManagerを選択すると、右側のインスペクタービューに
このように表示されます。このAnchor Prefabと書いているところに
インポートしたSpidermanのモデルを指定します。(以下参照)
これで顔を認識した時に表示されるオブジェクトの準備ができました。
次にFaceTrackingの使用を許可する必要があるので
UnityARKitPlugin>Resources>UnityARKitPlugin>ARKitSettingを選択し
AR Kit Uses Facetracking
App Requires AR Kit
の有効にチェックを入れます。
これでシーンを保存してビルドします。(プラットフォームをiosに切り替えてね)
⑥シャッターボタンの追加
スクリーンショットをカメラロールに保存するための設定をします。
Assetフォルダの下にPluginフォルダを作成しその中にiOSフォルダを作成します。
iOSフォルダの中にScreenShot.mmというファイルを作成します。(Xcodeで.mmファイルを作成できます。)
作成したファイルに次のプログラムを上書きします。
---------------------------------------------------------------------------------
#import <Foundation/Foundation.h>
#import <AssetsLibrary/AssetsLibrary.h>
#import <AVFoundation/AVFoundation.h>
extern "C" void SaveToAlbum (const char* path)
{
UIImage *image = [UIImage imageWithContentsOfFile:[NSString stringWithUTF8String:path]];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
NSMutableDictionary *metadata = [[NSMutableDictionary alloc] init];
[library writeImageToSavedPhotosAlbum:image.CGImage metadata:metadata completionBlock:^(NSURL *assetURL, NSError *error) {}];
}
--------------------------------------------------------------------------
ボタンを押したらスクリーンショットを撮るスクリプトはこちら※.cs
using System.Collections;
using UnityEngine;
using System.IO;
using System.Runtime.InteropServices;
public class ScreenShot : MonoBehaviour
{
[DllImport("__Internal")]
private static extern void SaveToAlbum(string path);
IEnumerator SaveToCameraroll(string path)
{
// ファイルが生成されるまで待つ
while(true)
{
if(File.Exists(path))
break;
yield return null;
}
SaveToAlbum(path);
}
void Update()
{
if(Input.GetMouseButtonDown(0))
{
#if UNITY_EDITOR
#else
string filename = "test.png";
string path = Application.persistentDataPath + "/" + filename;
// 以前のスクリーンショットを削除する
File.Delete(path);
// スクリーンショットを撮影する
ScreenCapture.CaptureScreenshot(filename);
// カメラロールに保存する
StartCoroutine(SaveToCameraroll(path));
#endif
}
}
⑦Xcodeでアプリをインストールします。
シャッターボタンを追加した場合
info.plistを選択し
右クリックでAdd Rowで以下を追加します。(追加しないとカメラで写真を取った時にアプリがクラッシュします。)
Privacy - Photo Library Additions Usage Description
⑧完成
という流れでした!これでみんなもスパイダーマン!!
よくあるTPSのRPGを作りたい!!その2 忘備録
こんにちは、こんばんは!Misagonです!!
今回はよくあるスマホゲーRPGの基礎を独学自力で作成していきたいと思います!
C#を使用するのですが、私はスクリプト系の知識はほぼないので、極力スクリプトは自分で書かずに他力本願でいきたいと思います。
使用機材、ソフトはこちら↓
Unity
まずはProjectを作成します。今回使用したAssetはこちら↓
"Unity-Chan!"model (後述するアニメーションのmotionなどが含まれています。)
3rd Person Controller +Fly Model(シンプルな人型のキャラクターオブジェを使用するためだけに使用)
Joystick Pack (ジョイスティックパッドの導入に使用)
Mecanim Locomotion (アニメーションを動かすのに使用)
を使用します。
まず3DでProjectを作成します。
今回はとりあえず、フィールドを作ってその上をキャラクターに歩かせたいので、
ヒエラルキーを右クリック→3Dオブジェクト→Terrainを選択します。
画面上にTerrainが表示されるので、右側のインスペクタービューで
x-256 y 0 z -256に設定するとTerrainが真ん中に来ます。
この時点で画面上部からファイル→「シーンを別名で保存」で保存しておきます。
次に、画面下部のAssetsから「Virtual joystick Pack」を開き、中にある「3DExampleScene」をダブルクリックして開きます。
するとSceneが開くので、ヒエラルキーにあるCanvas、Scene、Player Example 3Dを選択してコピーします。
コピーした状態で、先ほど保存したSceneを開き、ヒエラルキーに貼り付けます。
すると画像のようになります。
これでフィールドとキャラクター、キャラクターを操作するためのjoystickを追加することができました。ここから調整していきます。
まずはTerrainにテクスチャを貼りましょう。
画面上部のアセット→パッケージをインポート→環境を選択しTerrain関係のテクスチャやオブジェクトをダウンロードします。
Terrainを選択した状態で、インスペクターの筆マークを選択し、下の「テクスチャを編集」を選択し、「GrassHill」を追加します。
追加するとフィールドにテクスチャが貼られます。
次にキャラクターを追加します。今の状態では白い四角しかいないので、別のキャラクター追加します。
3rd Person + Fly→Modelsからchar_shadowを選択し、画面にドラッグします。
キャラクターを選択した状態で、Assets→Virtual Joystick Pack→3D Example内の
「Player 3D Example(Script)」をキャラクターのインスペクタービューにドラッグアンドドロップします。その後、Joystickの項目が追加されるので、Joystickの横の○から対応する「Fixed joystick」を追加します。これで、キャラクターをJoystickで操作することができます。
ヒエラルキーのPlayer Example 3Dを参考にすると分かりやすいと思います。
ここまで設定できたらもう役目を果たしたので削除して大丈夫です。
次はキャラクターにアニメーションを追加しましょう。
キャラクターを選択した後、Assets→Locomotion Setup→Scropts→LocomotionPlayerをインスペクタービューにドラッグしてアタッチします。
そのあと、アニメーター内のControllerにLocomotionのアニメーションコントローラーを設定します。これで、矢印キーで移動&アニメーション動作が可能になります。
これはMecanimという機能?によって可能になるのですが、まだJoystickのではアニメーションが動作しないため、設定していきます。
アニメータータブを選択すると、アニメーター画面に移動します。
Joystickで動かすために、色なしのWalkRun以外は削除します。
パラメーターの+からboolを追加して、名前をRunningにします。
IdleとWalkRunの間の→を選択し、conditionsにRunningをtrueで追加します。
他の項目は削除します。
反対側の矢印も選択し、同様に追加し、falseにします。
その後、Player 3D Exampleスクリプトを編集します。
元のスクリプトはこちら。
if(moveVector = (Vector3.right ❇︎joystick.Horiontal + Vector3.forward❇︎joystick.Vertical);
がジョイスティックの動作の部分(だと思う)なのでここにアニメーターを動作するスクリプトを追加します。
以下のように書き足します。
これでJoystickでの操作時にも、アニメーションが動作します。(前述の矢印キーでの操作時に比べアニメーションが一つなので少し質は下がります泣)
アニメーター画面で、WalkRunを選択し、インスペクタービューでmotionを選択することで、アニメーションを選ぶことができます。RUN_00Fを選ぶことで走るアニメーションにできます。
最後にカメラの追従を設定します。ヒエラルキーのScenes内のMaincameraを選択し、コンポーネントを追加でCameraControllerを追加します。Focus objにキャラクターオブジェクトを選択して終了です。(一番上のMain cameraは削除して問題ありません)
おすすめはFocus x0 y1.5 z0です。
カメラのClear Flagsをスカイボックスにすると、空を自然な色に変更できます。
この段階でもう一度シーンの保存を行い、ファイル→ビルド設定→プラットフォームをiOSに変更し、プラットフォーム切り替えを行います。
プレイヤー設定でアイコンを指定した後、スクリプティックバックエンドを「IL2CPP」に変更しさらに下のArchitectureをUniversalに変更します。
(これをしないとCPUタイプが違うとでて実機にインストールできません。)
ビルドを実行してXcodeに書き出しを行い、iPhoneにインストールして完成です。
以上できちんと動作すると思います!参考までにどうぞ!
わからないことがあればコメント欄にお願いします!!
SNOWのフェイスフィルターのスパイダーマンバージョンを作りたい!
どーも!Misagonです!!
今回から取り組んでいくのは、名付けて「Spider-man Filter Project」です!
SNOWのフェイスフィルターを自分で自作しようという試みなのですが、
アプリ制作は超超初心者なので、いろいろなサイトや参考書を駆使して作成していきたいと思います。忘備録的な意味も込めてね笑
まず使用機材、ソフトはこちら
・Macbook Air 10.5インチ(メモリ増設有り)
・iPhoneX1(主にこれにアプリを入れて動かす予定)
・Unity Version 2018.1.6f1 Personal
などなど、都度使用していきたいと思います!
イメージとしては、自分の顔をスマホで写したら、スマホが顔を認識してスパイダーマンの顔を自分の顔に貼り付けてくれるという感じです。最終目標はこのスパイダーマンの画像のように目が大きくなったり小さくなったりを調整できるようにしたいと考えています。
今回一番重要な技術は「フェイストラッキング」
カメラや赤外線センサーなどが顔を読み取り、表情などを認識する技術です。
制作の流れは、
①Unityでフェイストラッキングを実装したアプリを作成
②PhotoshopやBlenderでスパイダーマンのマスクフィルターを作成
③上記を合体して実装
という流れです。
①が一番難しいところだと思うのですが、少しずつやっていきます!!
とりあえずUnityをインストールしたので、今回使用するアセット(いろいろな機能のパッケージプログラムと認識)をアセットストアからダウンロードしてインポートします!
ダウンロードするアセットはUnity-ARKit-Plugin です!Unityはインストールするとアセットストアを開けるのでそこで検索するのですが、検索しても出てこなかったのでGoogle先生に頼んだら載せてるサイトがあったのでここからダウンロード
https://bitbucket.org/Unity-Technologies/unity-arkit-plugin/downloads/
これをうまく使用したいところ、、、続く
次↓
https://misagon.hatenadiary.com/entry/2019/03/31/190202