### Install dependencies and start development server Source: https://github.com/8thwall/8frame/blob/master/CONTRIBUTING.md Run these commands to install project dependencies and launch the local development server for testing examples. ```bash npm install ``` ```bash npm start ``` -------------------------------- ### Basic Camera Implementation Source: https://github.com/8thwall/8frame/blob/master/docs/primitives/a-camera.md A standard camera setup within an a-scene. ```html ``` -------------------------------- ### play() Source: https://github.com/8thwall/8frame/blob/master/docs/core/entity.md Starts dynamic behavior of the entity. ```APIDOC ## play() ### Description Starts any dynamic behavior as defined by animations and components. ``` -------------------------------- ### Initialize Local Development Environment Source: https://github.com/8thwall/8frame/blob/master/README.md Commands to clone the repository, install dependencies, and launch the local development server. ```sh git clone https://github.com/aframevr/aframe.git # Clone the repository. cd aframe && npm install # Install dependencies. npm start # Start the local development server. ``` -------------------------------- ### Define Component with Members and Methods Source: https://github.com/8thwall/8frame/blob/master/docs/core/component.md Example of registering a component with custom properties and functions. ```javascript AFRAME.registerComponent('foo', { init: function () { this.bar = 'baz'; }, qux: function () { // ... } }); ``` -------------------------------- ### Define scene lights with Source: https://github.com/8thwall/8frame/blob/master/docs/primitives/a-light.md Examples of configuring different light types and using a cubemap for probe lighting. ```html ``` -------------------------------- ### Basic A-Frame Scene Setup Source: https://github.com/8thwall/8frame/blob/master/README.md A minimal HTML structure to initialize an A-Frame scene with basic geometric primitives. ```html ``` -------------------------------- ### Install Cordova Plugin Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/installation.md Install the required plugin to enable XHR requests for local file assets. ```bash cordova plugin add cordova-plugin-xhr-local-file ``` -------------------------------- ### Start a local development server Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/installation.md Commands to serve files locally for development. Use these to avoid issues with the file:// protocol. ```bash npm i -g five-server@latest && five-server --port=8000 ``` ```bash python -m SimpleHTTPServer ``` ```bash python -m http.server ``` -------------------------------- ### Project Structure Example Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/entity-component-system.md A typical directory layout for an A-Frame project organized by modular components. ```text index.html components/ ball.js collidable.js grabbable.js enemy.js scoreboard.js throwable.js ``` -------------------------------- ### Initialize a component template with angle Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/writing-a-component.md Installs the angle CLI globally and initializes a new component project structure. ```sh npm install -g angle && angle initcomponent ``` -------------------------------- ### Initialize Vive Focus Controls Source: https://github.com/8thwall/8frame/blob/master/docs/components/vive-focus-controls.md Use these examples to attach the Vive Focus controller component to an entity, optionally specifying the hand. ```html ``` -------------------------------- ### Inline embedded scene example Source: https://github.com/8thwall/8frame/blob/master/docs/components/embedded.md A complete example showing the inclusion of the A-Frame library, CSS styling for the container, and an embedded scene with basic primitives. ```html
``` -------------------------------- ### Define Material Properties Source: https://github.com/8thwall/8frame/blob/master/docs/components/material.md Example of defining basic material properties in the schema. ```js AFRAME.registerShader('custom', { schema: { emissive: {default: '#000'}, wireframe: {default: false} } }); ``` -------------------------------- ### Install A-Frame via npm Source: https://github.com/8thwall/8frame/blob/master/README.md Commands and syntax for adding A-Frame as a dependency in a Node.js project. ```sh npm install --save aframe # Or yarn add aframe ``` ```js require('aframe') // e.g., with Browserify or Webpack. ``` -------------------------------- ### Run ngrok with a reserved subdomain Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/visual-inspector-and-dev-tools.md Starts an ngrok tunnel using a pre-reserved subdomain for consistent URL access. ```bash ./ngrok http --subdomain=abc 8080 ``` -------------------------------- ### Default Lighting Configuration Source: https://github.com/8thwall/8frame/blob/master/docs/components/light.md Example of the ambient and directional lights that A-Frame injects by default. ```html ``` -------------------------------- ### Initialize Oculus Touch Controllers Source: https://github.com/8thwall/8frame/blob/master/docs/components/oculus-touch-controls.md Basic setup for left and right Oculus Touch controllers using a-entity. ```html ``` -------------------------------- ### Convert video to GIF with gifpardy Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/hosting-and-publishing.md Use these command-line examples to convert MP4 files into GIFs using the gifpardy tool. ```bash gifpardy in.mp4 gifpardy in.mp4 out.gif gifpardy -r 320x240 --delay 8 in.mp4 ``` -------------------------------- ### Reference component CDN link Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/entity-component-system.md Example of a specific CDN URL for the particle system component. ```text https://unpkg.com/aframe-particle-system-component@1.0.9/dist/aframe-particle-system-component.min.js ``` -------------------------------- ### Integrate Community Components via JSDELIVR Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/entity-component-system.md A complete HTML example demonstrating the inclusion of A-Frame and various community components using JSDELIVR CDN links. ```html Community Components Example ``` -------------------------------- ### Camera Rig Setup Source: https://github.com/8thwall/8frame/blob/master/docs/components/camera.md Uses a parent entity as a rig to move or rotate the camera relative to the scene while maintaining height offsets. ```html ``` -------------------------------- ### Configure WebXR Session Features Source: https://github.com/8thwall/8frame/blob/master/docs/components/webxr.md Example of setting required and optional WebXR features along with an overlay element on an A-Frame scene. ```html ``` -------------------------------- ### Set Default Values from Property Types Source: https://github.com/8thwall/8frame/blob/master/docs/core/component.md Examples of how the schema system assigns default values when only the property type is specified. ```js schema: {type: 'number'} // default: 0 schema: {type: 'string'} // default: '' schema: {type: 'vec3'} // default: {x: 0, y: 0, z: 0} ``` -------------------------------- ### Structure a test suite Source: https://github.com/8thwall/8frame/blob/master/tests/README.md Standard structure for test suites, including setup hooks and both synchronous and asynchronous test cases. ```javascript suite('module/component/custom element', function () { /** * `setup` hook is run before every test. */ setup(function (done) { done(); // If asynchrony is involved, use `done` to tell when finished. }); suite('method/feature', function () [ /** * A synchronous test case. No need to specify `done`. */ test('does this', function () { assert.equal(1, 1); }); /** * An asynchronous test case. */ test('does that', function (done) { process.nextTick(function () { assert.notEqual(1, 2); done(); // Use `done` to tell when finished in asynchronous test. }); }); }); }); ``` -------------------------------- ### Initialize Scene with React Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/installation.md Use the deviceready event to trigger rendering when using a framework like React. ```javascript document.addEventListener('deviceready', () => { ReactDOM.render(, document.getElementById('root')) }) ``` -------------------------------- ### MediaWiki Loader Implementation Source: https://github.com/8thwall/8frame/blob/master/examples/showcase/wikipedia/index.html Sets user options and tokens, then loads required MediaWiki modules. ```javascript mw.loader.implement("user.options",function($,jQuery,require,module){mw.user.options.set({"variant":"en"});});mw.loader.implement("user.tokens",function ( $, jQuery, require, module ) { mw.user.tokens.set({"editToken":"+\\","patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"});/*@nomin*/; });mw.loader.load(["mw.MediaWikiPlayer.loader","mw.PopUpMediaTransform","mw.TMHGalleryHook.js","mediawiki.page.startup","mediawiki.legacy.wikibits","ext.centralauth.centralautologin","mmv.head","ext.visualEditor.desktopArticleTarget.init","ext.uls.init","ext.uls.interface","ext.quicksurveys.init","ext.centralNotice.bannerController","skins.vector.js"]);}); ``` -------------------------------- ### Configure index.html for A-Frame Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/installation.md Update the Content Security Policy and initialize the scene after the deviceready event. ```html ...
... ``` -------------------------------- ### Define an A-Frame scene with a component Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/writing-a-component.md Example of declaring an entity with the custom log component in HTML. ```html ``` -------------------------------- ### Initialize Windows Motion Controllers Source: https://github.com/8thwall/8frame/blob/master/docs/components/windows-motion-controls.md Basic implementation of left and right hand motion controllers using A-Frame entities. ```html ``` -------------------------------- ### Register a basic component Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/writing-a-component.md Defines a component named 'hello-world' that logs a message upon initialization. ```js AFRAME.registerComponent('hello-world', { init: function () { console.log('Hello, World!'); } }); ``` -------------------------------- ### Physically-Based Shading Material Source: https://github.com/8thwall/8frame/blob/master/docs/components/material.md Example of configuring a material with physically-based properties like roughness and metalness. ```html ``` -------------------------------- ### Accessing Systems Source: https://github.com/8thwall/8frame/blob/master/docs/core/systems.md Methods for retrieving instantiated systems or system prototypes. ```APIDOC ## Accessing Systems ### Description Instantiated systems can be accessed via the scene element, while registered system prototypes are available through the AFRAME global object. ### Accessing an Instance `document.querySelector('a-scene').systems[systemName];` ### Accessing Prototypes `AFRAME.systems;` ``` -------------------------------- ### Get Entity Component Properties Source: https://github.com/8thwall/8frame/blob/master/docs/core/utils.md Retrieves specific properties from multi-property components using a delimiter. ```js // var entity = document.querySelector('#box'); AFRAME.utils.entity.getComponentProperty(entity, 'geometry.primitive'); AFRAME.utils.entity.getComponentProperty(entity, 'geometry|primitive', '|'); // >> 'box' AFRAME.utils.entity.getComponentProperty(entity, 'geometry'); // >> {primitive: 'box', width: 1, ...} ``` -------------------------------- ### Set visibility on hover Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/interactions-and-controllers.md A simple example of using event-set to toggle visibility when the cursor enters an entity. ```html ``` -------------------------------- ### Adding a Videosphere Source: https://github.com/8thwall/8frame/blob/master/docs/primitives/a-videosphere.md Demonstrates how to define a videosphere using the asset management system or an inline URL. ```html ``` -------------------------------- ### Phong-Based Shading Material Source: https://github.com/8thwall/8frame/blob/master/docs/components/material.md Example of using the Phong shader model for a material with specific reflectivity and shininess. ```html ``` -------------------------------- ### Initialize Vive Controllers Source: https://github.com/8thwall/8frame/blob/master/docs/components/vive-controls.md Add left and right Vive controller entities to the scene. ```html ``` -------------------------------- ### Define A-Frame scene structure Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/developing-with-threejs.md Example of an A-Frame scene hierarchy that maps to a three.js scene graph. ```html ``` -------------------------------- ### Read Thumbstick Values Source: https://github.com/8thwall/8frame/blob/master/docs/components/oculus-touch-controls.md Example of attaching a custom component to read thumbstick movement data from the controller. ```html ``` ```javascript AFRAME.registerComponent('thumbstick-logging',{ init: function () { this.el.addEventListener('thumbstickmoved', this.logThumbstick); }, logThumbstick: function (evt) { if (evt.detail.y > 0.95) { console.log("DOWN"); } if (evt.detail.y < -0.95) { console.log("UP"); } if (evt.detail.x < -0.95) { console.log("LEFT"); } if (evt.detail.x > 0.95) { console.log("RIGHT"); } } }); ``` -------------------------------- ### Using the a-ocean primitive in HTML Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/html-and-primitives.md Shows how to instantiate the registered a-ocean primitive using standard HTML syntax. ```html ``` -------------------------------- ### Set Basis transcoder path via CDN Source: https://github.com/8thwall/8frame/blob/master/docs/components/gltf-model.md Example of providing a CDN URL for the basisTranscoderPath configuration. ```text basisTranscoderPath:https://cdn.jsdelivr.net/npm/three@0.154.0/examples/jsm/libs/basis/; ``` -------------------------------- ### Basic Camera Setup Source: https://github.com/8thwall/8frame/blob/master/docs/components/camera.md Positions the camera at human eye level, which is typically 1.6 meters above the ground. ```html ``` -------------------------------- ### Gathering Components in a System Source: https://github.com/8thwall/8frame/blob/master/docs/core/systems.md Implement a subscription pattern where components register themselves with the system during initialization. ```js AFRAME.registerSystem('my-component', { init: function () { this.entities = []; }, registerMe: function (el) { this.entities.push(el); }, unregisterMe: function (el) { var index = this.entities.indexOf(el); this.entities.splice(index, 1); } }); AFRAME.registerComponent('my-component', { init: function () { this.system.registerMe(this.el); }, remove: function () { this.system.unregisterMe(this.el); } }); ``` -------------------------------- ### Configure Asset Preloading Source: https://github.com/8thwall/8frame/blob/master/docs/core/asset-management-system.md Demonstrates how to control asset loading behavior using autoplay and preload attributes within a-assets. ```html ``` -------------------------------- ### Initialize Resource Loader and Load Modules Source: https://github.com/8thwall/8frame/blob/master/examples/showcase/wikipedia/index.html Initializes the Resource Loader queue and loads essential MediaWiki modules for site functionality. ```javascript (window.RLQ=window.RLQ||[]).push(function(){mw.loader.state({"ext.globalCssJs.site":"ready","ext.globalCssJs.user":"ready","user":"ready","user.groups":"ready"});mw.loader.load(["ext.cite.a11y","mediawiki.toc","mediawiki.action.view.postEdit","site","mediawiki.user","mediawiki.hidpi","mediawiki.page.ready","mediawiki.searchSuggest","ext.eventLogging.subscriber","ext.gadget.teahouse","ext.gadget.ReferenceTooltips","ext.gadget.DRN-wizard","ext.gadget.charinsert","ext.gadget.refToolbar","ext.gadget.switcher","ext.gadget.featured-articles-links","mmv.bootstrap.autostart","ext.visualEditor.targetLoader","ext.wikimediaEvents","ext.navigationTiming","schema.UniversalLanguageSelector","ext.uls.eventlogger","ext.uls.interlanguage"]);}); ``` -------------------------------- ### Listen to A-Frame Synthetic Events Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/interactions-and-controllers.md Example of listening for a custom synthetic event emitted by an A-Frame component, such as a collision. ```javascript // `collide` event emitted by a component such as some collider or physics component. document.querySelector('a-entity').addEventListener('collide', function (evt) { console.log('This A-Frame entity collided with another entity!'); }); ``` -------------------------------- ### Initialize component state with init Source: https://github.com/8thwall/8frame/blob/master/docs/core/component.md Use the init method to set up initial variables, bind methods, and attach event listeners when a component is first created. ```js AFRAME.registerComponent('cursor', { // ... init: function () { // Set up initial state and variables. this.intersection = null; // Bind methods. this.onIntersection = AFRAME.utils.bind(this.onIntersection, this); // Attach event listener. this.el.addEventListener('raycaster-intersection', this.onIntersection); } // ... ``` -------------------------------- ### Create a box primitive Source: https://github.com/8thwall/8frame/blob/master/docs/primitives/a-box.md Basic implementation showing how to define a colored box with specific dimensions and a textured box using an asset reference. ```html ``` -------------------------------- ### Define Nested A-Frame Entities Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/developing-with-threejs.md Example of a parent-child entity structure where the child's position is relative to the parent. ```html ``` -------------------------------- ### Initialize hand-tracking-grab-controls Source: https://github.com/8thwall/8frame/blob/master/docs/components/hand-tracking-grab-controls.md Attach the component to hand entities to enable tracking for specific hands. ```html ``` -------------------------------- ### Add custom lighting to the scene Source: https://github.com/8thwall/8frame/blob/master/docs/guides/building-a-basic-scene.md Configures ambient and point lights to replace the default A-Frame lighting setup. ```html ``` -------------------------------- ### Initialize Real-World Meshing Source: https://github.com/8thwall/8frame/blob/master/docs/components/real-world-meshing.md Apply the component to the a-scene element to enable environment surface detection. ```html ``` -------------------------------- ### Infer Property Types from Defaults Source: https://github.com/8thwall/8frame/blob/master/docs/core/component.md Examples of how the schema system infers the property type based on the provided default value. ```js schema: {default: 10} // type: "number" schema: {default: "foo"} // type: "string" schema: {default: [1, 2, 3]} // type: "array" ``` -------------------------------- ### enterVR() Source: https://github.com/8thwall/8frame/blob/master/docs/core/scene.md Switches the scene to stereo rendering and pushes content to the headset. Must be triggered by a user-generated event like a click. ```APIDOC ## enterVR() ### Description Switches to stereo render and pushes content to the headset. This method must be called within a user-generated event handler (e.g., click) the first time a page enters VR. ``` -------------------------------- ### Displaying a 3D Wavefront model Source: https://github.com/8thwall/8frame/blob/master/docs/primitives/a-obj-model.md Demonstrates loading an OBJ model and its associated MTL file using both the asset management system and direct inline URLs. ```html ``` -------------------------------- ### Compare primitive and entity-component syntax Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/html-and-primitives.md Demonstrates how a primitive element maps to its underlying entity-component representation. ```html ``` ```html ``` -------------------------------- ### Create a cone primitive in HTML Source: https://github.com/8thwall/8frame/blob/master/docs/primitives/a-cone.md Demonstrates basic usage of the a-cone element, including setting colors, radii, and applying textures via assets. ```html ``` -------------------------------- ### Accessing an Instantiated System Source: https://github.com/8thwall/8frame/blob/master/docs/core/systems.md Retrieve an active system instance from the scene element. ```js document.querySelector('a-scene').systems[systemName]; ``` -------------------------------- ### Chained Animation Setup Source: https://github.com/8thwall/8frame/blob/master/docs/guides/building-a-360-image-gallery.md Defines two animations on an a-sky element to handle fading to black and back to normal, triggered by proxied and completion events. ```html ``` -------------------------------- ### Set Backend Configuration Source: https://github.com/8thwall/8frame/blob/master/examples/showcase/wikipedia/index.html Sets global configuration parameters for the MediaWiki backend, including response time and hostname. ```javascript (window.RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgBackendResponseTime":129,"wgHostname":"mw1171"});}); ``` -------------------------------- ### Run unit tests Source: https://github.com/8thwall/8frame/blob/master/CONTRIBUTING.md Execute the test suite to ensure your changes do not break existing functionality. ```bash npm test ``` -------------------------------- ### Define lines on an entity Source: https://github.com/8thwall/8frame/blob/master/docs/components/line.md Use the line component to specify start and end coordinates with colors. Multiple lines can be added to a single entity using IDs. ```html ``` -------------------------------- ### Basic laser-controls implementation Source: https://github.com/8thwall/8frame/blob/master/docs/components/laser-controls.md Initializes a laser-controlled entity for a specific hand. ```html ``` -------------------------------- ### line component Source: https://github.com/8thwall/8frame/blob/master/docs/components/line.md The line component draws a line between a start and end coordinate. It can be applied to entities and supports multiple lines per entity using the line__ID syntax. ```APIDOC ## line component ### Description The line component draws a line given a start coordinate and end coordinate using THREE.Line. ### Properties - **start** (vec3) - Optional - Start point coordinate. Default: 0 0 0 - **end** (vec3) - Optional - End coordinate. Default: 0 0 0 - **color** (color) - Optional - Line color. Default: #74BEC1 - **opacity** (number) - Optional - Line opacity. Default: 1 - **visible** (boolean) - Optional - Whether the material is visible. Default: true ### Usage Example ``` -------------------------------- ### Basic Video Primitive Usage Source: https://github.com/8thwall/8frame/blob/master/docs/primitives/a-video.md Demonstrates using the asset management system for optimized video loading and inline URL definition. ```html ``` -------------------------------- ### Implement Non-ASCII Characters with Custom MSDF Fonts Source: https://github.com/8thwall/8frame/blob/master/docs/components/text.md Example of setting up a scene with a custom MSDF font to support non-ASCII characters, ensuring the correct meta charset is defined. ```html ``` -------------------------------- ### Generate Project Builds Source: https://github.com/8thwall/8frame/blob/master/README.md Command to trigger the distribution build process. ```sh npm run dist ``` -------------------------------- ### .update(oldData) Source: https://github.com/8thwall/8frame/blob/master/docs/core/component.md The .update() method is called whenever the component's properties change, including at the start of the lifecycle. It allows for granular updates by comparing current data with the previous state. ```APIDOC ## .update(oldData) ### Description Called after initialization and whenever component properties are updated via setAttribute. Use this to apply changes to the entity based on this.data. ### Parameters - **oldData** (Object) - The state of the component data before the update occurred. ``` -------------------------------- ### Configure tracked-controls with idPrefix Source: https://github.com/8thwall/8frame/blob/master/docs/components/tracked-controls.md Use idPrefix to ensure compatibility with Vive/OpenVR controllers that may report varying id strings. ```html ``` -------------------------------- ### Define component initialization order with dependencies Source: https://github.com/8thwall/8frame/blob/master/docs/core/component.md Use the dependencies array to ensure specific components are initialized before the current one. ```javascript // Initializes last. AFRAME.registerComponent('a', { dependencies: ['b'] }); // Initializes second. AFRAME.registerComponent('b', { dependencies: ['c'] }); // Initializes first. AFRAME.registerComponent('c', {}); ``` -------------------------------- ### Attaching Components in HTML Source: https://github.com/8thwall/8frame/blob/master/docs/guides/building-a-minecraft-demo.md Demonstrates how to include a custom component script and apply it to an entity within an A-Frame scene. ```html ``` -------------------------------- ### Initialize A-Frame scene with angle Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/installation.md Use the angle CLI to quickly initialize a new A-Frame scene template. ```sh npm install -g angle && angle initscene ``` -------------------------------- ### Registering a System and Component Source: https://github.com/8thwall/8frame/blob/master/docs/core/systems.md Register a system to provide shared logic to components. If names match, components access the system via this.system. ```js AFRAME.registerSystem('my-component', { schema: {}, // System schema. Parses into `this.data`. init: function () { // Called on scene initialization. }, // Other handlers and methods. }); AFRAME.registerComponent('my-component', { init: function () { console.log(this.system); } }); ``` -------------------------------- ### Configure Lights for Shadows Source: https://github.com/8thwall/8frame/blob/master/docs/components/light.md Sets up an ambient light for base illumination and a directional light configured to cast shadows. ```html ``` -------------------------------- ### Attach physics components to primitives Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/html-and-primitives.md Demonstrates including the physics system script and applying dynamic-body and static-body components to A-Frame primitives. ```html ``` -------------------------------- ### Initialize and manage pooled entities Source: https://github.com/8thwall/8frame/blob/master/docs/components/pool.md Configure the pool component via HTML and manage entity lifecycle using JavaScript methods. ```html ``` ```js var el = sceneEl.components.pool__enemy.requestEntity(); el.play(); sceneEl.components.pool__enemy.returnEntity(el); ``` -------------------------------- ### .init() Source: https://github.com/8thwall/8frame/blob/master/docs/core/component.md The .init() method is called once at the beginning of the component's lifecycle. It is typically used for setting up initial state, binding methods, and attaching event listeners. ```APIDOC ## .init() ### Description Called once when the component is initialized on an entity. Used for setup tasks like variable initialization and event binding. ### Usage ```js AFRAME.registerComponent('my-component', { init: function () { // Setup logic here } }); ``` ``` -------------------------------- ### Define an entity with component properties Source: https://github.com/8thwall/8frame/blob/master/docs/introduction/entity-component-system.md Demonstrates the syntax for attaching multiple components with specific property values to an a-entity. ```html ``` -------------------------------- ### Displaying a glTF model in A-Frame Source: https://github.com/8thwall/8frame/blob/master/docs/primitives/a-gltf-model.md Demonstrates loading a glTF model using the asset management system and via an inline URL. ```html ```