ラベル Unity3D の投稿を表示しています。 すべての投稿を表示
ラベル Unity3D の投稿を表示しています。 すべての投稿を表示

2020年6月20日土曜日

ゲームのグラフィックを FBX ファイルに吸い出す方法 (AssetStudio)

How to rip Unity games to FBX files

AssetStudio というオープンソースソフトウェアを使って Unity で作ったゲームからグラフィックデータを FBX ファイルに出力できたのでその方法をまとめました。

環境

  1. Windows 10
  2. Unity 2019.4
  3. AssetStudioGUI v0.14.38

Unity で吸い出す対象のゲームを作る

構造ががシンプルな「クエリちゃん SD版」を使って吸い出し方法を説明します。
「クエリちゃん SD版」は Asset Store から無料でダウンロードできます。
このアセットのプレファブを追加しただけの Scene を作り、キャラクターを吸い出すことを目標とします。

exe ファイルにビルドします。
今回は sample.exe というファイル名でビルドしました。

AssetStudio をダウンロードする

AssetStudio は Unity でビルドしたファイルからFBXのほか、アニメーション・オーディオ・画像などを出力できるツールです。
公式サイトの Download the latest build version from here をクリックしてzipファイルをダウンロードします。
https://github.com/Perfare/AssetStudio/releases
zipファイルを展開し、AssetStudioGUI.exe のプロパティを開いてセキュリティの 許可する をクリックします。

これで AssetStudioGUI.exe が起動できるようになります。

正常に起動しない場合は .NET Framework 4.7.2 と Microsoft Visual C++ 2017 Redistributable もインストールしてください。

AssetStudio で吸い出す

AssetStudio のメニュー
Flie -> Load folder
でUnity をビルドしたフォルダーを指定します。
AssetStudio の左の階層に level0 というツリーで Scene が表示されます。
今回はこの中の Query-chan-SD のみを指定しました。


メニューの
Model -> Export selected object をクリックます。

エクスポート先のフォルダーを指定すると FBX ファイルとテクスチャ画像が出力されました。

Blender にインポートする方法

FBX ファイルが正常に再現されているか確かめるため、3次元CG編集ソフトの Blender 2.83 を使いました。
メニューの
File -> Import -> FBX
から出力したファイルをインポートします。
ボーンも確かめるので Automatic Bone Orientation にチェックを入れておきました。

AssetStudio で出力した FBX は Unity Assets Bundle Extractor で出力したメッシュに比べると100分の1の大きさになるので Transform の X Y Z とも100倍にします。

Viewpoint Shading を Material Preview にするとテクスチャが正常に表示されました。

Pose mode でボーンを動かすとポーズも正常に動作します。

AssetStudio から出力した 再現性の高いFBX ファイルを出力できることがわかりました。
ただし、どんなことが正常に再現できないか不明な点もあります。
大事なアセットはバックアップしておくことをおすすめします。

市販のゲームも吸い出しできる

プライエタリーなゲームでも Unity 製なら AssetStudio で吸い出しできることがあります。
二次利用不可のアセットを使って Unity でビルドしたゲームを公開する場合は、エンドユーザーライセンス契約でリバースエンジニアリングや逆アセンブルの禁止などで保護することをおすすめします。

関連ブログ

ゲームのグラフィックや音声を吸い出す方法 (Unity Assets Bundle Extractor)

2019年6月1日土曜日

Unity で 64bit版 Anrdoid アプリをビルドする方法

How to build 64-bit Android Applications with Unity3D

2019 年 8 月 1 日から Googole Play で公開するネイティブコードを使用するアプリは、64bit版のコードを含んでいることが必須になります。
それ以降は 32bit のネイティブコードのみを使用するアプリの公開ができなくなることが決まっています。
Android Studio で Java や Kotlin でプログラミングしたアプリならネイティブコードの心配はありませんが、ゲームエンジンの Unity3D (以下 Unity) でビルドした Android アプリはネイティブコードを含むので注意が必要です。
Unity で 64bit のネイティブコードを含めた Andorid アプリをビルドする方法を試してみたのでその方法をまとめました。
blog.fujiu.jp Unity で 64bit版 Anrdoid アプリをビルドする方法


