npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

untitled-pixi-live2d-engine

v1.0.0

Published

PixiJS v8 Live2D Engine | Supports Cubism 25 SDK | Lip-sync & Parallel Motion

Readme

untitled-pixi-live2d-engine

NPM Version Cubism version

English (Current) | 简体中文

A Live2D rendering and control plugin designed for PixiJS v8.

This project aims to provide a unified, concise, and highly maintainable API for loading, rendering, and interacting with Live2D models on the Web.
Compared to the official Live2D SDK, this library significantly reduces usage complexity while preserving full functionality, with additional optimizations for stability and long-term maintainability.

This project is based on the pixi-live2d-display-mulmotion branch.
It is fully compatible with PixiJS v8 and Live2D Cubism 5.4 SDK, and further provides:

  • Additional practical APIs
  • Stronger TypeScript type safety
  • Optimized internal architecture for extensibility and maintainability

Features

  • Supports all versions of Live2D models (Cubism 2 / 3 / 4 / 5)

  • Compatible with PIXI.RenderTexture and PIXI.Filter

  • Provides a complete PixiJS-style transform API

    • position
    • scale
    • rotation
    • skew
    • anchor
  • Built-in interaction support

    • Mouse tracking
    • Hit area detection
  • Improved motion scheduling and reservation logic compared to the official SDK

  • Complete and strict TypeScript type definitions

  • Real-time lip sync support

  • Parallel motion playback

  • Support for freezing at the last frame of motions

Requirements

  • PixiJS: 8.x
  • Cubism runtime: 2.1 or 5
  • Browser: Must support WebGL and ES6

Installation

Using npm / pnpm

pnpm add untitled-pixi-live2d-engine
# or
npm install untitled-pixi-live2d-engine
import { Live2DModel } from 'untitled-pixi-live2d-engine'

// Cubism Legacy only (Cubism 2.1)
import { Live2DModel } from 'untitled-pixi-live2d-engine/cubism-legacy'

// Cubism Modern only (Cubism 3 / 4 / 5)
import { Live2DModel } from 'untitled-pixi-live2d-engine/cubism'

Import via HTML

<script src="https://cdn.jsdelivr.net/npm/untitled-pixi-live2d-engine/dist/index.min.js"></script>

Cubism Runtime Overview

This project supports all versions of Live2D models, which can be categorized by Cubism architecture:

  • Cubism Legacy: Cubism 2.1
  • Cubism Modern: Cubism 3 / 4 / 5

Choose the appropriate runtime entry based on the model you are using.

Using Cubism Legacy and Cubism Modern Together

Bundle entry

index.js

Use this unified entry when your project needs to load both Cubism 2 and Cubism 3+ models.

Cubism Legacy Only (Cubism 2.1)

Prerequisites

You must manually include live2d.min.js:

Bundle entry

cubism-legacy.js

Cubism Modern Only (Cubism 3 / 4 / 5)

Prerequisites

You must include live2dcubismcore.min.js:

Bundle entry

cubism.js

Quick Start

The following example is based on PixiJS v8 and supports both Cubism Legacy and Cubism Modern.

import { Application } from 'pixi.js'
import { configureCubismSDK, Live2DModel } from 'untitled-pixi-live2d-engine'

const app = new Application()
await app.init({
  resizeTo: window,
  preference: 'webgl',
  autoDensity: true,
  resolution: window.devicePixelRatio
})

document.body.appendChild(app.canvas)

// Configure Cubism Modern work memory (optional, default is 16MB)
// Increase this value when loading multiple or high-complexity models
// configureCubismSDK({
//   memorySizeMB: 32
// })

const model = await Live2DModel.from('model/model3.json')
model.anchor.set(0.5)
model.position.set(app.screen.width / 2, app.screen.height / 2)

app.stage.addChild(model)

Common API Examples

Play a Motion

model.motion('group', index)

Parallel Motions

model.parallelMotion([
  { group: group1, index: index1 },
  { group: group2, index: index2 }
])

Play and Freeze at the Last Frame

Single motion:

model.motionLastFrame('group', index)

Multiple motions:

await model.parallelLastFrame([
  { group: group1, index: index1 },
  { group: group2, index: index2 }
])

Lip Sync

model.speak('audio_file_url')

Expressions

model.expression('id')

For more advanced usage, see pixi-live2d-display-lipsync

FAQ

Q: Why do models stop updating when multiple models are loaded?

When using the Cubism Modern runtime, this issue is usually caused by insufficient work memory configured via configureCubismSDK.

Try increasing memorySizeMB during initialization (minimum: 16MB).