atteneder / Gltfast
Projects that are alternatives of or similar to Gltfast
glTFast 🚀
glTFast enables loading glTF™ (GL Transmission Format) asset files in Unity.
It focuses on speed, memory efficiency and a small build footprint.
Try the WebGL Demo and check out the demo project.
Features
glTFast supports runtime loading of glTF 2.0 files.
It supports large parts of the glTF 2.0 specification plus many extensions and runs on following platforms:
- WebGL
- iOS
- Android
- Windows
- macOS
- Linux
- Universal Windows Platform
It is planned to become feature complete. Most notable missing features are:
- No animations
- No morph targets
See the list of features/extensions for details and limitations.
Installing
The easiest way to install is to download and open the Installer Package
It runs a script that installs glTFast via a scoped registry.
Afterwards glTFast and further, optional packages are listed in the Package Manager (under My Registries) and can be installed and updated from there.
Optional dependencies
- Draco 3D Data Compression Unity Package (provides support for KHR_draco_mesh_compression)
- KTX/Basis Texture Unity Package (in Beta; provides support for KHR_texture_basisu)
Alternative: Install via GIT URL
Add glTFast via Unity's Package Manager ( Window -> Package Manager ). Click the ➕ on the top left and choose Add package from GIT URL.
Enter the following URL:
https://github.com/atteneder/glTFast.git
To add support for Draco mesh compression, repeat the last step and also add the DracoUnity packages using this URL:
https://gitlab.com/atteneder/DracoUnity.git
Note: You have to have a GIT LFS client (large file support) installed on your system. Otherwise you will get an error that the native library file (dll on Windows) is corrupt!
glTFast 2.x requires Unity 2019.3 or newer. For older Unity versions see Legacy Installation.
Usage
You can load a glTF asset from an URL or a file path.
Load via Component
Add a GltfAsset
component to a GameObject.
Load via Script
var gltf = gameObject.AddComponent<GLTFast.GltfAsset>();
gltf.url = "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/Duck/glTF/Duck.gltf";
See Load via Script in the detailed documentation for instructions how to customize the loading behaviour via script.
Materials and Shader Variants
❗ IMPORTANT ❗
glTFast uses custom shaders that you have to include in builds in order to make materials work. If materials are fine in the Unity Editor but not in builds, chances are some shaders (or variants) are missing.
Read the section Materials and Shader Variants in the Documentation for details.
Advanced
The loading behavior can be highly customized:
- React to loading events by adding event listeners
- Customize instantiation
- Load glTF once and instantiate it many times (see example)
- Access data of glTF scene (for example get material; see example)
- Tweak and optimize loading performance
See the Documentation for details.
Roadmap
Find plans for upcoming changes at the milestones.
Motivation
Goals
- Stay fast, memory efficient and small
- Become feature complete
- Support 100% of the glTF 2.0 specification
- Support all official Khronos extensions
- Support selected vendor extension
- Universally usable…
- …across all popular Unity versions
- …across all platforms and devices
- …across different project setups (all important render pipelines, GameObject or entity component system based, DOTS, Tiny, etc.)
- Allow customization
Extended goals
- glTF Import (create prefab from glTF in the Editor)
- glTF Authoring (create optimized glTFs from prefabs)
- glTF Runtime Export
Non-goals
- glTF 1.0 backwards compatibility
Out of scope
Ideas worth pursuing, but not within this package:
- Asset lifetime management
- Download management with asset caching
Get involved
Contributions like ideas, comments, critique, bug reports, pull requests are highly appreciated. Feel free to get in contact if you consider using or improving glTFast.
Supporters
Thanks to Embibe for sponsoring the development of skin support! ❤️
License
Copyright (c) 2020 Andreas Atteneder, All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use files in this repository except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Trademarks
Unity is a registered trademark of Unity Technologies.
Khronos® is a registered trademark and glTF™ is a trademark of The Khronos Group Inc.