環境

  • Windows 10
  • Unity Editor 2019.1.4


Unity のツール類のパスを確認する

Unity を起動しメニューの
Edit -> Preferences
を開き、JDK・Android SDK・Android NDK のパスが設定されているか確認します。
設定されていなければそれぞれインストールする必要があります。


Java SE Developpment Kit 8 (JDK8) をインストールする

JDK 8 がインストールされていない場合は公式サイトからダウンロードしインストールします。
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

インストールしたら Unity の Preferences にインストールしたパスを設定します。


Android SDK (Android Studio) をインストールする

Android SDK がインストールされていない場合は Android Studi のインストールをおすすめします。
Android SDK はコマンドラインツールとして公開されていますが、Android Studio をインストールすると Android SDK を GUI でアップデートできます。
Android Studio は公式サイトからダウンロードできます。
https://developer.android.com/studio

Android Studio を起動し、メニューの
Files -> Settings
で Settings 画面を開き
Appearance & Behavior -> System Settings -> Android SDK
の階層にある Android SDK Location の項目が Android SDK のパスです。

このブログを書いている時点では Unity には Android SDK Tool 26.1.1 が必要でした。
Android SDK Tool のバージョンは SDK Tools タブで確認出来ます。
バージョンが古い場合はこの画面からアップデート出来ます。

Android SDK をインストールしたら Unity の Preferences にインストールしたパスを設定します。


Android NDK をダウンロードし展開する

Android NDK がインストールされていない場合はインストールする必要があります。
このブログを書いている時点 Android NDK の最新バージョン r19c は Unity では使えず、少し古めのバージョン r16b が必要です。
古いバージョンの Android NDK は NDK アーカイブからダウンロードできました。
https://developer.android.com/ndk/downloads/older_releases.html?hl=ja
Android NDK のインストールはダウンロードした zip ファイルを展開するだけです。
展開したら Unity の Preferences に展開したパスを設定します。


Platform を切り替えて Android-Support-for-Editor をインストールする

Unity のメニューの
File -> Build Settings
を開き
Platform の Android を選択して Switch Platform をクリックします。

Android-Support-for-Editor がインストールされていない場合は、ここでダウンロードを促されます。
Android-Support-for-Editor をダウンロードしたらインストールし、もう一度上記画面の Switch Platform をクリックします。


Player Settings を設定するする

Build Settings の左下の Player Settings をクリックします。
Other Settings の階層の設定項目を次のように変更します。
  • Scripting RUntime Version を .NET 4.x Equivalent にする
  • Scriopting Backend を IL2CPP にする
  • ARM64 のチェックをオンにする

この設定で Build Settings の Build をクリックすれば 64bitのネイティブコードを使用する Android アプリにビルドすることが出来ました。
Android 端末実機の USB デバッグをオンにして USB ケーブルで接続して Build And Run をクリックすれば実機で動作テスト出来ます。

Androd Studio で 64bit のネイティブコードを含んでいるか確かめる方法は Android アプリの 64bit 必須化に対応する方法 で公開しています。


エラーが出たときの対処方法

