26
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unity で 3Dモデル を取り扱う上で単調になりがちな作業をまとめて処理してくれるツールを作成しました

Last updated at Posted at 2017-12-05
12/12(火) 機能を追加してVersion2.0になりました。

Unityを使って開発をしていると

  • 多くの3Dモデルを取り扱う
  • それらの3Dモデルに共通のルールを適用する(prefabに変換したり、AnimationClipを抜き取ったり、小ライダーを貼ったり...)

といったケースがあります。それらに一つ一つ対応していくのは大変で面倒臭いです。そのためそのような面倒臭い単純作業をいい感じにまとめて処理してくれるツールを作成しました。
https://github.com/TakuKobayashi/Unity3dModelControl
unitypackageにしたものをご希望でしたら、こちらからダウンロードしてください。
https://github.com/TakuKobayashi/Unity3dModelControl/releases
機能として以下の機能があります。

  • 3Dモデルファイル(FBXなど)をprefabに変換
  • 3Dモデルファイル(FBXなど)からAnimationClipを抽出
  • 3Dモデルファイルからサムネイル画像を作成
  • Asset(prefab,anim,画像ファイルなど)の参照をまとめてファイルに出力(asset, csv, json)
  • 3dモデルにColliderを貼り付けて、メッシュ情報から自動的にColliderの位置を調整

の処理をFileExportEditorならびにAttachColliderEditorという処理を実行して一括でファイルを出力したり、修正したりできる機能としてを作成しました。
よかったらぜひ「スター」や「いいね」をいただいたり、「シェア」して拡散していたっだけたらと思いますm(_ _)m

基本的な使い方

インストールが完了したら、MenuのToolsを選択するとAttachColliderEditorFileExportEditorを選択することができます。
tools_ss.png

FileExportEditor

Tools->FileExportEditor と選択すると以下のような画面が出力します。
EditorWindow.png

Export Mode(機能)

Convert To Prefab

3Dモデルファイル(FBXなど)をprefabに変換
ezgif-3-563e1ed40a.gif

Dissociate AnimationClip

3Dモデルファイル(FBXなど)からAnimationClipを抽出
ezgif-3-cca38c8c58.gif

CaptureSceneImage

3Dモデルファイルからサムネイル画像を作成
ezgif-3-375a6b259c.gif

RegisterAssetsReference

Asset(prefab,anim,画像ファイルなど)の参照をまとめたものをファイルとして出力

  • assetファイル(ScriptableObject)にして出力する場合
    ezgif-3-125bb2e682.gif

  • CSVファイルとして出力する場合
    ezgif-3-6e7c90747d.gif

AttachColliderEditor

Tools->AttachColliderEditor と選択すると以下のような画面が出力します。
AttachColliderEditor.png
このWindowでは3dモデルにColliderを貼り付けて、メッシュ情報から自動的にColliderの位置を調整することができるものになります。
ezgif-3-2dbf96b6d6.gif

各項目の解説と操作の紹介

FileExportEditor

  • Export Mode: 現在実装されている以下の4種類の処理を選択できます
    • Convert To Prefab: 3Dモデルファイル(FBXなど)をprefabに変換
    • Dissociate AnimationClip:
      3Dモデルファイル(FBXなど)からAnimationClipを抽出
    • CaptureSceneImage: 3Dモデルファイルからサムネイル画像を作成
    • RegisterAssetsReference: Asset(prefab,anim,画像ファイルなど)の参照をまとめてファイルに出力(asset, csv, json) 
  • Search Root Directory: 入力したPath以下に存在するファイル全てに処理を適用します。
  • Export Directory: 指定したディレクトリに処理を実行した結果を出力します。出力されるファイル名は処理の対象となったファイルと同じ名前になります。
  • Distribute with the parent directory?: ファイルを出力するとき、特定のルールに則ったディレクトリ構造で出力したいということが多くあると思います。その時はこのチェックボックスをチェックして実行すると指定したディレクト同じ構造でデータを出力します。
  • Refer hierarchy parent number: Distribute with the parent directory?をチェックすると出てくる項目です。対象のファイルから見て、指定した階層の親ディレクトリと同じ名前のディレクトリを作成し、そのディレクトリにカテゴライズしたディレクトリにファイルを出力します。
  • Search File Extention:Export ModeをConvert To PrefabまたはDissociate AnimationClipを選択した場合に出現します。処理を実行したい3dモデルのファイルの形式を選択することができます。
  • Capture Image Width, Height:Export ModeをCapture Scene Imageを選択した場合に出現します。Thumbnailとして出力したい画像のサイズを指定できます。
  • Export File Extention:Export ModeをCapture Scene Imageを選択した場合に出現します。Thumbnailとして出力したい画像のファイルの種別を指定できます。
  • Execute:設定された内容でColliderを超せして貼り付けます。

