Airtestツールを使用する時のスタック問題

今回の主な話題：Airtestツールを使用する時の動作が重い問題、Overdrawのビュー問題、ModelImporterTangents.CalculateMikk、ASTC形式のビットマップ変換、AnimatorControlleがハンギングクリップを動的管理する方法。

---
###Airtest
テストでは、戦闘が終わるまで待つ必要があります。コードにはpoco(‘UIRoot’).child(‘BattleEnd’).wait_for_appearance(100000)で実現されていますが、毎回この部分のコードを実行始めると、1、2秒ごとに画面の動きが重いことが見つけました。そして、「Poco補助ウィンドウ」を「Stop」に変更し、Deviceウィンドウも閉じましたが、動作はまた重いです。原因は何ですか？ それを解決する方法はありますか？
（テスト用設備はHuawei Honour 10です）
>自分が回答します。
>
プロジェクトにはUIを管理する管理ツールがありますから、PocoManagerにRPC方法を追加しました。
>
```ruby:
[RPC]
private object IsModuleVisible(List<object> param)
```
>そしてairコードに以下を添加します。
>
```ruby:
from poco.utils.simplerpc.utils import sync_wrapper
from poco.drivers.unity3d import UnityPoco
import time;
from poco.exceptions import PocoTargetTimeout
auto_setup(__file__)
poco = UnityPoco()
@sync_wrapper
def IsModuleVisible(module):
    return poco.agent.c.call("IsModuleVisible", module)
def WaitForAppearance(module, timeout = 120):
    start = time.time()
    while not IsModuleVisible(module):
        poco.sleep_for_polling_interval();
        if time.time() - start > timeout:
            raise PocoTargetTimeout('Appearance', module)
```
このカスタムWaitForAppearanceをコールすれば、動作の重いがなくなりました。他に何かより簡単な解決法があるかどうかはわかりません。

---
###OverDraw
SceneビューのRenderMode→Overdrawでは、ビューはオブジェクトが遮るレイヤーの数の間の関係のみを提供して、画面が描画する最終的なOverdrawではありません。このように理解できますか？
>Editorのやり方はただ不透明Shaderを半透明に置き換えて描画することですが、計算ミスが発生する可能性があります。
>
例えば、2つの不透明オブジェクトが重ねる時に、モバイル端末の不透明は1つレイヤーしかありませんが、Editorでは2つと統計されます。
>
同時に、EditorのOverdrawビューは多くのプロジェクトのカスタムShaderをサポートしていないため、対応するOverdrawビューも見られません。

---
###Mesh
最近にはUnityアップグレードの作業をしています。Unity 4の中に、Mesh接線に関する設置は下記に定義します。
ModelImporterTangentSpaceMode
Import
Calculate
None

Unity 2018では、接線インポート設定は新しい列挙です。
ModelImporterTangents
Import
CalculateLegacy：元のCalculateとsplitTangentsAcrossSeams＝falseに対応する
None
CalculateMikk
CalculateLegacyWithSplitTangents：元のCalculateとsplitTangentsAcrossSeams＝trueに対応する

このCalculateMikkの意味は何ですか？Unity公式ドキュメントに下記のように記載されています。
Calculate tangents using MikkTSpace (default).
Vertex tangents are calculated with Morten Mikkelsen’s tangent space algorithm (“MikkTSpace”). This algorithm is used by many 3D modeling packages, normal mapping tools and graphics engines.
現在、CalculateLegacyとCalculateMikkの詳細な違い、つまり、CalculateLegacyをいつ使用する必要があるのか​​、CalculateMikkをいつ使用する必要があるのか​​がわかりません。
>DCCがどのように生成されるかを確認してください。モデルにTBがある場合は、生成する必要はありません。SPなどの比較的新しいDCCを使用する場合は、MIKKTを使用します。ツールが古い場合、Legacyを使用します。本質は、エンジンとDCCのTBを一致にさせることです、これで法線マップ効果の一致は保証できます。

---
###Texture
（1）Sketchfabで1つモデルを買いましたが、テクスチャファイルに1つのASTCファイルが見つかりました。何か本当の画像BMPファイルになさせる方法ありますか？
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/639bc47b-2e15-712b-7341-b6524cfac339.png)
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/096cf563-81fd-31cc-e4fc-2a3029260a48.png)
（2）ASTCテクスチャをjpg形式のテクスチャにエクスポートするにはどうすればよいですか？
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/a6c848fb-c73e-1173-f03f-dc42562aa5fb.png)
>（1）実際に、ASTC形式は効果のより良い形式です。しかし、Unityエンジンにロードし、Texture2Dを読み取らせてから、ビットマップ形式に変換することはできます。
>
同時に、[ImageConversion方法](https://docs.unity3d.com/ScriptReference/ImageConversion.html)を使用して、最終的にそれをビットマップに変換することもできます。
>
またはASTC形式テクスチャを読み取るツールを検索でき、ビットマップに直接変換できるかどうかを確認できます（これは検索していませんが、自分でGoogleしてください）。
>
（2）これは役に立ちます。
https://docs.unity3d.com/560/Documentation/ScriptReference/Texture2D.EncodeToJPG.html

---
###Animation
質問したいです。現在のMMOゲームキャラクターのアニメーション管理は自分で書いたステートマシンが再生するLegacy動画ですか？あるいは現在のAnimatorで作りますか？

Animatorで作りたい場合、すべてのアニメーションをステートマシンにドラッグする必要があるようです。数百のアニメーションを同時にロードすると、メモリが非常に浪費です。何か実行中にアニメーションステートマシンのmotion情報を動的変更する方法はありますか？またはステートマシンを最適化する方法は？

①
>AnimationClipを動的にロードできます。そして状態バインドのAnimationClipを置き換えることができます。
詳細については、公式マニュアルを参照してください：[Animation Override Controller](https://docs.unity3d.com/Manual/AnimatorOverrideController.html)

②
> Playableを試してください、Clipを動的にロードできます。欠点は自分でステートマシン管理を1セット書く必要があります。

---
UWA Technologyは、モバイル/VRなど様々なゲーム開発者向け、**パフォーマンス分析**と**最適化ソリューション**及び**コンサルティングサービス**を提供している会社でございます。

今なら、UWA GOTローカルツールが**15日間に無償試用**できます！！
よければ、ぜひ！

UWA公式サイト：https://jp.uwa4d.com
UWA GOT OnlineレポートDemo：https://jp.uwa4d.com/u/got/demo.html
UWA公式ブログ：https://blog.jp.uwa4d.com