What is @google/model-viewer?
@google/model-viewer is a web component that allows you to easily display and interact with 3D models on the web. It supports various features such as AR (Augmented Reality) viewing, lighting controls, and animation.
What are @google/model-viewer's main functionalities?
Basic 3D Model Display
This feature allows you to display a 3D model with basic controls such as auto-rotation and camera controls.
<model-viewer src="path/to/your/model.glb" alt="A 3D model" auto-rotate camera-controls></model-viewer>
Augmented Reality (AR) Support
This feature enables AR support, allowing users to view the 3D model in augmented reality using various AR modes.
<model-viewer src="path/to/your/model.glb" alt="A 3D model" ar ar-modes="webxr scene-viewer quick-look" camera-controls></model-viewer>
Lighting and Environment
This feature allows you to add realistic lighting and environment settings to your 3D model, enhancing its visual appearance.
<model-viewer src="path/to/your/model.glb" alt="A 3D model" environment-image="path/to/your/environment.hdr" exposure="1" shadow-intensity="1" camera-controls></model-viewer>
Animations
This feature supports animations within the 3D model, allowing you to play specific animations automatically.
<model-viewer src="path/to/your/model.glb" alt="A 3D model" animation-name="Run" autoplay camera-controls></model-viewer>
Other packages similar to @google/model-viewer
three
Three.js is a popular JavaScript library for creating 3D graphics in the browser. It offers more flexibility and control over 3D rendering compared to @google/model-viewer but requires more setup and coding.
aframe
A-Frame is a web framework for building virtual reality (VR) experiences. It is more focused on VR and immersive experiences compared to @google/model-viewer, which is more geared towards easy 3D model viewing and AR.
babylonjs
Babylon.js is a powerful, open-source 3D engine that allows you to create complex 3D scenes and games. It offers more advanced features and capabilities compared to @google/model-viewer but also comes with a steeper learning curve.
<model-viewer>
<model-viewer>
is a web component that makes rendering interactive 3D
models - optionally in AR - easy to do, on as many browsers and devices as possible.
<model-viewer>
strives to give you great defaults for rendering quality and
performance.
As new standards and APIs become available <model-viewer>
will be improved
to take advantage of them. If possible, fallbacks and polyfills will be
supported to provide a seamless development experience.
Demo • Documentation • Quality Comparisons (courtesy of Khronos)
Installing
The <model-viewer>
web component can be installed from NPM:
npm install three
npm install @google/model-viewer
It can also be used directly from various free CDNs such as jsDelivr and Google's own hosted libraries:
<script type="module" src="https://ajax.googleapis.com/ajax/libs/model-viewer/3.5.0/model-viewer.min.js"></script>
For more detailed usage documentation and live examples, please visit our docs
at modelviewer.dev!
Important note about versions
Our goal for <model-viewer>
is to be a consistent, stable part of your web
platform while continuing to deliver cutting-edge features. We’ll always try
to minimize breaking changes, and to keep the component backwards compatible.
See our guide to contributing for more
information on backwards compatibility.
For your production site you may want the extra stability that comes by
pinning to a specific version, and upgrading on your own schedule (after
testing).
If you’ve installed via NPM, you’re all set - you’ll only
upgrade when you run npm update
.
Note that three.js is a peer dependency, so that must also be installed, but can
be shared with other bundled code. Note that <model-viewer>
requires the
version of three.js we test on to maintain quality, due to frequent upstream
breaking changes. We strongly recommend you keep your three.js version locked to
<model-viewer>
's. If you must use a different version, npm will give you an
error which you can work around using their --legacy-peer-deps
option, which
will allow you to go outside of our version range. Please do not file issues if
you use this option.
Browser Support
<model-viewer>
is supported on the last 2 major versions of all evergreen
desktop and mobile browsers.
| Chrome | Firefox | Safari | Edge |
---|
Desktop | ✅ | ✅ | ✅ | ✅ |
Mobile | ✅ | ✅ | ✅ | ✅ |
<model-viewer>
builds upon standard web platform APIs so that the performance,
capabilities and compatibility of the library get better as the web evolves.
Development
To get started, follow the instructions in the main README.md file.
The following commands are available when developing <model-viewer>
:
Command | Description |
---|
npm run build | Builds all <model-viewer> distributable files |
npm run build:dev | Builds a subset of distributable files (faster than npm run build ) |
npm run test | Run <model-viewer> unit tests |
npm run clean | Deletes all build artifacts |
npm run dev | Starts tsc and rollup in "watch" mode, causing artifacts to automatically rebuild upon incremental changes |