npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

aframe-gltf-helpers

v0.0.5

Published

Some helpful glTF components for A-Frame

Downloads

48

Readme

aframe-gltf-helpers

Version License

A-Frame glTF Helper Components

gltf-part-plus component adds a few features to the original gltf-part component made by @ngokevin, namely: draco compression and ability to extract gltf translation to the A-Frame scene graph. Note: to enable draco decompression, refer to A-Frame instructions here, also shown in examples 3 and 4 below.

model-center component centers the geometry of a mesh loaded from gltf-part-plus with an option to bottom align at ground level, useful for buildings, trees, etc.

These are part of an experimental glTF workflow for handling assets related to Streetmix3D. See below for more info on the full workflow.

API

gltf-part-plus

| Property | Description | Default Value | | -------- | ----------- | ------------- | | buffer | Whether to load the geometry as a BufferGeometry (versus Geometry). Set to false if we need access to vertices, faces, UVs, etc. | true | | part | Name of the part to look for specified in the glTF file as name="<NAME>". | '' | | src | Path to the glTF file (or selector to <a-asset-item>). | '' | | resetPosition | For the first gltf node encountered in the matching part, copy its translation to the a-frame entity, and then set gltf translation to 0 0 0. This keeps the same world position for the placed gltf part's first node, while giving the A-Frame entity the value of that part from the gltf scene. However, this only works for a simple gltf with only 1 child node for each part in the scene. (Use with caution, this is not a well-tested property and might not work as expected on your model.) | false |

model-center

Center the child geometry of the current entity's object3d. | Property | Description | Default Value | | -------- | ----------- | ------------- | | bottomAlign | Whether to align the bottom of the centered mesh geometry with the ground or floor level (at y=0), useful for buildings, trees or other set dressings | false |

anisotropy

Traverse through materials in a glTF model to set anisotropic filtering value. This component only accepts one optional number value. | Attribute Type | Description | Default Value | | -------- | ----------- | ------------- | | number | Desired anisotropy value for all texture maps found while traversing the model. Setting to 0 (default) will set the value to the maximum value supported by hardware. | 0 |

Examples

For each example, press <ctrl> + <alt> + <i> once scene is loaded to inspect individual gltf-part entities as a "manual test".

CLICK FOR ONLINE EXAMPLES

Installation

Browser

Install and use by directly including the browser files:

<head>
  <title>My A-Frame Scene</title>
  <script src="https://aframe.io/releases/1.2.0/aframe.min.js"></script>
  <script src="https://unpkg.com/[email protected]/dist/aframe-gltf-helpers.min.js"></script>
</head>

<body>
  <a-scene>
    <a-entity gltf-part-plus="src: #draco-buildings-model; part: SM3D_Bld_Mixed_Corner_4fl;" model-center anisotropy></a-entity>
  </a-scene>
</body>

npm

Install via npm:

npm install aframe-gltf-helpers

Then require and use.

require('aframe');
require('aframe-gltf-helpers');

About the Example Models

  • The cubes.gltf model has 3 cubes translated to arbitrary locations within a few units of 0 0 0 with no rotation. MIT License.
  • The buildings.glb model has 5 buildings with "applied" custom translations applied in Blender, then exported as a glb with draco compression. The buildings are paid models from the Synty Polygon City Pack for use in Streetmix3D and are for testing only. Please purchase a license for $19.99 from them if you use these models in your own projects.
  • Meshopt gltf pack output of the same buildings model as 3 files: gltfpack -kn -i ./scenesmall3.gltf -o buildings-gltfpackkn.glb gltfpack -c -kn -i ./scenesmall3.gltf -o buildings-gltfpackckn.glb gltfpack -cc -kn -i ./scenesmall3.gltf -o buildings-gltfpack-cc-kn.glb
  • New Flyer XD40 Bus Model Credits: New Flyer XD40 Bus |

About the Workflow

These are part of an experimental glTF workflow for handling assets related to Streetmix3D.

The current workflow is roughly:

  • "Main" Blender file for a collection of models that share the same material such as "urban buildings", "suburban buildings", "plants and trees", "vehicles", etc. (Only 1 material keep things simple at first, future support for more.)
  • Export to a gltf with separate bin and image files (some separate gltf files may share the same image, I don't see a need to combine to one glb). Enable Draco mesh compression.
  • Use this repo's gltf-part-plus component to load part from draco compressed file.

Alternate workflow (not working):

  • Use the Main Blender file to export a gltf without draco compression.
  • Use meshopt gltfpack with compression such as gltfpack -cc -kn -i ./scenesmall3.gltf -o buildings-gltfpack-cc-kn.glb to optimize and compress
  • Or use meshopt gltfpack without such as gltfpack -kn -i ./scenesmall3.gltf -o buildings-gltfpack-kn.glb and serve with a web host that automatically gzip compresses (not github pages at the moment)

Wishlist

I'd like to add:

  • ability to support meshopt gltfpack with -c option, similar in spirit to draco support
  • automated testing for each example
  • instancing