Skip to content

culdo/web-mmd

Repository files navigation

Web-MMD

Web-MMD

> Try it now ! <

For who wants to play MMD in the browser, now you can play it anywhere.

This project is inspired by the amazing three.js example which by @takahirox.

Features

  • Play MMD with time control bar(time seeking, jump to time...etc)
  • Change Model, Stage, Motion, Camera and Music(From YT or file)
  • Turn on/off auto camera(can play manually)
  • Adjust shadow/outline/color/...etc
  • Layout settings (Auto-hide gui/Show FPS/Fullscreen...etc)
  • Presets (open/save-as/copy/export as JSON format)
  • Camera Composition mode (create/delete/jump forward/backward camera cuts)
  • Camera Fixed-Follow mode (can adjust using mouse)
  • Camera Editor mode (can edit on dope-sheet timeline)
  • Keyboard Shortcuts(play/pause, toggle camera mode, manipulate camera cuts...)

Keyboard shortcuts

  • Space: Play/Pause
  • ` : Toggle Camera mode (between motion and composite mode)
  • < : Previous frame (under 30 fps)
  • > : Next frame (under 30 fps)
  • At camera composite mode
    • : Previous keyframe
    • : Next keyframe

Demo credits

  • music: GimmexGimme by 八王子P × Giga
  • model: つみ式みくさんv4 by つみだんご
  • motion: ぎみぎみ(みっちゃん)_原曲音源 by シガー
  • emotion: GimmeGimmeリップ表情v07 by ノン
  • camera: Gimme x Gimme镜头 by 冬菇
  • stage: RedialC_EpRoomDS by RedialC

Development

  1. Install deps via npm install
  2. Run npm run dev
  • Modules which mainly come from the three.js example is refactored to Classes and Async/Await styles.
  • This projects is refactored to using Next.js(TypeScript).

Tech stacks

  • three.js (For MMD)
  • postprocessing.js (For effects)
  • theatre.js (For camera editor mode)
  • Next.js (For static site generating)
  • media-chrome (For audio from YT)
  • playwright (For testing)

E2E Testing using Playwright

Run npm test

CI/CD

It uses Github Action to deploy the demo site. Relative files located at ./.github/workflows.

To-do list

Done

  • play/pause
  • turn on/off shawdow
  • choose light color
  • player control bar
  • can choose different model, stage, motion, camera, music
  • Layout settings
  • Auto-save all gui settings in browser
  • Open/Save-As/Copy/Export MMD presets
  • SDEF rendering
  • camera Fixed-Follow mode
  • PBR rendering
  • refactor to Typescript
  • refactor to @react-three eco-system
  • Skybox rendering
  • timeline editor
    • camera composition mode
    • camera editor mode (using Theatre.js)

WIP

  • Better bone animation

Planning

  • In-APP Credits list
  • Efficient Bokeh effect

Releases

No releases published

Packages

No packages published