All Projects → jeeliz → Jeelizglassesvtowidget

jeeliz / Jeelizglassesvtowidget

Licence: apache-2.0
JavaScript/WebGL glasses virtual try on widget. Real time webcam experience, robust to all lighting conditions, high end 3D PBR rendering, easy to integrate, fallback to server-side rendering

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Jeelizglassesvtowidget

React Force Graph
React component for 2D, 3D, VR and AR force directed graphs
Stars: ✭ 589 (+339.55%)
Mutual labels:  3d, webgl, augmented-reality
Wechart
Create all the [ch]arts by cax or three.js - Cax 和 three.js 创造一切图[表]
Stars: ✭ 152 (+13.43%)
Mutual labels:  3d, webgl, rendering
Jeelizfacefilter
Javascript/WebGL lightweight face tracking library designed for augmented reality webcam filters. Features : multiple faces detection, rotation, mouth opening. Various integration examples are provided (Three.js, Babylon.js, FaceSwap, Canvas2D, CSS3D...).
Stars: ✭ 2,042 (+1423.88%)
Mutual labels:  3d, webgl, augmented-reality
Three.js
JavaScript 3D Library.
Stars: ✭ 78,237 (+58285.82%)
Mutual labels:  3d, webgl, augmented-reality
Webglstudio.js
A full open source 3D graphics editor in the browser, with scene editor, coding pad, graph editor, virtual file system, and many features more.
Stars: ✭ 4,508 (+3264.18%)
Mutual labels:  3d, webgl, rendering
Hilo3d
Hilo3d, a WebGL Rendering Engine.
Stars: ✭ 123 (-8.21%)
Mutual labels:  3d, webgl, rendering
Elm 3d Scene
A high-level 3D rendering engine for Elm, with support for lighting, shadows, and realistic materials.
Stars: ✭ 167 (+24.63%)
Mutual labels:  3d, webgl, rendering
Spritejs
A cross platform high-performance graphics system.
Stars: ✭ 4,712 (+3416.42%)
Mutual labels:  3d, webgl, rendering
Helixjs
A Javascript 3D game engine.
Stars: ✭ 84 (-37.31%)
Mutual labels:  3d, webgl, rendering
Tinyraycaster
486 lines of C++: old-school FPS in a weekend
Stars: ✭ 1,383 (+932.09%)
Mutual labels:  3d, rendering
Giojs
🌏 A Declarative 3D Globe Data Visualization Library built with Three.js
Stars: ✭ 1,528 (+1040.3%)
Mutual labels:  3d, webgl
Solar System Threejs
The Solar System: Modeled to scale with Three.js
Stars: ✭ 107 (-20.15%)
Mutual labels:  3d, webgl
Cesium Threejs Experiment
A small example for using Three JS on Cesium to emulate a combined scene.
Stars: ✭ 101 (-24.63%)
Mutual labels:  3d, webgl
React 3d Viewer
A 3D model viewer component based on react.js 一个基于react.js的组件化3d模型查看工具
Stars: ✭ 100 (-25.37%)
Mutual labels:  3d, webgl
Awesome Arcore
A curated list of awesome ARCore projects and resources. Feel free to contribute!
Stars: ✭ 106 (-20.9%)
Mutual labels:  mobile, augmented-reality
Pd Select
vue components ,like ios 3D picker style,vue 3d 选择器组件,3D滚轮
Stars: ✭ 101 (-24.63%)
Mutual labels:  3d, mobile
Flutter Status Alert
Display Apple system-like self-hiding status alerts. It is well suited for notifying user without interrupting user flow.
Stars: ✭ 111 (-17.16%)
Mutual labels:  mobile, widget
3d Force Graph Vr
3D force-directed graph component in VR
Stars: ✭ 112 (-16.42%)
Mutual labels:  3d, webgl
Renderer
A shader-based software renderer written from scratch in C89
Stars: ✭ 1,366 (+919.4%)
Mutual labels:  3d, rendering
Phenomenon
⚡️ A fast 2kB low-level WebGL API.
Stars: ✭ 1,551 (+1057.46%)
Mutual labels:  webgl, rendering

Glasses Virtual Try-on Widget

Offer glasses virtual try on to your users with this JavaScript widget. It can be easily integrated on a website or in a mobile web application with a few lines of HTML code. The experience is in real-time: the user see his face like in a mirror, but with glasses on.

Table of contents

