Misagon News

アプリやガジェットについて解説します!!

snowのフェイスフィルターのスパイダーマンバージョンを作りたいpart2

皆さんこんにちは🌞こんばんは🌇

Misagonです‼️

フェイスフィルタースパイダーマンバージョンを考えてから随分と日が開いてしまいましたが、忘れていたわけではありません😑

 

試行錯誤の結果、スパイダーマンのフェイスフィルターを作ることに成功しました‼️

まずは見てましょう‼️ジャカジャン🎊

 

f:id:gon339:20190326192448j:image

 

なかなかのクオリティですね‼️

合成してるわけじゃないですからね💦

 

それでは早速手順を記載していきます。

 

 

①ARKit2.0 for Unityをダウンロード

ダウンロード後、解凍してUnityにドラッグアンドドロップしてください。

iosのバージョン確認もしてね

bitbucket.org

 

②Spidermanの3Dモデルを入手 (Sketcfhabに登録必要※無料です)

sketchfab.com

 

③Spidermanの3Dモデルを編集して頭だけにする

ダウンロードしたものはモデルがカクカクしているのでBlenderで重複頂点を削除したり、表面を滑らかにしたりと編集します。(Blenderのサイトなどで調べてね)

f:id:gon339:20190331172500p:plain

 

 

④Unityに編集したSpidermanのモデルをインポート

f:id:gon339:20190331173136p:plain

⑤各種設定

ARKit2.0とSpidermanのモデルをインポートしたらあと少しです。

まず、UnityARKitPlugin>Examples>FaceTrackingの階層を開いてその中にある

FaceAnchorSceneを開きます。

 

f:id:gon339:20190331173536p:plain

 

するとヒエラルキービューに

CameraParent

ARFaceAnchorManager

ARCameraTracker

AxesPrefab

Directional light

が表示されます。(上画像参照)

 

AxesPrefabは削除か非表示にして構いません。

 

ARFaceAnchorManagerを選択すると、右側のインスペクタービューに

f:id:gon339:20190331174425p:plain

このように表示されます。このAnchor Prefabと書いているところに

インポートしたSpidermanのモデルを指定します。(以下参照)

f:id:gon339:20190331174926p:plain

 

これで顔を認識した時に表示されるオブジェクトの準備ができました。

 

次にFaceTrackingの使用を許可する必要があるので

UnityARKitPlugin>Resources>UnityARKitPlugin>ARKitSettingを選択し

f:id:gon339:20190331175524p:plain

 

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

 

⑧完成

 

f:id:gon339:20190331185736p:plain

 

 

 

という流れでした!これでみんなもスパイダーマン!! 

 

 

 

よくあるTPSのRPGを作りたい!!その2 忘備録

 

こんにちはこんばんはMisagonです!!

今回はよくあるスマホゲーRPGの基礎を独学自力で作成していきたいと思います!

C#を使用するのですが、私はスクリプト系の知識はほぼないので、極力スクリプトは自分で書かずに他力本願でいきたいと思います。

使用機材、ソフトはこちら↓

Unity

Blender

Photoshop Elements

Mac Book Air (メモリ増設有り)

 

まずはProjectを作成します。今回使用したAssetはこちら↓

 

"Unity-Chan!"model (後述するアニメーションのmotionなどが含まれています。)

3rd Person Controller +Fly Model(シンプルな人型のキャラクターオブジェを使用するためだけに使用)

Joystick Pack (ジョイスティックパッドの導入に使用)

Mecanim Locomotion (アニメーションを動かすのに使用)

を使用します。

 

まず3DでProjectを作成します。

f:id:gon339:20181123233654p:plain

 

 今回はとりあえず、フィールドを作ってその上をキャラクターに歩かせたいので、

 

ヒエラルキーを右クリック→3Dオブジェクト→Terrainを選択します。

画面上にTerrainが表示されるので、右側のインスペクタービューで

x-256 y 0 z -256に設定するとTerrainが真ん中に来ます。

この時点で画面上部からファイル→「シーンを別名で保存」で保存しておきます。

 

次に、画面下部のAssetsから「Virtual joystick Pack」を開き、中にある「3DExampleScene」をダブルクリックして開きます。

f:id:gon339:20181123235146p:plain

 

するとSceneが開くので、ヒエラルキーにあるCanvas、Scene、Player Example 3Dを選択してコピーします。

f:id:gon339:20181123235544p:plain

 

 

コピーした状態で、先ほど保存したSceneを開き、ヒエラルキーに貼り付けます。

すると画像のようになります。

f:id:gon339:20181124000929p:plain

 

 これでフィールドとキャラクター、キャラクターを操作するためのjoystickを追加することができました。ここから調整していきます。

 

まずはTerrainにテクスチャを貼りましょう。

画面上部のアセット→パッケージをインポート→環境を選択しTerrain関係のテクスチャやオブジェクトをダウンロードします。

 

 

Terrainを選択した状態で、インスペクターの筆マークを選択し、下の「テクスチャを編集」を選択し、「GrassHill」を追加します。

 

f:id:gon339:20181124003130p:plain

 

追加するとフィールドにテクスチャが貼られます。

f:id:gon339:20181124004416p:plain

 

次にキャラクターを追加します。今の状態では白い四角しかいないので、別のキャラクター追加します。

 

3rd Person + Fly→Modelsからchar_shadowを選択し、画面にドラッグします。

f:id:gon339:20181124004918p:plain

 キャラクターを選択した状態で、Assets→Virtual Joystick Pack→3D Example内の

