Notifications
bg
fantom
developer - Programmer
Tokyo, Japan
0
Likes
14
Followers
2
Connections
All
Articles0
Games0
Showcases4
Column4
Jobs0
とりあえず Bunny83さんの「UnityWindowsFileDrag&Drop」を導入して、
https://github.com/Bunny83/UnityWindowsFileDrag-Drop
ファイルのドロップ機能が実装できたので情報共有だけしておきます(ググったけど、あまり見かけなかったため)。

やってみたらとても便利ですね。少なくともPCアプリにはこの機能標準で欲しい(笑)。
しばらくは試験運用的に導入という感じですが、これができると素材のドロップが容易になるので、まだまだ色々発展できそうですね。このプラグインはドロップした座標も取れるので、UIとの座標との位置を比較すれば、ドロップする位置で用途分けなんかもできそうですね。

元々素材のロードは非同期で読み込まれるように実装していたので、少し手を加えて、複数ファイルのドロップにも対応させました。ドロップされたファイルは順次ロードされます。このアプリの場合、同種類のファイルでは意味がありませんが、例えばアバター(vrm)&モーション(bvh)&背景モデル(gltf)&音楽(wav)を同時にドロップすると順次ロードされていきます。こういった機能はUnityアプリではあまり見かけないので(まぁ、ゲームでは使いませんが(笑))、今後ツール的なアプリが増えてきたら便利かもですね(通常の Winアプリではドロップ対応なんて普通ですしね)。

私の場合イレギュラー的な質問ばかりで申し訳ないですが(笑)、なんせ情報が少ないものはちょっとでもアドバイス貰えると開拓のヒントにもなります(私自身もググったり調べたりしてますが、同じ情報を得ているということは、それだけ支持があるという根拠にもなるので)。ありがとうございます!

tamtam
2 months ago
おー、私も同じ環境だった気が・・・。会社で試していたので、週明けまた確認してみます。
fantom
2 months ago
そう言えば環境書き忘れました(笑)。 ビルドは Unity 2018.2.1f1 でやってます。Windows10(x64) で .NET 4.x にしてます(たぶん .NET 3.x でも行けると思います)。 私もまだ色々なバージョンでは試してないので、何かわかったら報告しますね(特に環境による不具合ってエラーが出ないことも多いので、原因追求は難しいんですよね。なので最後は情報が決め手になることが多い(笑))。
tamtam
2 months ago
おお、動いたんですね!(自分は動かなかったけど、何が足りなかったんだろう・・・)
ダメ元でちょっと質問です。

Windows ランタイム時に、アプリにエクスプローラからファイルのドラッグ&ドロップで、ファイルパス取得する方法ってありせんかね?

まぁ、Qiita にも以下のような記事はありますが…。

unity > ファイルのDrag&Dropは対応していないようだ
https://qiita.com/7of9/items/f8cd7659e73ecfa61106

とりあえず標準ではないと思うので、プラグインアセットや、場合によってはハック的なものでも良いです。ウインドウハンドルとかWindowsメッセージ取得とか、ググると少し出てきますが、不安定だったり、まとまったアセットみたいの見つからないんですよね…。

まぁ、あっても常にイベント監視みたいのだと負荷が高過ぎて、今作ってるアプリでは使うのは難しそうだけど…(笑)。

unity > ファイルのDrag&Dropは対応していないようだ - Qiita
https://qiita.com/7of9/items/f8cd7659e73ecfa61106
fantom
2 months ago
アドバイスありがとうございます! やはり Bunny83 さんのですかね~。ご本人がコメントしてるのもあったし、海外では使われてるみたいなので。実際に単体で試してみたら、上手くパス取得できるようです。 https://answers.unity.com/questions/212457/drag-from-desktop-into-application.html 他にもやり方みたいのはありますが、安定性や色々ゴニョゴニョしないといけないとあるので、少し手間がかかりそうですしね。 https://twitter.com/tsubaki_t1/status/705369976790605824 https://qiita.com/DandyMania/items/d1404c313f67576d395f せっかくなので、ダメ元で私もVoteしておきました(笑)。[+10] Unity は最早ゲームエンジンの枠を超えて、色々なツールなどにも使われるようになりましたから(VRoid Studioもですね)、ファイルのドラッグ&ドロップくらいは標準で欲しいですね。ちなみに Bunny83 さんのプラグイン(というかdllも無く、APIコールしかしてない)は超簡単で MIT License なので誰でも使えそうですね。とりあえず VRMLiveViewer はβ版だし、実験も兼ねてアプリにも組み込んでみよう。ダメでも削除するの簡単だし(プラグインってモノによってはアンインストールするとプロジェクト壊れるときがあるんですよね)。誰か使ったことある人いないかな…?
ゆに丸1号
2 months ago
要望が上がっているので、良い方法は無いのだろうなという感じがしますね…。 ログインしてこちらに vote すると実現可能性は高まるかもです。 https://feedback.unity3d.com/suggestions/runtime-file-drag-and-drop-for-osx-and-windows
tamtam
2 months ago
ググってみたらこんなページを見つけました。ただ私の環境では動作しなかったですし、コメントを見てもやはり動作しなかった報告がありますね。なんかいい方法があればよいのですが・・・。 https://github.com/Bunny83/UnityWindowsFileDrag-Drop
お陰様で暫定リリースだったにも関わらず、とても人気が出てしまったので、ついつい開発に没頭してしまいました(笑)。

