テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】AnimationClipの編集が出来ない時の対策

今回は簡単なトラブルシューティングです。

 

 

f:id:tsubaki_t1:20180703235908j:plain

AnimationClipを編集するのに一番手っ取り早いアプローチがAnimationエディターでRecordして、対象のオブジェクトを動かすというものです。

他にもこのAnimationClip編集機能は、アニメーションの微調整とかも出来たりと色々と便利ではあるのですが、幾つかの条件で編集出来なくなります。

 

AnimationClipがReadOnlyなのはFBXにAnimationClipが格納されているため

FBXに格納されているAnimationClipは編集出来ません。
取り出してアセットとして利用できるようにすれば編集可能になります。ただし取り出し元を編集しても取り出したアセットには反映されないので、その辺り注意が必要です。具体的には上書きするとか

tsubakit1.hateblo.jp

TimelineがPreview中はAnimationClipをRecordにできない

取り出したアセットや自分で生成したアセットでも編集出来ないといった場合があります。

この条件はタイトルの通りで、TimelineがPreviewの時はAnimationClipが編集出来なくなります。正確にはTimelineがPreview中はTimelineから作成していないAnimationClipが編集出来なくなります(つまりTimelineからComvert To Clip Trackしたアニメーションは編集可能です)

f:id:tsubaki_t1:20180704000632g:plain

対策はTimelineのPreviewを止めることですが、個人的にはTimelineウィンドウを消すがの正義です。

 

Optimized Game Objectが設定されたオブジェクトのAnimationは編集出来ない

もう一つあるとすれば、AnimatorがOptimized Game Objectになっています。これを解除すればAnimationClipが編集可能になります。

f:id:tsubaki_t1:20180704001554j:plain

なお「編集ができない」だけで編集したAnimationClipはOptimized Game Objectで使用できます。

tsubakit1.hateblo.jp

Add Propertyが押せない

Add Propertyが押せるのは、Animator(GameObjectの)を選択している時のみです。

 

f:id:tsubaki_t1:20190111115411g:plain

 

【Unity】Timelineでキャラクターの「表情」を変更する時の注意点

今回はTimelineで表情を変更する場合の注意についてです。

 

 

Timelineでキャラクターの動き等を変更していると「表情」も変更したくなります。例えばちょっとした会話シーンで表情を変更するのは、よくある事です。

 

Unityでキャラクターの表情を変更するアイディアは3つあります。

  • Textureを差し替える
  • BlendShapeを使う
  • Boneでなんとかする

今回はBlendShapeを使用するケースを想定していますが、Boneで使用した場合も少し関わりがあるかもしれません。

下のように予期しない不思議な表情になる場合は、多分この問題です

f:id:tsubaki_t1:20180702224226j:plain

またそれ以外でも少し自分が引っかかった問題について紹介します。

 

Case 1.表情のキーがセットされない

TimelineでAnimationClipをAnimationTrackに登録しても登録されない…という場合です。
これは正確にはAnimationClipが登録されているが、登録されているように見えないという問題で、キーがAnimationClipの0フレーム目にしか打たれていない場合に発生します。

f:id:tsubaki_t1:20180702225132g:plain

端的に言えば表情は変化しないのでAnimationClip0フレーム目にしか要らないので、データ節約のためにこのような形を取ることがあります。

解決法は2つで、1つ目が配置後に頑張って引っ張る、2つ目がAnimationClipに少し眺めのキーを打っておくというものです。
どちらでも良いですが、個人的にはキーを2番目の方が良い気がします。*1

 

Case 2.  表情が変化しない

さて表情のAnimationClipをセットした所ですが、次は「表情が変化しない」という現象が起こるかもしれません。

これはTimelineのAnimation実行順が問題となります。
どうもAnimationTrackは上から順に実行するらしく、上のAnimationClipの動作は下のAnimationClipの動作で上書きされるみたいです。

f:id:tsubaki_t1:20180702225737g:plain

このため最終的な表情は一番下のOverrideに設定しないと無効化されます。

Case 3.  表情がおかしな感じになる

最後に表情がおかしな感じになる場合です。
例えば表情が一切変化しなる場合や、歯茎をむき出しにするような異常な表情になる場合はこれが当てはまります。

これはTimelineにはWrite Defaultsの機能が無い事が原因です。

tsubakit1.hateblo.jp

WriteDefaultsがあればTimeline起動時の設定を初期設定としてキーを打ってないアニメーションを保管してくれるのですが、Timelineではソレが無い為、キーがなければ値を加算してしまいます。

f:id:tsubaki_t1:20180702230948g:plain

解決法は単純で、変化しないキーも含めてキーフレームを全て設定しておく事です。特定の表情のキーフレームを明確に設定しておくことで、変な表情になることを回避出来ます。
ただ同時にキーを打ったプロパティは他のAnimationClipから変更できなくなるので、複数の設定を持つ場合は注意が必要です。

