ちゃこブログ

お絵かきとUnityとBlenderと日記

【Unity】MissingComponentFinder

MissingComponentFinderというプラグインを制作しました。
スクリプトを書くのリハビリを兼ねた簡単なプログラムの制作をしました。
VRChatでMissingしてるComponentを消す必要があることがあるのですが、その機能は自分でも作れそうだなと思ったので作りました。
github.com

  • 概要
    • RemoveMonoBehavioursWithMissingScript
続きを読む

【OuterWilds】新米宇宙飛行士の航行記録

※本記事はnoteからの転記です
f:id:charcotte:20211108194514p:plain

OuterWildsプレイ後の余韻だけでプレイ日記を書こうと思ったら短編小説ができてしまった件について。

⚠ネタバレを含みます。よく言われていることですが、Outer Wildsをプレイする予定の方は決してネタバレせず楽しんで下さいね。

  • プレイのきっかけ
  • 航行記録:起
  • 航行記録:承
  • 航行記録:転
  • 航行記録:終
  • まとめ
  • 感想文
    • (蛇足)After Supernova
続きを読む

お久しぶりです

お久しぶりです。

役職が変わってUnityにあまり触れていなかったり、noteというブログサービスに移行していた関係で全然投稿できてませんでした。
色々あってnoteからはてなブログに帰ろうかなって思い始めたので、今後はこちらのブログを定期的に更新していけたらと思っています。

近況でいうと、エンジニアではなくなってしまったためUnityにはあまり触れてませんでしたが、VRChatというサービスを友人に紹介していただきそこからまたUnityを触り始めていました。自作モデルを作って満足し、現在はワールド作り真っ最中です。
そこからゲーム作りたい欲がすごいので、来年のインディゲーム系のイベントに出ることを目標にしています。
また、Blenderに関してはずっとモデリングの勉強を続けていたのでかなり上達しました。この辺もいろいろ投稿していきたいです。

また、イラストに関しては今年の春から通信制の大学に入学し勉強をしています。
3D制作やゲーム制作で2D制作のスキルは大いに生きると思うので卒業を目指して頑張っていきます。


しばらくはnoteからいくつかの記事を転記していこうかなと思うので、しばらくお付き合いください。

