【Blender制作日記】やはりテクスチャアニメーション
そういえばぽよさうるす君の3Dモデルが途中で放置されてるなーと思って、微調整フェーズだったポリゴン修正とテクスチャ作りをチマチマと再開してました。
(ちょっとプログラミングに飽きてきたっていうのは秘密だよ)
Unityに持って行って遊んでみたの図。
まばたきさせると生き物感が10倍ぐらい上がるなぁ😊 pic.twitter.com/zVO8kK0rvl
— ちゃこる (@Charcolle_) 2018年3月30日
ぽよさうるす君ver2.0では目を球状のポリゴンで表現していたのですが、なんか違うなと。
例えばポケモン3Dモデルやどうぶつの森の3Dキャラモデルを見ていると、表情は全部テクスチャの切り替えで表現されてますよね。
大好きなピカチュウ元気でチュウのピカチュウももちろん同じです。
見よう見真似で作ってみると球体で表現していた時よりもやはり愛らしさが違いますね(断言)
これは適当にUnityのAnimationで作成したので、まばたきの間隔や速度を調節してよりいい感じにしていきたいものです。
いつかVRChatに参加したりVTuberになれたり出来そうですね!!!!!とりあえずその辺目指してちまちま頑張っていきまする(^O^)
ところで、3Dモデルといえばモーフで表情を変更する技法の記事は多くみかけるものの、テクスチャを切り替えて表現する記事はあまり多くないように思います。
なのでかなり手探りで作っているのでちょっと不安ですね…
【Unity制作日記】AssetBundleツールの途中経過をGithubにコミットしたよ
開発中にEasyAssetBundleというふざけた名前を付けたんで各方面から怒られそう(^O^)
いやまぁビルドやAssetBundle管理ファイルを作ることに関しては簡単だと思うので気になる方はちょっと見てやってください。
ツールの使い方の説明書については準備中なので、別の記事にて頑張って書こうと思いますm(__)m
進捗としてはビルドツールに関してはサーバーアップロード機能以外は終了してて、あとはバグ潰しです。
ビルドできるだけじゃ使い物にならないので、AssetBundleをロードして利用できるシステム作りも始めました。
AssetBundle管理ファイルを読み込み、あたかもResourcesのようにAssetBundleを読み込めるように実装しています。こちらもGithubに途中経過(笑)がコミットされてます。
最近async/awaitが気になってたので、勉強がてらガシガシ使ってみました。別スレッドで処理できるのはいいのですが、こんなに多用して大丈夫なのかな?とか手探り状態です・・・
AssetBundleManagerのように自動で依存関係を解決するとかは考えてないですが、自分のアプリを作成する際に依存関係をどのように扱っていくか、こちらもなかなか悩ましいです。
【Unity制作日記】AssetBundleビルドツール続
2月中は全然進捗なかったのに3月入ってからどんどん進捗してるぞい。日記もどんどん書いていきたいです。
GUIもブラッシュアップして、AssetBundleをビルドしたり、出力したAssetBundleを指定したフォルダにエクスポートする機能を実装しました。
左側のコンフィグを設定したあと右下のビルドボタンをぽちっと押すだけで、指定したAssetのビルドが開始されます。ディレクトリ指定したら以下のファイルがチェックできないようにとか細かい実装もちゃんとしてるんですよ(^_-)-☆
AssetBundleのビルドはBuildMapで実装しようか迷いましたがよくわからなかったので、ツリービューでチェックついたAssetにAssetBundleの名前を付けてビルドしてます。そしてビルド後はAssetBundle名を無名にします。
AssetBundle名を一度付けると、BuildPipeline.BuildAssetBundlesで不必要なビルドをしてしまう可能性もあるので、こういうの大事だと思いまする。
エクスポート機能は、例えばManifestファイル抜きで指定フォルダにコピーしたり、ディレクトリ構造無視でビルドしたファイルを指定フォルダにぶちこんだりするとかいろいろ作ってます。
BuildPipeline.BuildAssetBundlesで出力しっぱなしじゃ管理しづらいしなんか美しくない気がするので。
このツール作って学んだこと結構あるので、ちゃんと記事にできたらします。TreeViewとかね。
【Unity制作日記】AssetBundleビルドツール作成中
自作アプリをスムーズに運用するためにAssetBundleの管理を簡単にするツールを作成してます。
AssetBundleManager、AssetGraphなどの公式のツールを使うことも悩んでいましたが、AssetBundleの管理を徹底したい場合に不便なのかなぁと思って、自分で実装することを決意しました。
構想自体は去年の10月ぐらいからあったんですが、ベストプラクティスを考え始めるとなかなか進まなくて苦労してましたが、今月になってようやく答えが見つかり始めました。
何がしたいのかというと、AssetBundleのビルド、AssetBundleのバージョン設定、特定フォルダへのエクスポート、特定サーバーへのアップロードを管理するツールです。
ツール側は、ビルドオプションやプラットフォーム、エクスポート先など必須な情報を管理し、バージョン管理ファイルの出力などは自分で実装できるようにして汎用性を高くしています。
現時点でまだAssetBundleのビルドの実装まで到達してませんが、ビルドしたいAssetBundleをTreeViewで表示し直観的に選択できるところまで出来ました。
途中でいろいろ迷走しまくってましたが、ゴールが見えてきて良かったよかった…
ところで、UnityのTreeViewのサンプルアセットが神で、プログラムの勉強になりました。
マルチカラムのTreeViewサンプルは、去年の私の実力ではプログラムを読むことができなかったのですが、今見てみたら実は簡単に自分のツールに組み込めることに気が付いて実装してみました(^_-)-☆
やる気があったら別の記事でまとめたいと思います。
【Unity】UnitySceneMenuがAssetStoreに公開されました
UnitySceneMenuがAssetStoreで公開されました。
マルチシーンエディティングを簡単にするためのツールです。5ドルで販売してます。
とても便利だと思うので買ってみてくだしあ。
assetstore.unity.com
説明書はgithubに上がってます(英語)
github.com
ノリで提出したんですが、審査が通ってとても嬉しいです★
UnityEditorMemoは完成まで半年ぐらい時間がかかったんですが、UnitySceneMenuは制作期間が4日程度なのはナイショです。
【Unity】ReorderableListについて小ネタ ( UnitySceneMenuを作って学んだこと )
ReorderableListは怖くないよ!
検索してみるとinspectorで表示するためのサンプルばかりで、私自身もinspectorでの表示にしか使ったことがなかったのですが、EditorWindowでも簡単に表示させることが可能でした。
以下はReorderableListを使ってみて得た知見や感想です。
ReorderableListをHorizontalScope内で使ってはならない
(悲劇が起きます)
HorizontalScope内で使用する場合は、DOLayoutList()を一旦VerticalScopeで囲んであげましょう。
ReorderableListを自作ボタンで操作するときの注意点
ReorderableListはデフォルトで要素の追加・削除ボタンが付属していますが、UnitySceneMenuのように自分でボタンを作成する場合に、ReorderableListのいくつかのコールバックが呼ばれないみたいです。
デフォルトボタン以外からReorderableListの要素を追加しても、onAddCallbackやonRemoveCallbackは呼ばれませんでした。
自作する場合はコールバックに登録するのではなく、ボタンに処理したいメソッドを登録しておきましょう。
参照が良くわからない…
C#デキナイなので、ReorderableList内で表示される要素が、ReorderableList外で値を更新したときにうまく反映されなくて原因が分からず困っていました。
今回の実装の話だと、ScriptableObject内のリストからReorderableListを作成しています。BuildSettingsが更新された際に自分自身がビルドシーンかどうかのフラグを更新してシーンアイコンの表示を切り替えるのですが、ReorderableList内の要素は更新がされませんでした。
MenuのReorderableListを作成するときに、Menuが持つSceneすべてに更新かけることで対応できました。
うまく言葉がまとまらないのですが、ReorderableListは要素のindexは更新できるが、Listのクラスまで更新をかけられない・・?
うーん勉強不足感。
参考にさせて頂いたサイト
【Unity】UnitySceneMenu
マルチシーンエディティングを簡単にする便利なツール、「UnitySceneMenu」をコミットしました。2/27にAssetStoreで配信しました。
github.com
今作ってるアプリはマルチシーン方式で作ってたんですがロード・アンロードがめんどくさすぎてなかなか作業が捗らない><
AssetStoreからダウンロードしたサンプルを見ながら制作!とかやってると本当に地獄です。
そんなこんなでシーンの管理ツールを作りました。
私が長らく欲していたマルチシーン管理ツールが出来上がってしまった #unity3d pic.twitter.com/fkRJSHCSn8
— ちゃこる (@Charcolle_) 2018年1月26日
ポイントとしては、
- 自分が編集するシーン群を「メニュー」に登録する。Configウインドウからサクサク登録できる。
- メニューウインドウのシーン名をクリックすることで、シーンのロード・アンロードを簡単に切り替えられる。
- サブ機能として特定ディレクトリ以下のシーンを自動的にBuildSettingに登録する機能もあるよ。
メニューの最初シーンは「Rootシーン」となり、メニューを切り替えたときに前のシーンは破棄されて、「Rootシーン」がロードされ、その他のシーンはヒエラルキーにのみ表示されるようになってます。
そうすることで素早くシーンの切り替えができるようになってます。
ちなみに以前、SceneをいちいちProjectビューからロードするのイヤーー!ってなって作ったツールがこちらです。
これは上のメニューからシーンをロードできるようなツールです。
github.com
これが私のGithubデビューでした。シーンの管理に対してこだわりでもあるんですかねぇ( ^)o(^ )