glTFast for Unity
glTFast enables use of glTF™ (GL Transmission Format) asset files in Unity.
It focuses on speed, memory efficiency and a small build footprint while also providing:
- 100% glTF 2.0 specification compliance
- Ease of use
- Robustness and Stability
- Customization and extensibility for advanced users
Check out the demo project and try the WebGL Demo.
Features
glTFast supports the full glTF 2.0 specification and many extensions. It works with Universal, High Definition and the Built-In Render Pipelines on all platforms.
See the comprehensive list of supported features and extensions.
Workflows
There are four use-cases for glTF within Unity
- Import
- Runtime Import/Loading in games/applications
- Editor Import (i.e. import assets at design-time)
- Export
- Runtime Export (save and share dynamic, user-generated 3D content)
- Editor Export (Unity as glTF authoring tool)
Read more about the workflows in the documentation.
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 Packages
There are some related package that improve glTFast by extending its feature set.
- 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)
- meshoptimizer decompression for Unity (provides support for EXT_meshopt_compression)
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 more functionality, repeat the last step and also add related packages using these URLs:
https://github.com/atteneder/DracoUnity.git
for Draco mesh compressionhttps://github.com/atteneder/KtxUnity.git
for KTX texture compression
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.
Runtime Loading via Component
Add a GltfAsset
component to a GameObject.
Runtime Loading 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 Runtime Loading via Script in the documentation for more details and instructions how to customize the loading behaviour via script.
Editor Import
Move or copy glTF files into your project's Assets folder, similar to other 3D formats:
glTFast will import them to native Unity prefabs and add them to the asset database.
See Editor Import in the documentation for details.
Editor Export
The main menu has a couple of entries for glTF export under File > Export
and glTFs can also be
created via script.
Project Setup
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.
Get involved
Contributions in the form of 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-2021 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.