All Projects → sketchpunklabs → ossos

sketchpunklabs / ossos

Licence: MIT license
Webbased Character Animation System

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to ossos

XREngine
Immersive infrastructure for everyone. Everything you need to build and deploy scalable realtime 3D social apps and more. 🤖 🚀 👓 🚀 🕹️ 🚀 🧑🏿‍🚀
Stars: ✭ 423 (+167.72%)
Mutual labels:  metaverse, webxr
Three.js
JavaScript 3D Library.
Stars: ✭ 78,237 (+49417.09%)
Mutual labels:  webgpu, webxr
Babylon.js
Babylon.js is a powerful, beautiful, simple, and open game and rendering engine packed into a friendly JavaScript framework.
Stars: ✭ 15,479 (+9696.84%)
Mutual labels:  webgpu, webxr
Everything-Will-Be-IK
A Robust Inverse Kinematics Library
Stars: ✭ 35 (-77.85%)
Mutual labels:  inverse-kinematics, armature
laravel-skeleton
Скелет приложения на базе Laravel 5.3/5.4
Stars: ✭ 48 (-69.62%)
Mutual labels:  skeleton
emscripten-webxr
WebXR library for use with Emscripten.
Stars: ✭ 21 (-86.71%)
Mutual labels:  webxr
SlimREST
An app skeleton for building a REST API with the Slim PHP Micro-Framework
Stars: ✭ 22 (-86.08%)
Mutual labels:  skeleton
Coroutines-Animations
Use the power of kotlin coroutines to execute your android animations
Stars: ✭ 31 (-80.38%)
Mutual labels:  animator
deno desktop
Windowing support for Deno WebGPU.
Stars: ✭ 49 (-68.99%)
Mutual labels:  webgpu
immersive-ar-emulation
A sort-of polyfill to emulate a fake AR environment which can be hit-tested against.
Stars: ✭ 26 (-83.54%)
Mutual labels:  webxr
webgpu-seed
🔺🌱 An example on how to render a hello triangle with WebGPU.
Stars: ✭ 178 (+12.66%)
Mutual labels:  webgpu
LimitlessUI
Awesome C# UI library that highly reduced limits of your application looks
Stars: ✭ 41 (-74.05%)
Mutual labels:  animator
MTG-Card-Reader-Web
MTG-Card-Reader 2.0, built as a webpage.
Stars: ✭ 21 (-86.71%)
Mutual labels:  skeleton
THREE.WebGPURenderer
Experimental Three.js WebGPU renderer
Stars: ✭ 117 (-25.95%)
Mutual labels:  webgpu
scala-basic-skeleton
Starting point if you want to bootstrap a project in Scala
Stars: ✭ 16 (-89.87%)
Mutual labels:  skeleton
omigroup
Sandbox for discussing Open Metaverse Interoperability objectives. Want to get involved? Join us in GitHub discussions, and on Discord. PR's welcome!
Stars: ✭ 290 (+83.54%)
Mutual labels:  metaverse
360WebPlayer
The easiest way to stream 360 videos and pictures on your website or blog.
Stars: ✭ 31 (-80.38%)
Mutual labels:  webxr
packager
Laravel Package Skeleton Generator - https://youtu.be/kQRQWzDEbGk
Stars: ✭ 20 (-87.34%)
Mutual labels:  skeleton
golang-api-skeleton
Go Golang API Skeleton
Stars: ✭ 24 (-84.81%)
Mutual labels:  skeleton
jira.js
A JavaScript/TypeScript wrapper for the JIRA Cloud, Service Desk and Agile REST API
Stars: ✭ 156 (-1.27%)
Mutual labels:  typescipt

ossos

npm twitter youtube Ko-Fi Patreon

Character Animation Library

This project is working toward a complete character skinning & animation library for the web. First most, this library is focused on being independent from any rendering engine with examples of how to use it in webgl based engines like threejs. The one big focus is recreating the IK Rig & IK Animations type system that was demoed several years ago from Ubisoft's GDC talk on IK Rigs. With many game engines like Unity and Unreal developing their own IK Rig like systems, this project helps fill the void for web based engines like threejs, babylon, etc. Hopefully with enough help we can create something just as good as the big boys, maybe even better since its free & open source.