Features

  • real-time web based glasses virtual try on,
  • light reconstruction (ambient + directionnal),
  • very robust to lighting conditions,
  • mobile friendly,
  • high end 3D engine with:
    • physically based rendering (PBR),
    • raytraced shadows,
    • deferred shading,
    • temporal antialiasing.

Demonstrations

You can test it with these demos:

Video screenshot of Jeeliz Sunglasses:

Glasses 3D models

From GlassesDB

Glasses models are stored on the Jeeliz GlassesDB. Each model is identified by a unique SKU. You can check the different models available by opening glassesSKU.csv file.

If you want us to add specific glasses models to GlassesDB, please contact us at contact__at__jeeliz.com or here. We charge for this service.

As a static file

You can convert your own glasses GLTF 3D Model to a proprietary JSON file accepted by this widget using Jeeliz Glasses Studio 3D. You can download:

You can use both models from GlassesDB and your own static models. Glasses Studio 3D is a free application and you keep the IP on your exported 3D models. Unlike this widget, Glasses studio 3D works:

  • Only on desktops, with a fullHD screen resolution (1920x1080),
  • Your GPU device needs to be able to do MRT (Multi Rendering Targets) on at least 4 targets (i.e. it may not work on deprecated or very cheap hardware).

However, the capabilities of Glasses Studio 3D are below what we offer with GlassesDB. This is a comparison:

Feature Glasses Studio 3D GlassesDB
PBR material parameters X X
diffuse texture X X
normal texture X X
PBR params texture X
3D model compression X
Guaranteed support X
Hosting X

Documentation

This library relies on Jeeliz WebGL Deep Learning technology to detect and track the face using a neural network. You can find the technical documentation in doc.pdf.

Here are some articles to help you for integration:

If you need more help, we offer development services and customized support. You can contact-us here.

Compatibility

  • If WebGL2 is available, it uses WebGL2 and no specific extension is required,
  • If WebGL2 is not available but WebGL1, we require either OES_TEXTURE_FLOAT extension or OES_TEXTURE_HALF_FLOAT extension,
  • If WebGL2 is not available, and if WebGL1 is not available or neither OES_TEXTURE_FLOAT or OES_HALF_TEXTURE_FLOAT are implemented, the user is not compatible with the real time video version.

In all cases, MediaStream API should be implemented in the web browser, otherwise FaceFilter API will not be able to get the camera video feed. Here are the compatibility tables from caniuse.com here: WebGL1, WebGL2, MediaStream API.

If a compatibility error is triggered, please post an issue on this repository. If this is a problem with the camera access, please first retry after closing all applications which could use your device (Skype, Messenger, other browser tabs and windows, ...). Please include:

If the user was not compatible or refuses to share its camera video stream, an image based fallback version was available til January 2020. The server side webservice generating the rendering has been undeployed. If the user does not want to share its camera or if its implementation of WebGL is too minimalistic, a FALLBACKUNAVAILABLE error will be triggered.

Optimization

If you meet some performance issues, please first:

  • Check that you are using the latest main script ( /release/jeelizNNCwidget.js ),
  • Check that your browser is updated (Chrome is advised), check that your graphic drivers are updated,
  • Enter chrome://gpu in the URL bar and check there are no major performance caveats, that hardware acceleration is enabled, that your GPU is correctly detected,

The performance is adaptative. We do as many detection loops per rendering till we reach a maximum value (7). If we cannot reach this value, the GPU will be running at 100%. The closer we are to this maximum value, the less latency we will observe.

So it is normal that the GPU is running at 100%. But it may be annoying for other parts of the application because DOM can be slow to update and CSS animations can be laggy.

The first solution ( implemented in Jeeliz sunglasses web-app ) is to slow down the glasses rendering once the user has clicked on a button using:

JEEFITAPI.relieve_DOM(<durationInMs>)

For example,JEEFITAPI.relieve_DOM(300) will free the GPU during 300 milliseconds.

If you need to slow down the rendering to free the GPU during an undertermined period of time, you can use:

JEEFITAPI.switch_slow(<boolean> isSlow, <int> intervalMs)

Where intervalMs is the interval in milliseconds between 2 rendering loops.

Hosting

This widget access the user's camera video stream through MediaStream API. So your application should be hosted by a HTTPS server (even with a self-signed certificate). It won't work at all with unsecure HTTP, even locally with some web browsers.

License

Apache 2.0. This application is free for both commercial and non-commercial use.

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].