おもちゃラボ

Unityで遊びを作ってます

SWITCHの映像がTVモードで途切れるときに試すべき5つのこと

SWITCHをテレビにつないでTVモードで遊んでいると、画面が真っ暗になったり、一瞬だけ暗くなってすぐにゲーム画面に戻ることが良くありました。うちの場合はSHARPのAQUOSを使っていて、この映像が途切れる現象が頻発していました。

f:id:nn_hokuson:20171031194744j:plain

そこで、この映像が途切れる問題を改善するために試した5つのことをまとめておきます。ちなみに・・・うちの場合は「HDMIケーブルの交換」が有効でした。

ドッグに本体がちゃんと差し込まれているかを確認する

ドッグとSWITCHの接触不良で映像が途切れることがあるようです。しっかりとSWITCH本体がドッグに差し込まれているかを確認してみましょう。

無線LANルータなど電波環境の悪いところには置かない

無線LANルータや電子レンジなど、比較的強い電波を発するモノの近くにSWITCHのドッグを置くとHDMIの信号線にノイズが乗って映像が乱れることがあるようです。これらの機器からは少し距離を離してドッグを設置してみましょう。

f:id:nn_hokuson:20171029115346p:plain:w120

HDMIケーブルを交換してみる

SWITCHに標準で付いてくるHDMIケーブルはフェライトコアの付いていないHDMIケーブルです。フェライトコアとはHDMIケーブルの先端付近についている円柱状のもので、これがあることで、HDMIの信号に乗るノイズをカットすることができます。
うちでは、このフェライトコア付きのHDMIケーブルを使うことで映像が途切れる現象が全くなくなりました。

映像の解像度を変更してみる

SWITCH本体の「設定」⇢「テレビ出力」⇢「テレビの解像度」から解像度を変更してみてください。オーバースペックな解像度を使っていた場合、SWITCHの処理が追いつかずに映像が途切れることがあるようです。

f:id:nn_hokuson:20171029113954j:plain

別のテレビでも映像が途切れるか試してみる

現在使用しているテレビとは別にテレビやモニタがをお持ちの場合は、そちらを使って遊んでみましょう。別のテレビでは映像が途切なかった場合、ご使用中のテレビとSWITCHの相性が悪いことが考えられます。SHARPのAQUOSとは相性が悪いことがあるようです。

逆に、どのテレビでも映像が途切れる場合にはSWITCH本体やSWITCHドッグの初期不良が考えられます。任天堂のカスタマーセンターに連絡してみるのが良いかもしれません。

www.nintendo.co.jp

【Unity】パーティクルに複数の種類のテクスチャを使う

Unityのパーティクルには、テクスチャだけでなく3Dモデルも指定できるようになっています。

tsubakit1.hateblo.jp

3Dモデルであれば、1つのParticle Systemで複数種類のパーティクルを発生させる事ができますが、テクスチャの場合は基本的に1種類しか指定できないようになっています。

つまり、円なら円のパーティクル、星なら星のパーティクルというように、何種類もテクスチャを混ぜたパーティクルが作れないのです。

(↓普通のパーティクル・・・)
f:id:nn_hokuson:20171024195041g:plain

といっても、複数種類のパーティクルが全く作れないわけではなく、すこしトリッキーですが、複数種類のテクスチャを混ぜたパーティクルを作る方法がUnityには用意されています。

ここではその方法を紹介したいと思います。

テクスチャを用意する

複数種類のパーティクルテクスチャを使うにはテクスチャアニメーションに使う仕組みを利用します。まずは使いたいテクスチャを縦に並べた1枚の大きなテクスチャを作成して下さい。

f:id:nn_hokuson:20171024195633p:plain:w100

上の図で細い枠線は分かりやすいように入れていますが、実際には不要なので、Photoshopなどで背景は透明にしておいて下さい。

Unityでパーティクルを作成する

作成したテクスチャをUnityのプロジェクトウィンドウにドラッグ&ドロップして下さい。背景を透過する場合は、テクスチャのインスペクタで「Alpha Is Transparency」にチェックを入れておきます。

f:id:nn_hokuson:20171024200620j:plain:w280

次にテクスチャに対応するマテリアルを作成します。プロジェクトウィンドウで右クリックし、「Create」→「Material」を選択し、マテリアルを作成して、いま登録したテクスチャを指定して下さい。

マテリアルのShaderは「Particles/Additive」とか「Unlit/Transparent」など、お好みのものを選択しておきます。

f:id:nn_hokuson:20171024200819p:plain:w280

複数テクスチャを指定するパーティクルの設定

最後にParticle Systemのインスペクタで、パーティクルに複数のテクスチャを指定できるように設定します。Particle Systemの「Texture Sheet Animation」の項目を次のように設定して下さい。

項目 設定値
Tiles X=1、Y=テクスチャの種類数
Animation Single Row
Random Row オン

