Skip to content

LivLiv Player 0.2.1

Choose a tag to compare

@mekoand mekoand released this 06 Nov 00:36

This release corrects the sources and terms of three featured characters, and makes the player lighter and quicker. Format 4 is unchanged.

Character sources and terms, corrected

The characters/LICENSE.md in 0.2.0 said all 21 featured characters were made by the LivLiv team, and each character's meta.license pointed to that license. That was wrong for Kujira, Kujira Q and Pen, which come from other people's work. From this version:

  • Kujira and Kujira Q are under CC BY-NC-SA 4.0, not the LivLiv Featured Characters License. They are based on the community "whale girl" (鲸鱼娘): original character 溟月 by 上善无形, maid design by ZipZipPipe. Credit: "Kujira: 上善无形, ZipZipPipe (CC BY-NC-SA 4.0); model by LivLiv".
  • Pen is covered by neither the Apache License nor the LivLiv Featured Characters License. It is based on the fan character known as 咕咕嘎嘎 (Gugu Gaga penguin), made by 贱兔死顺盖 from the Administrator in Arknights: Endfield (Hypergryph), and on a photo of a figure marked "GUGA", maker unknown. LivLiv holds no rights in this character and grants none. If you hold rights in it, CREDITS.md says how to reach us.
  • The other 18 keep their terms.

The art and models of the three are unchanged; only the author and license in their meta are different. If you took them from 0.2.0, follow characters/CREDITS.md, which has the sources and credit lines, and not the license in the 0.2.0 tag.

Lighter and quicker

  • The core is about 30 KB gzipped, down from about 34. PNGTuber and VRM no longer pull in the renderer.
  • Keyforms and a layer's images are fetched together, and keyforms decode 5-7 times faster. On the refined Nana, a load blocks the page less than half as long, and a frame takes about 25 % less time.
  • Face tracking has a new option, maxFps, 'auto' by default: it looks for the face less often when that would take over half of the main thread.
  • A refused camera stops the face model's download.
  • dispose() frees every GPU buffer of a layer at once, and during a load or a start it leaves nothing behind.

VRM

  • Fixed: arms and the nod were backwards on 0.x, and the eyes looked the wrong way up and down on every VRM. The head now turns without a neck bone. Framing follows the model's own units and shape, so a model in other units no longer leaves an empty picture.
  • A file's own expressions are listed. One-sided blinks work, and so do mouths with only ih and oh.
  • load() gives the file's author and terms in model.meta, in the same shape for 1.0 and 0.x. The player does not enforce them.
  • A file is looked through before three.js parses it, and a refusal says what to do. One that names an outside URL is refused. A file compressed with Draco, Meshopt or KTX2 says it needs decoders, and configureLoader is where yours go.
  • A .vrm opened on the wrong example page says where it belongs, and the examples site brings its own three.js.

Tested on three.js 0.170, 0.186 and 0.187 with three-vrm 3.5.5, in desktop Chromium, on these files:

  • VRoid Studio: AvatarSample_A, Vita. UniVRM: AliciaSolid. VRM 1.0: Seed-san, Constraint_Twist.
  • A Meebit made with the VRM add-on for Blender. It plays; it has no expressions or eye bones, so only the head and body move.
  • The add-on's own 70 test files: 54 load and 16 are refused with an error. Many are tiny test scenes rather than characters, so this shows they load, not that they are framed well.

Not tested: a fresh export from Blender, real decoders through configureLoader, and real phones. Issue #1 is still open.

Changes that may refuse what worked before

  • The format check now holds what a model's meshes would cost to a limit before anything is built, and checks every number the rig computes with. Every model we tested still loads; a damaged or hand-edited file that got through before may now be refused with a message.
  • On the example pages, ?model= opens files on the same site only.

Also

  • Player.isSupported() lets a page ask before it starts.
  • A damaged file leaves the character on screen in place.
  • Types work with node16 and nodenext.

Examples

  • Every character has a cover.webp (512 x 768, about 50 KB). The pages show it at once and fade the character in over it.
  • The examples site loads one file per character. A dropped download is tried again, then falls back to the character's folder.
  • The camera button says what the camera is for before the browser asks. A refused or missing camera gets a short note and a demo motion.
  • The gallery opens on the refined Nana and no longer switches characters by itself.

Requirements

WebGL2 and ES2023: Chrome / Edge 97+, Firefox 104+, Safari 15.4+. Tested on current desktop browsers, not yet on real phones. The notes for 0.2.0 first said "on desktop and mobile", which went further than our testing, and have been corrected.

Install

Not on npm yet: build from this repository (npm install && npm run build) and import dist/index.js.

License

Code: Apache License 2.0. Featured characters: characters/LICENSE.md and characters/CREDITS.md.

All changes: v0.2.0...v0.2.1


中文:这一版更正了三个精选角色的来源和条款,也让播放器更轻、更快。0.2.0 的角色许可写的是 21 个角色都由 LivLiv 团队制作,这对 Kujira、Kujira Q 和 Pen 不对,它们来自别人的作品。Kujira 和 Kujira Q 采用 CC BY-NC-SA 4.0;Apache 许可和 LivLiv 精选角色许可都不适用于 Pen,LivLiv 对这个角色不持有任何权利,也不授予任何权利。如果你用的是 0.2.0 里的这三个角色,请以 characters/CREDITS.md 为准。另外:核心约 30 KB(gzip),加载和每帧都更快,修了 VRM 的几处问题,格式检查更严,示例页先显示封面。目前只在桌面浏览器上测过,手机还没有测。还没有上 npm,请从仓库构建。

日本語:このバージョンでは、厳選キャラクター 3 体の出典と利用条件を訂正し、プレイヤーを軽く、速くしました。0.2.0 のキャラクターライセンスには 21 体すべてを LivLiv チームが制作したとありましたが、Kujira、Kujira Q、Pen については誤りで、この 3 体は他の方の作品がもとになっています。Kujira と Kujira Q は CC BY-NC-SA 4.0 です。Pen には Apache License も LivLiv Featured Characters License も適用されず、LivLiv はこのキャラクターについて権利を持たず、許諾もしません。0.2.0 のこの 3 体をお使いの場合は、characters/CREDITS.md に従ってください。そのほか、コアは gzip で約 30 KB になり、読み込みと毎フレームの処理が速くなりました。VRM の不具合をいくつか修正し、フォーマットの検査を厳しくし、サンプルページは最初にカバー画像を表示します。テストはデスクトップのブラウザのみで、スマートフォンではまだ行っていません。npm にはまだ公開していないので、リポジトリからビルドしてください。