で、以前BVH モーションファイルのエラーについて、またいくつか新たな認識が深まったので、修正も兼ねて情報を共有しておきます(あまり必要ないかも知れませんが、今後同じような問題にぶつかる人のために)。

エラーは単純にUniVRMの「UniHumanoidのBVH判定を修正」(v0.42)で改善されました。
https://github.com/dwango/UniVRM/releases

ライブラリを v0.42 にアップデートしたらエラーが出なくなりました。またエラーが出なくなった代わりに、モーション自体がおかしく再生されました。それで気づいたんですが、どうやら今までエラーが出ていたのは「Z-up右手座標系」で作られたBVHファイルのようですね。UniVRMはOpenGL系のライブラリなので(Y-up右手座標系)、そこでエラーが出てたっぽいです(Unity上では「Avatar is invalid」としか出なかったので、原因を特定できなかった→以前はY-up右手座標系以外のものはエラーが出ていた?)。

試しにカーネギー・メロン大のデータベースのモーションキャプチャーデータ
https://sites.google.com/a/cgspeed.com/cgspeed/motion-capture
で「Daz-friendly version」(Y-up右手座標系)以外を使ったら、同じようにおかしく再生されました(例えば「3dsMax-friendly version」は Z-up右手座標系なので)。まぁ、原因の1つであったことは間違いないでしょう(計算がおかしくなるので)。

もしかしたら、「Z-up右手座標系とY-up右手座標系の変換ツール」みたいのがあれば、何でも使えるようになるかも知れませんね。ググったけど見つからなかったので、知ってたら教えて下さい。Z-up右手座標系とY-up右手座標系の変換のロジックでも良いです。BVHってただのデータしかないから(メタデータみたいのが無い)、Z-upとY-upの情報とかも無いですしね。

 * * * * * * * * * * * *

最後はちょこっと進捗(笑)。

歌モノをやり始めると少し口パクが寂しかったので、何とかしたいな~と考えてましたが、とりあえずマイクでのリップシンクを実装しました。それがこの動画です。自分がマイクに向かって歌うとキャラも同じように歌います(笑)。

あとは、モーションを簡単に作れるものとかあったらなぁ…。やはり OpenCV とかになるんですかね?もしくは「動画解析→BVH」みたいのとか無いかな(笑)。

まぁそれでも、初期のバージョンからすると、色々できるようになったとは思います。これで素材の有無に依らずに楽しめるようになったら完璧なんですが…(笑)。

興味があったらぜひ遊んでみて下さい。面白いアイデアなどあったら何でも良いので教えて貰えると嬉しいです(実装できるか否かは別ですが、アイデア段階では制限ない方が良い(笑))。
http://fantom1x.blog130.fc2.com/blog-entry-309.html

tamtam
2 months ago
いつの間にかリップシンク機能も付いていてすごい!
以前チラリと「VRMを応用した動的ARキャラもできそう」と言いましたが、少し前に作ったARCoreとVRMRuntimeLoader組み合わせたら、簡単に現実世界に召喚できました(笑)。

まぁ、ただのテストなので取り留めのない動画ですが、予めモデルをアプリに入れてビルドしなくても良いのがメリットですね。いつでも好きなキャラを入れ替えたり、追加したりできるのが嬉しい(動画では長くなるので、ストレージからの読み込みはカットしてます)。

う~む、これで先日の「Facial AR」みたいなもので、表情をリアルタイムで変えられたら楽しい気がするなぁ…(笑)。できれば Android の内カメラで顔認識とか簡単に導入できるものはないものか…?

