When bringing Mixamo Humanoid animations to Android,

 

When bringing Mixamo Humanoid animations to Android, set the floor at OpenGL ES 3.0 (ETC2/EAC as the standard texture compression), and, where possible, split your render path using Vulkan. Because ETC2/EAC is mandatory with ES 3.0, it’s a safe “least-common-denominator” texture baseline (ASTC is widely supported but optional).

With Nougat (7.0), Vulkan arrived on Android, reducing CPU overhead and enabling finer-grained control over rendering. From this point on, use a two-tier plan: prepare universal assets in ES 3.0 (ETC2), then scale up on Vulkan-capable devices.

On Oreo (8) through Pie (9), ES 3.0 support became broadly practical. Set your primary KPI to 60 FPS with thermal stability. As a starting point: ≤70 bones per character, ≤4 weights per vertex, 2–4 skinned characters simultaneously, compressed texture budget ≤128 MB per scene, and ≤150 draw calls. Use Animator + Root Motion for “showcase demos,” and Playables when you need fast clip switching (this split also applies below).

Across Android 10 (Quince Tart) / 11 (Red Velvet Cake), 64-bit devices became mainstream. Target up to Vulkan 1.1; limit shadows to a single Directional light at low resolution with no soft shadows; restrict post-FX to either Bloom or Color Grading. Make ETC2 the universal baseline, and provide an ASTC variant (via Addressables) for GPUs that support it.

On Android 12 (Snow Cone) / 13 (Tiramisu), Vulkan pipelines are easier to implement, and Vulkan 1.3 is recommended for new devices. Here, crank Animation Curve Compression (High) and aggressively resample/decimate clips, aiming to reduce keys per character by 30–60%, shrinking both I/O and CPU.

Android 14 (Upside Down Cake) / 15 (Vanilla Ice Cream) is the current norm. Prefer ASTC (8×8–6×6) with ETC2 fallback, enable GPU skinning, and assume URP with the SRP Batcher. Set two KPIs: 60 FPS (mid-tier SoC) and 90 FPS (high-end SoC). Start around ~300k triangles per frame, then trim shadows and material count to target ≤120 draw calls. Note: Android 15’s internal codename is Vanilla Ice Cream (14 is Upside Down Cake).


Practical Measurement Template (paste at the end of a chapter)

  • Device matrix: Three tiers (e.g., entry A-series, two Pixel generations, high-end Snapdragon). Collect 10 min × 3 runs of thermal, FPS, and memory.

  • KPIs: 60 FPS sustain rate ≥ 95%; battery/SoC temperature < 42 °C; foreground PSS memory ≤ 600 MB; jank rate ≤ 1%.

  • Asset baselines: Humanoid ≤ 70 bones; ≤ 4 skinned characters at once; compressed texture total ≤ 128 MB; ≤ 120 draw calls; ~300k tris.

  • Distribution: Ship ETC2 as default; offer an ASTC add-on pack via Addressables.

  • Issue log / fixes: Foot sliding → disable Root Motion / ground constraint; T-/A-pose mismatch → adjust arms ±5–10°; FBX up-axis mismatch → –90° at import; black materials → recreate URP materials.


Note on codenames vs. numbers

Since Android 10, public branding uses numbers only, but internal dessert codenames continue (e.g., 10 = Quince Tart, 11 = Red Velvet Cake, 12 = Snow Cone, 13 = Tiramisu, 14 = Upside Down Cake, 15 = Vanilla Ice Cream). The codenames here are included to aid readers’ memory.


Comments

Popular posts from this blog

Japan Jazz Anthology Select: Jazz of the SP Era

In practice, the most workable approach is to measure a composite “civility score” built from multiple indicators.