f:id:tsubaki_t1:20180702231121j:plain

*1:特にUnity2017ではコレをマイナス方向に引っ張るとエディターが落ちるというバグが起こっていました。Unity 2018では今の所再現していません

【Unity】Nested PrefabやPrefabエディターが追加、新しいPrefabワークフローを触ってみた

f:id:tsubaki_t1:20180621224234j:plain

Uniteベルリンにて、Nested Prefabが可能になるプレビュービルドが公開されたので触ってみました。

追記:Unity 2018.3にて搭載されています

 

 

Prefabの階層化が出来るようになった

UnityではPrefabの中にPrefabを配置すると、親のPrefabに統合されるという問題がありました。

例えばPrefab AとPrefab Bという異なるキャラクターにPrefab Cという共通の武器を持たせた場合、反映するとPrefab Cという情報は失われ統合されます。結果、Prefab Cの内容を書き換えようと思ったらPrefab A・Bを探して書き換えるといった手間が発生することになります。

f:id:tsubaki_t1:20180621232109j:plain

 

新しいPrefabのワークフローではこのPrefabのネスト問題が解消し、良い感じに出来るようになりました。

Prefabの親とPrefabの子は明確に分けて設計出来るようになっていて、Prefabの親を変更した場合でもPrefabの子のユニークさは維持されるようになっているみたいです。

f:id:tsubaki_t1:20180621232135j:plain

f:id:tsubaki_t1:20180621230043j:plain

 

例えば2つのPrefabの中に共通のテキストプレハブを配置して、中身を書き換えてみます。Prefabが異なりますが、色を変えればちゃんと反映されています

f:id:tsubaki_t1:20180621231445j:plain

f:id:tsubaki_t1:20180621231217g:plain

 

またPrefabをGameObject側で変更した場合、何がどう変更したのかといった差分が見れるようになったみたいです。

f:id:tsubaki_t1:20180621231207j:plain

 

Prefabのバリアント

Prefabは基本的に他のPrefabとは異なるものとして扱われました。例えばImageのプレハブを複製した場合、元となるPrefabを更新しても他のPrefabには反映しません。

 

新しいPrefabワークフローではPrefabバリアントという機能が追加されました。これはPrefab毎にユニークな値を持ちつつも、変更していない内容は共有する…といった物みたいです。
例えば下のUIは上がオリジナル、下がバリアントなPrefabです。2つは独立した異なるPrefabなのですが、オリジナルを変更するとバリアントのPrefabも反映されています。

f:id:tsubaki_t1:20180621233532j:plain

f:id:tsubaki_t1:20180621233357g:plain

これは、例えばオリジナルなユニットを作った後バリアントでユニットを量産しておけば、オリジナルのユニットを変えれば全てのユニットに反映する…といった感じで使えそうです。

 

Prefabエディターの追加

通常Prefabを操作する場合は、編集用シーンに配置して操作等をしていた訳ですが、Prefab用エディターが新しく追加されました。

Open PrefabやPrefabボタンのダブルクリックでシーンとは独立したPrefabエディターが開き、編集出来るようになっているみたいです。

f:id:tsubaki_t1:20180621234140g:plain

 

プレビューのダウンロード

下のページよりダウンロード出来ます。

unity3d.com

【Unity】Unity 2018.2で「C# プロジェクト "Assembly-Csharp"は、このコンピューターにインストールされていない」が出たので、その対処

f:id:tsubaki_t1:20180617025211j:plain

Unity 2018.2にてVisual Studio経由でソースコードを編集する際、C#プロジェクト"Assembly-CSharp"はこのコンピューターにいんすとーるされていない。".NET Framework、Version=4.7.1"を対象にしています。」といった感じのダイアログが出ました。
↑のダイアログが出ると、ソースコードを追加する度にダイアログが出てきて、例え「今後この操作中にメッセージを表示しない」しても何度でも出てきます。

それの対処法についてです。

 

対処法

対処法は簡単で、.NET Framework Version=4.7.1のターゲットパックをVisual Studioに入れれば良いです。

 

ということで、パックを入れていきます。

f:id:tsubaki_t1:20180617025634j:plain

まず、ツール>ツールと機能を取得(T)を選択します。
すると暫くしてワークロード一覧が出るので「個別のコンポーネント」タブを選択します。
一覧から.NET Framework 4.7.1 Target Pack」を選択し、「変更」ボタンを押します

この後、実行中の処理が云々とか言われるかもしれませんが、無視して続けても問題なかったです。

f:id:tsubaki_t1:20180617025439j:plain

これでダイアログが出なくなりました。

 

Macの場合

Macの場合はこちら

tsubakit1.hateblo.jp