AttachColliderEditor

  • Attach Mode: Colliderの位置を自動的に調整するときの基準となる計算方法を選択できます。

    • WiddestSize: 3Dモデルがぴったり収まるような大きさに調整したColliderを貼りつけます
    • MaxVolumn: 3Dモデルを構成するパーツの中でもっとも大きいパーツがぴったり収まるような大きさのColliderを貼りつけます
  • Filter Mesh Renderer Type: 大きさを見るMeshのタイプを指定します。(Mesh RendererかSkinnned Mesh Rendererか両方か)

  • Attach Collider Type: 貼り付けたいColliderのタイプを指定します。(BoxCollider, Capsule Colliderなど)

  • Execute:設定された内容でColliderの位置を調整して貼り付けます。

詳しくはGithubのプロジェクトで実際に試してみてください。

機能の詳細な解説

機能1: 3Dモデルファイルをprefabに変換

Unityで3Dモデルファイル(FBXなど)を読み込むとこんな感じになると思います。
ScreenShot1.png
これはprefabではないので、Unity上でいろいろと制御するためには

  • Hierarchyにドラッグ&ドロップ
  • Hierarchyからドラッグ&ドロップして、prefabに直す

ということをしなければいけないのですが、
数が多かったり、よく変更されるとめんどくさいわけで、ここにフォルダ構造とかも考慮しないといけなくなったりするとこんなことやり続けるのはもうめんどくさくて仕方がないのです。
なので、便利でいい感じにやってくれるためのものを作りました。

機能2: 3DモデルファイルからAnimationClipを抽出

Unityで3Dモデルファイル(FBXなど)を読み込んだ場合、モーションなどのアニメーションも内蔵されていることがあります。
ScreenShot2.png

このなかにあるAnimationClipファイルを取り出し、編集、制御できるようにするためには
http://tsubakit1.hateblo.jp/entry/2015/06/01/235939

  • FBX内の.animファイルを選択しCtrl(Command)+D

ということをして抽出するのですが、こちらもやはり数が多かったり、よく変更されるとめんどくさいので、いい感じにやるためのものを作りました。
【参考】http://tsubakit1.hateblo.jp/entry/2015/06/01/235939

機能3: 3Dモデルファイルからサムネイル画像を作成

3Dモデルファイルはある。これをUIでうまく使ったり、どんな感じのものなのか見せたい、しかし別にデザイナーさんに頼んでアイコンを作ってもらうほどでもない、というケースがあるのではないかと思います。
そんな時はとりあえずそれらしい、画像を自動的にそれらしい画像を3Dモデルから取得できるようにしました。
【参考】 https://qiita.com/kuuki_yomenaio/items/16577f32792da9eac17b

機能4: Asset(prefab,anim,画像ファイルなど)の参照をまとめてファイルに出力

3Dモデルなどのファイルを扱う場合、数が多くなり、それをうまく扱えるようなものを作ることになると思います。そのとき、それらのデータを管理するのがassetファイルやExcelになってきます。(いわゆるマスターデータ)
マスターデータを管理するとき、ファイルの参照(あるいは特定のルール)を設定するのですが、データの入力は基本的に手動で行うことが多いです。手動ですと数が多いとめんどくさいですし、ミスも起こります。そのため、それらをうまく自動化してみたものがこの機能になります。
(※ただし、最適なやりかたは模索中なので、ご意見などいただけると幸いです)

機能5: 3dモデルにColliderを貼り付けて、メッシュ情報から自動的にColliderの位置を調整

3dモデルにCollider(衝突判定の膜)を貼り付ける場合基本的に手動で貼り付けていきます。一つ一つ手作業でやっていく場合数が多くなると非常にめんどくさいです。一応、Colliderを貼り付けるときは一定の方針があるはずなので、多くの場合に適応できるだろう方針の基、自動的に計算して、処理を適用できるものを作ってみました。

その他、備考

関連記事

26
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
26
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?