tamtam
3 months ago
どんどん改良されていてすごい! どこまで発展していくのか楽しみです。Androidで今使えるフェイシャルキャプチャみたいなもの、どんなのがあるんですかねぇ。(Androidの開発環境に詳しくなくていつもすいません・・・)
fantom
updated the project
Aug 27, 2018 3:17 PM
VRM Live Viewer
http://fantom1x.blog130.fc2.com/blog-entry-309.html 思ったより動的にVRMを読み込んで動かすのが楽しかったので、色々研究しているうちに、VRMでもダンスをさせることに成功。せっかくなので、誰でも遊べるようにアプリとしてビルドしてみた。 またVRMの本来の用途はVRChat やバーチャルキャストが中心となるため、Android版として作っていたものを、急遽Windowsにも対応させた。楽しんでくれる人が一...
Showcase
ちょっと宣伝も入ってしまいますが、以前「雪を降らせる」で作った C# Job System の使用例を、アセットストアにて公開している Androidプラグインの最新版に同梱したので、興味のある方はサンプルコードもダウンロードできるようになりました(主に「JobMoveSample.cs」にまとめてある。従来型の「ClassicMoveSample.cs」と比較するとわかりやすいと思う)。
http://u3d.as/1224

スクリプト自体は Android 以外でも使えます。またアセットストアの規定上、他人の素材を使えないので、内容的には空飛ぶ謎の物体(笑)に変更しています。モデルと飛ぶ方向を変えれば「雪を降らせる」ことも可能ですね。

また今回からapkビルドするのが面倒という人のためにも、予めデモをビルドしたものをブログのQRコードからダウンロードできるようにしました。
http://fantom1x.blog130.fc2.com/blog-entry-293.html
Android端末をお持ちなら、ダウンロードして即試せます。「こういう機能を導入できるよ」というデモでもあるので、アプリ開発している方は参考にでもして下さい。今回は開発補助的なツール(CPU使用率、フレームレート計測、独自ギズモなど)を中心に機能追加しました。

C# Job System の使い方に関しては改めていずれ、ブログなどにまとめると思います。ただ、ECS に関しては少し研究を据え置きすると思います。というのは使ってみてわかったんですが、ECSってまだ開発途上なので、インストールするバージョン(パッケージマネージャーでインスト、または manifest.json に書く)によっては一部機能が使えたりそうでなかったり(参考にしている記事と合わない)、マイナーバージョンアップでもいきなりメソッドの仕様変更されたりしてますね。なので、せっかく書いても今後も使えるとは限りません。「Unity2018.3.0以降でECS強化する」と公式ブログにも書かれてましたが、現段階では導入も面倒で、かつ安定性も問題あるかもですね(インストするバージョンにもよると思うが、下手するとフリーズする)。まぁある意味、アンセーフなコードをC#上のサンドボックス内で動かすシステムというか(何か矛盾してる文言ですが(笑))、使える用途や確実に動かすにはそれなりの設計力はいるかもですね。C++みたいな低レベルプログラミング得意でシステム作れる人なら使いこなせるかも知れませんが…。

ただ、C# Job System だけなら、理解できれば導入も含め、それほど難しくはないです。ただこれも現在は用途が限定されると思うので(値型のみで、参照型があまり使えないため、複雑なシステムで色々な値を参照するものなどには使いづらいと感じた。エフェクトや演出など直接システムに関わらないものの方が使いやすい気がする)、まだまだこれからという感じかもですね。まぁ、特に3Dに関しては少しでも負荷を軽減することは宿命みたいなものなので、勉強する価値はあると思います(笑)。

fantom
2 months ago
そう言えば、このCPU使用率取得の機能、Android 8.0 では動かないみたいですね。調べたらセキュリティ強化のため、CPUのログ(proc/stat)にアクセスできなくなったのだとか。う~ん、Android 8.0 で他の方法無いかな…?orz
tamtam
3 months ago
マルチスレッドで動いているようですね。fantomさんが言う通り「特に3Dに関しては少しでも負荷を軽減することは宿命みたいなものなので、勉強する価値はある」だと思うので、今からでも知見を貯めておくのは損はないです。Unity 2018ではそういう新しい概念を伴う機能がいくつかあるので、私も少しずつ移行して行きたいなと思っています。
About Me
I am Japanese and not very good at English, I will write in English for the world in this space....
See more
Certifications (0)
Import
See all
fantom's liked projects (12)
Following (34)
Followers (14)