Setup

npm install
npm run dev

[ NOTE ] To be able to run the example, you'll need to go into /examples/_res/ and follow the instructions to clone the resource repo. The files are quite large, so they are kept in a seperate repo to keep this project as light weight as possible.

Usage

This example is the basic boiler plate example of how to pull mesh & skeletal data from a GLTF2 file then using a custom THREE.JS Material to render mesh that can be posed or animated.

const gltf = await Gltf2.fetch( '../_res/models/nabba/nabba.gltf' );

//--------------------------------
// Setup Armature
const arm  = new Armature();
for( let j of gltf.getSkin().joints ){
    arm.addBone( j.name, j.parentIndex, j.rotation, j.position, j.scale );
}

//--------------------------------
// Setup Skinning : Matrix
arm.bind( SkinMTX, 0.07 ); 
const mat = SkinMTXMaterial( 'cyan', arm.getSkinOffsets()[0] ); 

//--------------------------------
// Load Mesh
const mesh  = Gltf2Util.loadMesh( gltf, null, mat );
App.add( mesh );

Current Features

  • Armature System built around 'Bones' instead of 'Joints'
  • Several Skinning Plugins
    • Matrices : Typical Skinning, easiest to use in GLSL
    • Dual Quaternions : For better bending of vertices, typically used in places like Disney. It can only handle Rotation & Translation, scaling individual bones don't work.
    • DQ Transform : Experimental & unique to this library. It uses Transform instead of matrices or dualquats to handle the transformation hierarchy & bind pose. When the data is prepared for shader use the worldspace transform gets converted to Dual Quaternions to handle rotation & translation along with an extra buffer that contains scale. The hopes of this hybrid approach is to get the quality of DQ while still being able to scaled individual bones like when using matrix skinning.
  • Bone Springs ( Rotation & Translation )
  • Basic Animator based on Tracks
  • Basic Animation Retargeting for similar skeletal meshes
  • IK Rigs
    • Biped ( Human )
    • Quadruped ( Prototype Phase )
  • IK Animation Retargeting using IK Rigs
  • IK Solvers
    • Aim / SwingTwist
    • SwingTwist - Ends
    • SwingTwist - Chain
    • Limb
    • Arc
    • ArcSin
    • Fabrik
    • Natural CCD
    • Piston
    • Spring
    • Trapezoid
    • ZSolver
    • Catenary / Rope
  • GLTF2 Asset Parsing for cherry picking what you need to load.
  • A few examples using BabylonJS for rendering
  • Several examples using ThreeJS for rendering
    • Some extra fun examples like converting animations to Data Textures
    • Running Full Skinned animation on the GPU with GLSL Example
    • Using Instancing & Data Texture to animate a collection of randomly placed & rotated meshes
  • Ready Player Me Example : Parsing, TPose Generation & Auto IK Rigging
  • Bone Slots : A way to programmically attach assets to bones
  • IK Animation Additives

Future Plans

  • Rewrite IK Rigs
  • Port over starting IK Solvers ( Aim / SwingTwist, Limb, SwingTwistEnds )
  • Rewrite IK Animation Retargeting
  • Port over extra single pass IK Solvers ( Z, Piston, Arc, ArcSin, Trapezoid, Spring )
  • Create an implementation of FABIK
  • Create solver based on Catenary Curve
  • Port over Trianglution Solver ( Alternative to CCD )
  • Port over Natural CCD ( Extended version of CCD )
  • Complete FullBody IK Prototype
  • Revisit FullBody IK, Make it mores stable & user friendly
  • Figure out how to implement VRIK
  • Bone Slots / Attachments
  • Actions or State Machine based Animator
  • Build Examples in other Rendering Engines like BabylonJS
  • Remake Auto Skinning ( Need WebGPU compute shaders for this )
  • Bone Constraints
  • Procedural Animation ProtoTyping
  • Far Future - Create & Share animations with a Web Editor Tool
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].