「Player 3D Example(Script)」をキャラクターのインスペクタービューにドラッグアンドドロップします。その後、Joystickの項目が追加されるので、Joystickの横の○から対応する「Fixed joystick」を追加します。これで、キャラクターをJoystickで操作することができます。

ヒエラルキーのPlayer Example 3Dを参考にすると分かりやすいと思います。

ここまで設定できたらもう役目を果たしたので削除して大丈夫です。

 

f:id:gon339:20181124005150p:plain

 

次はキャラクターにアニメーションを追加しましょう。

キャラクターを選択した後、Assets→Locomotion Setup→Scropts→LocomotionPlayerをインスペクタービューにドラッグしてアタッチします。

そのあと、アニメーター内のControllerにLocomotionのアニメーションコントローラーを設定します。これで、矢印キーで移動&アニメーション動作が可能になります。

これはMecanimという機能?によって可能になるのですが、まだJoystickのではアニメーションが動作しないため、設定していきます。

 

f:id:gon339:20181124010620p:plain

 

 アニメータータブを選択すると、アニメーター画面に移動します。

Joystickで動かすために、色なしのWalkRun以外は削除します。

f:id:gon339:20181124011425p:plain

 

 パラメーターの+からboolを追加して、名前をRunningにします。

f:id:gon339:20181124013435p:plain

 

IdleとWalkRunの間の→を選択し、conditionsにRunningをtrueで追加します。

他の項目は削除します。

f:id:gon339:20181124013829p:plain

 

反対側の矢印も選択し、同様に追加し、falseにします。

 

その後、Player 3D Exampleスクリプトを編集します。

元のスクリプトはこちら。

if(moveVector = (Vector3.right ❇︎joystick.Horiontal + Vector3.forward❇︎joystick.Vertical);

ジョイスティックの動作の部分(だと思う)なのでここにアニメーターを動作するスクリプトを追加します。

f:id:gon339:20181124014541p:plain

以下のように書き足します。

f:id:gon339:20181124015809p:plain

 

これでJoystickでの操作時にも、アニメーションが動作します。(前述の矢印キーでの操作時に比べアニメーションが一つなので少し質は下がります泣)

 

アニメーター画面で、WalkRunを選択し、インスペクタービューでmotionを選択することで、アニメーションを選ぶことができます。RUN_00Fを選ぶことで走るアニメーションにできます。

f:id:gon339:20181124020556p:plain

 

最後にカメラの追従を設定します。ヒエラルキーのScenes内のMaincameraを選択し、コンポーネントを追加でCameraControllerを追加します。Focus objにキャラクターオブジェクトを選択して終了です。(一番上のMain cameraは削除して問題ありません)

おすすめはFocus x0 y1.5 z0です。

 

カメラのClear Flagsをスカイボックスにすると、空を自然な色に変更できます。

f:id:gon339:20181124020902p:plain

 

この段階でもう一度シーンの保存を行い、ファイル→ビルド設定→プラットフォームをiOSに変更し、プラットフォーム切り替えを行います。

プレイヤー設定でアイコンを指定した後、スクリプティックバックエンドを「IL2CPP」に変更しさらに下のArchitectureをUniversalに変更します。

(これをしないとCPUタイプが違うとでて実機にインストールできません。)

ビルドを実行してXcodeに書き出しを行い、iPhoneにインストールして完成です。

 

f:id:gon339:20181124140421p:plain

 

以上できちんと動作すると思います!参考までにどうぞ!

わからないことがあればコメント欄にお願いします!!

SNOWのフェイスフィルターのスパイダーマンバージョンを作りたい!

 

どーも!Misagonです!!

 

今回から取り組んでいくのは、名付けて「Spider-man Filter Project」です!

SNOWのフェイスフィルターを自分で自作しようという試みなのですが、

アプリ制作超超初心者なので、いろいろなサイトや参考書を駆使して作成していきたいと思います。忘備録的な意味も込めてね笑

 

まず使用機材、ソフトはこちら

Macbook Air 10.5インチ(メモリ増設有り)

・iPhoneX1(主にこれにアプリを入れて動かす予定)

・Unity Version 2018.1.6f1 Personal

Photoshop Elements

Blender

などなど、都度使用していきたいと思います!

f:id:gon339:20181111155607g:plain

イメージとしては、自分の顔をスマホで写したら、スマホが顔を認識してスパイダーマンの顔を自分の顔に貼り付けてくれるという感じです。最終目標はこのスパイダーマンの画像のように目が大きくなったり小さくなったりを調整できるようにしたいと考えています。

 

今回一番重要な技術は「フェイストラッキング

カメラや赤外線センサーなどが顔を読み取り、表情などを認識する技術です。

 

制作の流れは、

①Unityでフェイストラッキングを実装したアプリを作成

PhotoshopBlenderスパイダーマンのマスクフィルターを作成

③上記を合体して実装

という流れです。

 

①が一番難しいところだと思うのですが、少しずつやっていきます!!

 

とりあえずUnityをインストールしたので、今回使用するアセット(いろいろな機能のパッケージプログラムと認識)をアセットストアからダウンロードしてインポートします!

 

ダウンロードするアセットはUnity-ARKit-Plugin です!Unityはインストールするとアセットストアを開けるのでそこで検索するのですが、検索しても出てこなかったのでGoogle先生に頼んだら載せてるサイトがあったのでここからダウンロード

https://bitbucket.org/Unity-Technologies/unity-arkit-plugin/downloads/

 

これをうまく使用したいところ、、、続く

 

次↓

https://misagon.hatenadiary.com/entry/2019/03/31/190202