また、「Renderer」のMaterialに上で作成したマテリアルを指定します。設定後、Particle Systemのインスペクタは次のようになりました。

f:id:nn_hokuson:20171024201404j:plain:w280

実行してみる

上のように設定後、実行してみて下さい。次のような感じで、1つのParticle Systemを使って複数種類のテクスチャを表示できました。

f:id:nn_hokuson:20171024201810g:plain

このように、Texture Sheet Animationを使うことで、複数の種類のパーティクルを発生させることができます。覚えておくと使える・・・かもです!

【Unity】ZBrushで作ったモデルをアニメーションさせる方法

ZBrushで作った3DモデルをUnityで動かす方法を紹介します。ZBrushからUnityにインポートする手順の大まかな流れとしては次のようになります。

  1. ZBrushでリトポロジーを行いfbx形式でエクスポート
  2. Blenderでボーンを入れる(リギング)
  3. Unityでアニメーションの設定をする

f:id:nn_hokuson:20171015111834j:plain

それでは、ZBrush・Blender・Unityで行う各工程の詳しい流れを紹介していきます。

ZBrushでモデルをエクスポートする

ZBrushで作成したモデルはそのままではポリゴン数が多すぎてUnityでは動かすことができないので、まずはZBrush上でポリゴン数を減らします。ポリゴン数を減らすためにはZBrushの機能であるZRemesherを使います。

※ZRemesherはZBrush Coreでは使用できないため、通常版のZBrushが必要になります。

「Geometry」→「ZRemesher」を選択し、「Target Polygons Count」でポリゴン数を調節します。調節後にZRemesherボタンを押すとリトポロジーが行われ、ポリゴン数を減らしたモデルが完成します。

f:id:nn_hokuson:20171015102936j:plain

今回は、ディテールが残るくらいの3000ポリゴンまで減らしてみました。ゲームによってはもう少し減らして、Blenderで手直ししたほうが良いかもしれません。

f:id:nn_hokuson:20171015103147j:plain

ポリゴン数が減らせたら、fbx形式またはobj形式で書き出しましょう。「FIle」→「Export」で前述のファイル形式を選択して3Dモデルを書き出して下さい。

ZBrushの基本的な操作に関しては、こちらが参考になりました。

Blenderでボーンを入れる

ZBrushで書き出したfbxファイルをBlenderにインポートしてボーン(Blenderではアーマチュアと呼びます)を入れます。ボーンの入れ方は次の記事で説明しているので、これを参考にしながらボーンを入れて下さい。

人型のボーンを入れたい場合は、下の記事のようにBlenderのRigfyという機能を使うと簡単にリギングができるので、オススメですよ!

nn-hokuson.hatenablog.com

もし、Rigfyを使わずに自分で1からボーンを入れたい場合にはこちらの記事を参考にして下さい。動物やクリーチャーのような人型のボーンでは対応できないモデルに対してはこちらの方法を使います。

nn-hokuson.hatenablog.com

今回はこんな感じにボーンを設定しました。

f:id:nn_hokuson:20171015103702j:plain

ボーンを設定できたら、fbx形式でエクスポートします。fbx形式でエクスポートするには、メニューバーから「ファイル」→「エクスポート」→「fbx」を選択します。

Unityでアニメーションの設定をする

最後に、作成したモデルをUnityにインポートしてアニメーションさせましょう。Blenderで書き出したfbxファイルをプロジェクトウィンドウにドラッグ&ドロップしてUnityにインポートします。

プロジェクトウィンドウでモデルを選択して、インスペクタでRigタブをクリック、「Animation Type」を「Humanoid」に設定して「Apply」ボタンを押して下さい。

f:id:nn_hokuson:20171015104430j:plain

これで、3Dモデルのボーン設定ができました。あとは好きなAnimation Clip(Humanoidタイプでないと正しく動きませんが・・・)をモデルにドラッグ&ドロップすると、自動的にAnimatorとAnimation Clipが設定されます。この状態で実行すると、ZBrushで作ったモデルがアニメーションします。

f:id:nn_hokuson:20171015105038j:plain

3Dモデルにアニメーションを設定する詳しい方法は、上で紹介した「Blenderで人型のボーンを入れて、Animatorで走るアニメを再生する」の記事の他に、こちらの記事が参考になると思います。

nn-hokuson.hatenablog.com

nn-hokuson.hatenablog.com

ZBrushで作ったキャラクタにPerfumeのダンスを踊らせてみたら、次のようになりました!3000ポリゴンと少々重めのモデルですが、案外普通に動いているのが分かるかと思います。

f:id:nn_hokuson:20171015105757g:plain

まとめ

ZBrushで作ったハイポリゴンのモデルをリトポロジーしてUnityでアニメーションする方法を紹介しました。まとめると、まずはZBrushでZRemesherと使いポリゴン数を減らします。次に、BlenderでRigfyなどを使ってボーンを設定し、最後にUnityでアニメーションの設定をおこないました。

[asin:B00CBSPKOU:detail]