Feature `out variable declaration' cannot be used error というエラーが出た場合

Other Settings の Scripting RUntime Version を .NET 4.x Equivalent に設定する


関連ブログ

Android アプリの 64bit 必須化に対応する方法
[Unity3D] Unity5のプロジェクトをAndroid Studioにインポートする方法


2018年1月13日土曜日

[Unity3D] オリジナルキャラクターにユニティちゃんのスクリプトを設定する方法

How to attach UnityChan assets to original charactors

Unity3D ゲームエンジン(以下 Unity)にオリジナキャラクターをインポートして「ユニティちゃん」と同じように操作できる方法をまとめました。
応用すれば MikuMikuDance 用のモデルにも適用できます。(下の画像)
blog.fujiu.jp  [Unity3D] オリジナルキャラクターにユニティちゃんの動作を設定する方法
アイティオール株式会社が公開したモデルを MMD4Mechanim で Unity にインポートしました


環境

  • Windows 10
  • MakeHuman 1.1.1
  • Unity 2017.3.0f3


オリジナルの人物モデルを作る

手っ取り早くオリジナルキャラクターを作るため人物のモデリングに特化した無料の MakeHuman を使いました。
MakeHuman のライセンスは AGPL3 ですが作ったモデルのライセンスは CC0 で利用できるようです。
キャラクターのデザインは自由ですが次の設定をしておくと Unity にインポートした後の不具合が少ないと思います。
  • Pose/Animate - Skelton は Cmu mb に設定する
  • Pose/Animate - Pose は Tpose に設定する
特に Skelton は Game engine に設定したら Unity にインポートした後「Required human bone 'Hips' not found」のエラーでリギングできなかったので要注意です。

キャラクターが完成したら
File - Export
で Filmbox (fbx) を選択して名前をつけて FBX ファイルにエクスポートします。


Unity にオリジナルモデルをインポートする

MakeHuman でエクスポートした FBX ファイルをサブフォルダーごと Unity の Project ウィンドウにインポートします。

Project ウィンドウの先ほどインポートした FBX ファイルを選択して Inspector の Rig の Animation Type を Humanoid に変更し Apply をクリックします。


Unity に "Unity-chan!" Model をインポートする

Asset Store から無料でダウンロード出来る "Unity-chan!" Model をインポートします。
このアセットのアニメーションやスクリプトをオリジナルキャラクターで動作させます。


オリジナルキャラクターに "Unity-chan!" のスクリプトを適用する

Project ウィンドウのオリジナルキャラクターを Hierarchy にドラッグ&ドロップします。

Hierarchy ウィンドウのオリジナルキャラクターに Project ウィンドウの
Assets - UnityChan - Prefabs - for Locomotion
の以下の3つのプレファブを追加します。
  • CamPos
  • FrontPos
  • JumpPos

オリジナルキャラクターの Inspector に Project ウィンドウの
Assets - UnityChan - Scripts
の UnityChanControlScriptWithRgidBody というスクリプトを追加します。
RgidBody と Capsule Collider が自動で追加されます。
RgidBody の Freeze Rotation の X・Y・Z をすべてオンにします。
Capsule Collider はキャラクターに合わせて大きさと位置を調整します。

オリジナルキャラクターの Inspector の Animator の Controller を UnityChanLocomotions に設定します。

Hierarchy の Main Camera に Project ウィンドウの
Assets - UnityChan - Scripts
の ThirdPersonCamera を追加します。

これで完了です。
地面がないと落下し続けるので Plane を追加して Mesh Corider をつけて地面として設置しました。
実行するとユニティちゃんと同じ動作をします。
カーソルキーで移動、走っている最中にスペースキーでジャンプします。


関連ブログ

MakeHumanでCLIP STUDIO用3Dキャラクターを作る方法
ゲームのグラフィックや音声を吸い出す方法 (Unity Assets Bundle Extractor)
[Blender] ManuelbastioniLAB でCLIP STUDIO用キャラクターを作る方法
Unity3D のC#スクリプトを Visual Studio Code で編集する方法



2018年1月7日日曜日

ゲームのグラフィックや音声を吸い出す方法 (Unity Assets Bundle Extractor)

How to rip Unity games to graphics and audio clips

Unity Assets Bundle Extractor というツールを使って Unity3D (以下 Unity) 製ゲームのグラフィックや音声を吸い出して
ファイルに復元する方法を試してみました。

※ FBX ファイルに復元したい場合は ゲームのグラフィックを FBX ファイルに吸い出す方法 (AssetStudio) をご覧ください。


環境

  • Windows 10
  • Unity 5.6.5
  • Unity Assets Bundle Extractor 2.1
このブログを書いている時点の Unity の最新バージョンは 2017.3.0 ですが、Unity Assets Bundle Extractor 2.1 では最新の Unity でビルドしたゲームの吸い出しが出来なかったため Unity をバージョンダウンして検証しました。


吸い出す対象のゲームを作る

メッシュオブジェクトがシンプルな「クエリちゃん SD版」を使って吸い出し方法を説明します。
「クエリちゃん SD版」は Asset Store から無料でダウンロード出来ます。
blog.fujiu.jp ゲームのグラフィックや音声を吸い出す方法

このアセットのプレファブを追加しただけの Scene を作り、キャラクターを吸い出すことを目標とします。

exe ファイルにビルドします。
今回は uabe_sample.exe というファイル名でビルドしました。


Unity Assets Bundle Extractor をダウンロードする

Unity Assets Bundle Extractor (以下、UABE) は Unity でビルドしたファイルからグラフィックや音声を吸い出すツールです。
機能はシンプルですが無料で公式サイトからダウンロードできます。
https://7daystodie.com/forums/showthread.php?22675-Unity-Assets-Bundle-Extractor

ダウンロードした zip ファイルを展開して AssetBundleExtractor.exe をダブルクリックすると起動します。


UABE で吸い出す

exe ファイルをビルドした場所に ○○_Data というフォルダーがあります。
uabe_sample.exe をというファイルにビルドしたらフォルダー名は uabe_sample_Data です。
UABE のメニュー
File - Open
でそのフォルダーの中の sharedassets0.assets というファイルを開きます。
ビルドした Unity が新しすぎると下のような画面が表示されるので選択肢のうち最も新しいバージョンを選択します。

UABE の 解析が正常に出来ると Assets info という画面が表示されます。

Type が Texture2D なら画像、Mesh ならメッシュオブジェクト、AudioClip なら音声です。
Mesh を吸い出すなら メッシュオブジェクトを選択して 右の Plugins をクリックして Export to obj を選んで OK をクリックします。
画像を吸い出すなら Texture2D オブジェクトを選択して Plugins をクリックして Export to .tga または Export to .pngを選んで OK をクリックします。
音声を吸い出すなら AudioClip オブジェクトを選択して Plugins をクリックして Export sound を選んで OK をクリックします。

下は Body のメッシュオブジェクトを吸い出してペイント3Dで開いた結果です。
胴体が吸い出せました。

Texture2D と Mesh を全部吸い出して Blender で復元してみました。
UV座標が保持されているのでテクスチャが正確に再現出来ました。


市販のゲームも吸い出し出来る

プライエタリーなゲームでもUnity製なら吸い出し出来ることがあります。
ただしほとんどのゲームは著作権やエンドユーザーライセンス契約などで保護されています。


AUBE の限界

AUBE で吸い出したメッシュオブジェクトはリギングが失われ親子関係も保たれません。
ほかのゲームに使い回すのは難しいと思います。
大事なアセットはバックアップすることをおすすめします。

関連ブログ

Unity3D のC#スクリプトを Visual Studio Code で編集する方法
Live2D を Unity3D で動作させる方法
[Unity3D] ユニティちゃんたちのアニメーションを分離するスクリプト


2017年1月28日土曜日

Unity3D のC#スクリプトを Visual Studio Code で編集する方法

How to edit C# scripts with Visual Studio Code

2016年11月、ゲームエンジン Unity3D (以下、Unityと略します) のバージョン5.5がリリースされました。
このバージョンからMacOS版とWindows版とも、スクリプトエディターとしてVisual Studio Code(以下、VS Codeと略します)が正式にサポートされました。
Visual Studio 2015に比べてインストールに必要な容量が少なく、起動が速いなどのメリットがあります。
WindowsでVS CodeをUnityのエディターとして使う方法をまとめました。


環境

  • Windows
  • Visual Studio Code 1.8.1
  • Unity3D 5.5.0f3


VS Codeに Debugger for Unity をインストールする

VS Codeの拡張機能を開き、
"unity technologies"
で検索するとDebugger for Unityが見つかるのでインストールします。
blog.fujiu.jp Unity3D のC#スクリプトを Visual Studio Code で編集する方法


.NET Core SDK をダウンロードしインストールする

.NET Core installation guide のサイトから.NET Core SDK をダウンロードしインストールします。
https://www.microsoft.com/net/core#windowscmd



UnityのプロジェクトにVS Codeエディタ拡張アセットをインポートする

UnityのAsset StoreからVSCodeエディタ拡張をインストールします。

GitHubからクローンをインポートすることもできるようです。


VSCodeエディタ拡張アセットはUnityのプロジェクトごとにインポートする必要があります。


Unityの設定を変更する

Unityエディターの
Edit - Preferences
を開いて次のように設定し、Write workspace settingsボタンをクリックします。


UnityプロジェクトのC#スクリプトをVS Codeで開く

UnityエディターのProjectウィンドウにC#スクリプトのファイルを追加します。

スクリプトファイルをダブルクリックするとVS Codeが起動します。

C#拡張機能がインストールされてない場合はインストールを勧められるのでインストールします。


エラーが出た場合

The .NET CLI tools cannot be located. .NET Core debugging will not be enabled. Make sure .NET CLI tools are installed and are on the path.
というメッセージは.Net Command Line Tools がインストールされてない場合に表示さるエラーです。
Get .NetCLI tools をクリックするとWebブラウザーで公式サイトが開くので.Net Command Line Toolsをダウンロードしてインストールしてください。


参考にしたサイト

Unity Development with VS Code
https://code.visualstudio.com/Docs/runtimes/unity


関連ブログ

Live2D を Unity3D で動作させる方法
Houdini APPRENTICE のFBXファイルの互換性を試してみました
MODO Indie のFBXの互換性を試してみました
[Blender] CLIP STUDIOにUnity3DやMMDのキャラクターを移植する方法
VOCALOID SDK for Unity でユニティちゃんをリアルタイムに歌わせる方法
VOCALOID SDK for Unityでユニティちゃんにvsqxを歌わせる方法

以上、参考になれば幸いです。

2017年1月7日土曜日

Houdini APPRENTICE のFBXファイルの互換性を試してみました

How to import FBX files into Houdini APPRENTICE

Houdiniは3次元CG編集ソフトです。
Houdini APPRENTICEは無償で利用できるHoudiniの機能制限版です。
無料でありながらFBXファイルのインポートができるため、ゲームエンジン・Unity3DのアセットのFBXファイルをインポートして互換性を試してみました。

blog.fujiu.jp Houdini APPRENTICE のFBXファイルの互換性を試してみました
© Pocket Queries


環境

  • Windows
  • Houdini FX Version 15.5.632


ダウンロードとインストール

公式サイトでアカウントを登録するとインストーラーをダウンロードできるようになります。
http://www.sidefx.jp/index.php?option=com_content&view=article&id=25



ライセンスの登録

インストール後、起動すると無料版を使うか有償ライセンスを登録するか問われます。
今回は無料版のHoudini APPRENTICEを選択しました。

ライセンス照合のためファイアーウォールの許可が必要です。

ユニティちゃんのFBXファイルをインポートした結果

HoudiniにユニティちゃんのFBXファイルをインポートしたところ、顔のメッシュが表示されませんでした。
Tree ViewにMTH_DEFオブジェクトがあるのでどこかに顔があるはずですが今のところ修正方法は不明です。

©: Unity Technologies Japan/UCL

マテリアルごとにテクスチャ画像を設定した結果です。
頂点やUVは正常のようです。

ユニティちゃんに限って言えばHoudiniのFBXファイルの互換性はMetasequioa EXより高く、MODO Indieより低いようです。
MODO Indie については過去のブログ MODO Indie のFBXの互換性を試してみましたに記載してあります。


Houdiniの強み

Houdini APPRENTICEで作成したアセットはゲームエンジンのUnityやUnreal Engineなどで利用できます。
特にパーティクルの開発に強ようです。
また、動画が見つかりませんでしたがBjörk氏の「Quicksand」というAR動画作成にも使われました。(CGWORLD2016 クリエイティブカンファレンスより)


難点

初期設定では日本語(マルチバイト文字)が含まれるファイルパスはHoudiniのファイルピッカーに正しく表示されないようです。
ユニティちゃん以外のFBXファイルはクラッシュやハングアップを起こすことがありました。


関連ブログ

MODO Indie のFBXの互換性を試してみました
Metasequoia EX の FBXファイルの互換性を試してみました
Shade3D の FBXファイルの互換性を試してみました
[Blender] CLIP STUDIOにUnity3DやMMDのキャラクターを移植する方法
BlenderのモデルデータをMMDに変換する方法

以上、参考になれば幸いです。