ProjectTinyを眺めてみる その1
プロジェクトを開く
今回はProjectTinySamples/Tiny3D
を開きます。
眺める
プロジェクト自体は風車がくるくる回るだけのようです。
このシーンで用意されているスクリプトは2つあります。
Assets/Scripts/Components/Rotate.cs
回転に必要な要素を持つコンポーネントです。
using UnityEngine; using Unity.Entities; namespace Tiny3D { [GenerateAuthoringComponent] public struct Rotate : IComponentData { public float speedX; public float speedY; public float speedZ; } }
GenerateAuthoringComponent属性
これはGameObjectをEntityに自動で変換してくれるものです。
今までIConvertGameObjectToEntity
を継承したクラスを作り、EntityManagerにコンポーネントをセットする必要がありました。
Assets/Scripts/Systems/RotationSystem.cs
using System; using Unity.Burst; using Unity.Entities; using Unity.Mathematics; using Unity.Transforms; using Unity.Tiny; using UnityEngine; namespace Tiny3D { public class RotationSystem : SystemBase { protected override void OnUpdate() { float time = (float)Time.ElapsedTime; Entities.ForEach((ref Rotate rotate, ref Rotation rotation) => { quaternion qx = quaternion.RotateX(time * rotate.speedX); quaternion qy = quaternion.RotateY(time * rotate.speedY); quaternion qz = quaternion.RotateZ(time * rotate.speedZ); rotation.Value = math.normalize(math.mul(qz, math.mul(qy, qx))); }).ScheduleParallel(); } } }
SystemBase
Systemを実装するのに必要なクラスになります。一連のライフサイクルイベントが定義されおり、全てメインスレッドで動作します。
- OnCreate()
- GameObjectのAwake関数にあたります。
- OnStartRunning()
- GameObjectのOnEnable関数にあたります。
- OnUpdate()
- GameObjectのUpdate関数にあたります。
- OnStopRunning()
- GameObjectのOnDisable関数にあたります。
- OnDestroy()
- GameObjectのOnDestroy関数にあたります。
ProjectTinyを眺めてみる その0
準備
フォルダ構成
- RuntimeGeometry3D
- 動的メッシュを作成するサンプル
- Tiny2D
- シンプルな2Dサンプル
- Tiny3D
- シンプルな3Dサンプル
- TinyAquarium
- Shurikenを使ったサンプル
- TinyFactory
- コードなしのアニメーションのサンプル
- TinyGems
- 2Dのゲーム
- TinyKitchen
- 高度なオーサリングフローを使用しているゲーム
- TinyPhysics
- 入力とPhysicsを組み合わせたサンプル
- TinyRacing
- ゲームに必要な機能が揃っているレースゲーム
- TinySpaceship
- 2Dのゲーム
- TinyTime
- テキスト・スキンメッシュレンダリングとライティングを動的に変更するサンプル
最後に
サンプルがしっかりあるのでDOTSを知るには良さそうでした。
3DVTuberになるためのツールまとめ
[更新履歴]
2020/08/29:VMagicMirrorを追加。
2020/09/01:VMagicMirrorのリンクを追加。
ツールの組み合わせ
VMC
VRMモデルを全身動かしたいだけれあればこれ単体でできる。トラッカーがない場合は足などがIKで動く。
VMC + LIV
VMCで読み込んだモデルをゲーム内に反映させたい場合はこれ。
VMC + EVMC4U + CineSwitcher
VMCで読み込んだモデルをVR空間で物を持たせたりなどのシステムを組みたい場合はこれ。
CineSwitcherがなくても実現できるが、カメラワークが欲しくなるためセットであると良い。
各ツール説明
OBS
配信ツール。グリーンバックなどで透過できます。割愛。
Open Broadcaster Software | OBS
VMC(VirtualMotionCapture)
VRMを読み込み、VR機器のトラッカーでトラッキングして、自分の動きをモデルに反映してくれる便利ツール。背景色を変えられるのでそのままOBSに流すだけで簡単に使える。
EVMC4Uなど他ツールにVMCの情報を送信するには、有料版を購入するか、GitHubにあるソースコードを自前でビルドする必要がある。
sh-akira.github.io
EVMC4U(EasyVirtualMotionCaptureForUnity)
VMCと連携してトラッキングしたモデルをUnity上に表示できる。コメントに合わせてギミックを出したりとUnity上で動かす必要があるため凝ったことをしたいなら必須。
VMCが情報を送信する必要があるので、VMCは有料版もしくは自前ビルドが必要。
github.com
waidayo
表情のキャプチャができるツール。舌、ほっぺ、眉などのブレンドシェイプができる。VMCに対応しており、キャプチャ情報を送ることでVMC上のモデルに反映できる。
ただし、顔認証機能のついたiPhoneもしくはiPadが必要。
github.com
Luppet
WebカメラとLeapMotionでトラッキングしてVRMモデルに反映させるツール。頭、目パチ、手、指のトラッキングができ、バストアップに特化している。
Webカメラ、LeapMotion、Luppetの3つだけなので値段が高くてVR機器に手が出せない人にオススメ。個人だと5000円のライセンスなので、他機材と合わせても2万円前後から始められる。また、顔や指の細かい動きを表現したい人にもオススメ。
luppet.appspot.com
VMagicMirror
Webカメラとマイクがあれば頭トラッキングとリップシンクができる。キーボードやマスウを操作すれば手と腕がIKで動くので、トラッカーがない人でもそれっぽく動けるのが特徴。グリーンバッグができるのでそのままOBSに流せる。
booth.pm
LIV
SteamでVR空間にモデルを合成するツール。Webカメラ・キャプチャカードを使うと実写合成、フルトラッキングしたいならViveトラッカーが必要。実写の場合はグリーンバックが必要。
VMCでは仮想Webカメラとして入力することで合成できる。
store.steampowered.com
LIVで合成 · sh-akira/VirtualMotionCapture Wiki · GitHub
参考文献
VSCodeでデバッガに引数を渡す方法(Python) 2020/5現在
前書き
久しぶりにVSCodeでPythonのデバッグをしたく自分のブログを見たら、バージョンが古すぎて参考にならなかったので書き直しました。
引数などの説明は過去の記事を参考にしてください。
eorf.hatenablog.com
手順
1. Runをクリックし、メニューを表示。
2. open a folder
をクリック。
3. ワークスペースにしたいフォルダを選択する。
4. Runを押す。
5. create a launch.json file
をクリック。
6. Python File Debug the currently actice Python file
をクリック。
7. launch.jsonが開く。
8. 引数を設定する。
"args": [ "args1", "args2" ]
を追加。
jsonなので上の行の末尾にカンマを忘れないように。
9. 実行して引数が渡ってることを確認する。
最後に
ドキュメントを読まなくても設定できるくらいには簡単でした。
【Unity】2019.3でプロジェクトが開けない問題
前書き
いろいろ試したのでメモ書き。
環境
Unity 2019.3.0f6
・Asset Pipeline v2 使用
背景
2018.4から2019.3に移行して作業をしていると、唐突にプロジェクトが開けなくなりました。
プロジェクトを開こうとしてもImportingで止まり、新規プロジェクトを作成しても止まりました。
Libraryフォルダを消したり、プロジェクトファイルを落としなおしたり、Unity 2019.3、Unity Hubを再インストール、ユーザーフォルダに入っているUnityのファイルを全て削除などをしましたが、ダメでした。
解決方法
Assetsフォルダと同階層にadb1.txt
を作成し、プロジェクトを開く。
adb1.txt
は空のままで大丈夫です。
これだけです・・・。
どうやらImportingが止まるのはAsset Pipeline v2に起因しているそうです。
そして、adb1.txt
を置くとコマンドラインで-adb1オプションを付けたのと同じ効果が得られます。
【追記】2/17 Asset Pipeline v2で開く方法
- 上記の方法でプロジェクトを開く
- キャッシュサーバーをDisableにする
- プロジェクトを閉じる
- adb1.txtを削除
- 再びプロジェクトを開く
私の環境だとキャッシューサーバーをDisableにすると問題なく開けました。
最後に
お気持ち。
Twitterではてなブログのサムネイルが更新されない問題
解決方法
ここのサイトにジャンプ
cards-dev.twitter.com
CardURL
にツイートしたい記事のURLを入れて、Preview card
を押す。
Getting started
にツイート時のプレビューが表示されるので、表示された記事リンクに飛ぶ。
記事に飛んだら、記事のツイートボタンを押す。
これで反映される。
最後に
ツイートしたら違うサムネイルで焦った。
【Unity】Androidビルドでエラー"maxAspectRatio not found"
環境
Unity 2019.3.0f6
ビルド設定
・Minimum API Level - Android7.1 'Nougat' (API Level 25)
・Target API Level - Android7.1 'Nougat' (API Level 25)
Oculus Quest
・Android version 7.1 (API Level 25)
背景
元々、2018.4.6f1でAndroidビルドできていたものを、2019.3.0f6に移行した時に起きた問題です。
基本的にビルドに関わるところは、何もいじらない状態で行っています。
また、Oculus Quest
で起きた問題ですが、Androidバージョン7.1 (API Level 25)
のデバイスであれば、今回の問題にぶち当たる可能性があります。