Unity

Q. ダウンロードしたSDKのzipファイルを解凍すると、途中でエラーになってしまいます。(プラットフォームに依存しないため「全般」へ移動しました)




    A. はい。無料版でも大丈夫です。

Live2Dの機能に関しては特に制限なく使うことができます。

[2015/11/02 追記]
ただし、2.1から対応したクリッピングマスク機能を使用したモデルの描画は、描画の一部にRenderTextureを使用しているため、
Unity4の場合はProfessional版ライセンスが必要となります。




    Q. 対応プラットフォームはどのようになっていますか?
    A. Unityで対応しているものであれば、どのプラットフォームでもご利用いただけます。

[2015/11/02 追記]
2.1以降のクリッピングマスク機能の対応状況は
詳しくは Cubism2.1 各プラットフォームの対応状況 をご覧下さい。



    A. OnPostRender関数、またはOnRenderObject関数から描画を行ってください。

また、Live2Dの描画モードを切り替えることでUpdate関数からでも描画することができます。
詳しくは 描画モードの設定について を参考にして下さい。





    Q. iPhone など実機に書き出したときにテクスチャの画像が圧縮されて汚くなってしまうことがあります。
    A. 回避するにはテクスチャ画像を選択し、インスペクタービューで Format を「Compressed」から「Truecolor」に変更します。

これで圧縮されずにそのままの画像を使用するようになります。




    A. モデルのテクスチャの枚数によって異なります。

テクスチャが一枚の場合は、ドローコールは一回です。
2枚以上の時は、テクスチャ切替時に増えるため2回以上になります。
詳しくは ドローコールについて を参考にして下さい。





詳しくは 描画モードの設定について を参考にして下さい。




    Q. 半透明のマテリアルを設定したゲームオブジェクトが、Live2Dのモデルの前に表示できません。
    A. Live2Dのデフォルトの描画設定では、描画の仕組み上そのようになります。

下記回避策をお試しください。

【 回避策1 
 Unityでは、複数のカメラで撮ったものが合成されます。
 別のカメラを用意しそのカメラのClear FlagsをDepth onlyにします。
Depthの値をメインのカメラのものよりも大きい値にし、モデルの上に表示させるものをそのカメラに写して下さい。

【 回避策2 】
 Unity Pro版で提供されているRender Textureを利用しても対応できます。
 Render TextureでLive2Dのモデルをゲームオブジェクトに表示します。
 そのゲームオブジェクトを扱うことで問題を回避できます。
【 回避策3 】
 描画モードを変更して下さい。
 詳しくは 描画モードの設定について を参考にして下さい。


Unityでは、Live2Dのモデルを描画するのに、GraphicsクラスのDrawMeshNow() というメソッドを利用しています。
DrawMeshNow() は、Monobehavior クラスの OnRenderObject() か OnPostRender() から呼び出す必要があります。
これらの関数は、Camera がシーン中の GameObject をすべてレンダリングし終えた時に呼び出されるメソッドとなっております。
完全に不透明なゲームオブジェクトの重なりは奥行き半透明のオブジェクトの後ろを透けて見せるための計算が終わっているため、
その後に描画されるLive2Dのモデルは半透明の計算ができず、その手前に描画されてしまいます。




    Q. Live2Dのモデルを半透明に表示させることはできますか?
    A. Unity Pro版で提供されているRender Textureを利用すると出来ます。

Render TextureでLive2Dのモデルをゲームオブジェクトに表示し、
そのゲームオブジェクト自体の透明度を変化させることで半透明表現ができます。




    A. 初期設定では表示されます。

裏面を表示したくないときは、テクスチャの設定前に以下のように設定して下さい
  1. Live2DModelUnity model;
  2. model.setCulling( true )// カリングを有効にする(裏面を表示しない)



    A. Resourcesフォルダからデータを読み込んでいるか確認してください。

StreamingAssetsを使うと、TextAssetではないバイナリデータとしてファイルを読み込むことができます。
しかし、StreamingAssetsはWeb書き出しには対応していません。





  Cleaning up leaked objects in scene since no game object, component or manager is referencing them
  Material Custom/NewShader has been leaked 4 times.
  Mesh  has been leaked 142 times.
  Shader Custom/NewShader has been leaked 4 times.
  Texture2D  has been leaked 4 times.

    A. 問題ありません。

エディタ編集時にスクリプトを実行していると、Live2Dのリソースが解放されないといった内容のエラーが出る事があります。
弊社で確認した限りでは、実際にメモリリークはありませんでした。
万が一問題が起こった場合は、Live2Dコミュニティ に情報提供お願い致します。

また、スクリプト内のエディタ編集時実行属性( クラス定義の上の方の[ExecuteInEditMode]という行 )を
削除すれば編集時にLive2Dモデルは見えなくなりますが、このエラーは消えます。
どうしても気になる方はお試し下さい。


    A. Unityエディター上で設定を変えてください。

Projectビューでテクスチャを選択し、InspectorのTexture TypeをAdvancedにします。
その後、Alpha Is Transparencyにチェックを入れ、Applyをクリックすれば設定完了です。





    A. Android端末の仕様によるものです。

現在確認している端末は以下です。
Android:F-02E

単体のモデルを表示するサンプルでは特に問題がありませんが、
SDK付属のサンプルSampleApp1のように、複数のモデルの切り替えをifなどで切り替えると重くなってしまいます。
また、モデルの行列計算もあまり多くの計算を毎フレーム行ってしまうと重くなります。

対策として、モデルの切り替えは、モデルを表示しているGameObjectのチェックでON/OFFを切り替えるようにします。
setMatrixに渡す行列も、必要最低限のものだけにします。
(SDK付属のサンプルプロジェクト Simple では、モデルの表示サイズと、モデルを表示しているGameObjectのTransformの二つで計算しています)




サブページ (2): Cs版 プラグイン版
Comments