【Unity】UIElementsちょっとだけ入門してみた

 UnityEditor拡張に力を入れて学習してきた身としては、UIElementsはモノにしなくてはならない技術だという使命感はあります。しかし、CSSやらXMLやらにあまり馴染みがなく、USSとUXMLに向き合うのは結構なモチベーションがないと学習が捗らないものです…というのもIMGUIでGUIをゴリゴリ書くのもまだまだアリだと感じているからです(´・ω・`)

 このような理由でUIElementsの門をくぐれないでいる日々が長らく続いておりました。
Unity2019で生成できるサンプルや公式動画の解説を見てもピンとこなくて心が挫けそうになったとある日、あるサンプルを見つけたことでUIElementsへの入門にこぎつけることができました!

  • 超おすすめUIElementsサンプル
    • Inline C#
    • C# + USS
    • C# + USS + UXML
    • with IMGUI
  • 軽~くUIElementsを使ってGUI実装してみる
    • IMGUIをVisualElementに組み込むときの注意点
  • 個人的なまとめ
  • 感想
続きを読む

【Unity制作日記】【Blender2.8】アーマチュアの回転をUnity上で正常な値にするBlenderのエクスポート方法

タイトル長いです。
最近はVTuberVR文化の浸透でBlenderとUnityに関する知見はものすごく広まってそうですよね。私には相変わらず時代遅れな知識しかなくて焦りすらもないです。( ˘ω˘ )
タイトル通りですが、Blender&Unity関連で困った現象があったのでメモメモです。

Animation Riggingの勉強中

CEDECでUnity2019.3のAnimation Riggingを見てからずっと触っています。以前からProcedual Animationにとても興味がありましたが何から始めていいかわからず何もできてなかった中、この機能を見かけて入門出来そう!と思ったので勉強中です。

学習中、Hipボーンを追従させるRigをNinjaのExampleプロジェクトを参考にセッティングしてました。しかし設定は同じはずなのに完全な追従が行われない…RigのWeightも問題ありませんしなぜだ…
f:id:charcotte:20191001225924g:plain

原因を見てみるとモデルのスケルトンのスケールがメッシュの大きさと比較してめちゃくちゃ小さかったんですよね。Unity上でアーマチュアの大きさを1にしたところ、リグにしっかり追従するようになりました。
f:id:charcotte:20191006144547p:plain
Blenderファイルを確認したら、確かにアーマチュアがめっちゃ小さいサイズになってました。きっと作業中にデカすぎるという理由で小さくしたんだったかな…
いざスケールを修正してFBXを書き出し直してみるとスケールは治ったけど-90度回転はなんでか治らない。Animation Rigのサンプルで公開されているニンジャのモデルでは、メッシュもスケルトンも全部統一されていたので、全部修正しようと思いました。

続きを読む

【Unity】CustomPackageManager作った

久々のブログ更新です。

最近の開発でPackageManagerを利用することも多くなり、また自分で作ったプラグインもPackage化を行って利用しています。最近ではEC2の無料枠インスタンスでVerdaccioを起動して自分専用のprivate npm Registryを作成して快適な個人開発ライフを送っています。

Packageの管理方法としてnpm registryかgitを利用することが主流になってきています。ProjectにUnity公式以外のPackageを追加するためには、manifest.jsonに適切な形式でPackageの情報を記述する必要があります。追加だけでなく、Git管理の時は更新するときもいちいちmanifest.jsonを開いて編集しなくてはなりません。せっかくスマートにAsset管理するのにPackage化してるのに、ちまちまmanifest.jsonの編集をする作業、まさに虚無です。

github.com

まぁこういうツール探せばどっかにあるかなと思いましたが、とりあえず自分用に作っちゃいました。manifest.jsonをUnityEditor上で直接編集するツールです。機能としては、

  • Packageの追加・編集
  • Registry URLの追加
  • Git Packageの更新
  • scopedRegistryの追加・編集

f:id:charcotte:20190922023014p:plain

Windowに項目を追加するほどでもないかと思い、PreferenceにUIを作ってみました。ここのPackage一覧に表示されるのはcom.unity以外のものです。もし自分のPackageにcom.unityとか付けてたら表示されないので注意です。

GitのPackageの更新の機能も実装しています。Gitから引っ張ってくるPackageがあると、manifest.json内にlockという項目が出てきます。Package追加時点での最新コミットのハッシュ値が記載されます。Packageを最新にしたい場合、lockの中にあるPackage情報の削除を行うことで勝手に最新のコミットをひっぱってくることができます。このlock内Package削除が非常に手間なので、右クリックで削除して更新してくれる機能を実装しました。

ScopedRegistryについては、Scopesの編集を後から行えるようにしてます。自分でたてたnpm registryに適当なPackage名でじゃんじゃんpublishしてたらScopesが大変なことに…いやだってPackage名はcom.作者名.Asset名にしたいから多種多様になるじゃんね?というわけで後からScopesの追加をできるようにしてます。

manifest.jsonの追加で時間ロスしてる人にはオヌヌメです。一気に作ったからバグだらけかもしれませんが…( ˘ω˘ )

【Unity】【C#】MessagePackCSharpのコードジェネレーターのエラー回避方法について

※作業環境:Windows10、VisualStudio2017/2019、Unity2018.3.14f

GitHub - neuecc/MessagePack-CSharp: Extremely Fast MessagePack Serializer for C#(.NET, .NET Core, Unity, Xamarin). / msgpack.org[C#]

  • V1.7.3.6のCodeGeneratorのエラー
  • 新しいCodeGeneratorを取得する
    • コードジェネレーターの生成
      • global.json
      • Directory.Build.props
      • TypeCollector.cs
      • publish.bat
    • コードジェネレーターを使う
  • 余談
続きを読む