All notable changes to this package will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- fix: compiler error with
ParticleSystemBakeMeshOptions
before 2022.3.11f1 since that's where the API was introduced - fix: prevent incorrect warning when meshes don't have UV1/UV2 attributes
- fix: don't call export multiple times from context menu for multi-selections
- fix: remove unused property from
GLTFComponent
- fix: potential NullReferenceExceptions when importing material-only, mesh-only or texture-only glTF files
- fix: check for missing primitives on mesh import instead of throwing
- fix: GLTFSceneImporter reference counting properly tracks Animation data now
- fix: incorrect callback subscription in glTF Material editing
- fix: CanvasExport plugin was not working correctly in WebGL builds
- fix: rare case of incorrect texture export with invalid texture content hash (thanks @Vaso64)
- fix: ensure materials created with Create > UnityGLTF > Material use UnityGLTF as importer instead of glTFast
- fix: Canvas export plugin was not correctly updating the canvas mesh in builds
- fix: Particle Bake export plugin was not working correctly in 2022.3
- fix: Import/Export plugin enabled/disabled state was not correctly serialized in some cases
- fix: TMPro export plugin uses UnityGLTF shaders for export now instead of adding another dependency
- fix: GLTFSceneImporter can be called without external data loader, but will warn that external data will not be loaded. Previously, a data loader had to be added even when it was not needed.
- change: log warning when exporting UV0 and UV1 with more than 2 components, as glTF only supports 2-component UVs
- change: simplify sampler usage in PBRGraph where possible to prevent warnings in later Unity versions
- change: simplify PBRGraph variants to reduce shader variant count. This removes a separate option to use vertex color.
- change: material-only files are now imported as MaterialLibrary assets with Material sub-assets, even when only a single material is present
- add: log more meaningful exception messages on import
- add: sheen support for PBRGraph
- add: PBRGraph UI properly shows sheen and dispersion properties
- add: allow flipping humanoid root bone on import to support more avatar types (like Meta Avatars)
- add: new "Info" tab in GLTFImporter for asset information (generator, copyright, etc.) about the imported file
- add: ShaderOverride is now public on GLTFComponent
- add: new GLTFSceneImporter constructor overload for easier loading of files from streams
- add: meshes and textures can now be deduplicated on import, since many exporters don't properly instance them
- add: UV2 is exported as 2-, 3-, or 4-component texture coordinate. 3- and 4-component texture coordinates are not in the core glTF spec, but widely supported by implementations.
- add: complete PBRGraph and UnlitGraph Shader Variant Collections for easier runtime import and export of glTF files
- add: options for shader pass stripping in builds to reduce variant count and compilation times
- add: ability to export a set of materials as material-only glTF or glb file
- add: option to add new materials to glTF Material Libraries (material-only files)
- fix: empty or invalid root transforms should not be exported
- fix: when no root transforms are exported, no scene should be created by default
- fix: image filenames were sometimes incorrectly exported when exporting .gltf files (#737)
- fix: set wrap mode for legacy animation import mode
- fix: added missing ExtTransform for some textures in animationpointer import/export, fixes when only offset exist (#740)
- fix: added uv-starts-at-top check for transmission support on WebGL and other platforms (#746)
- fix: added missing generate mitmaps to ktx texture load (#752)
- fix: bone name mapping for exact names was not applied on humanoid import (#751)
- fix: added missing using system for uwp target (#757)
- add: allow importing non-standard VEC3 and VEC4 TEXCOORD_n data and convert it to VEC2
- add: exposed texture readwrite enabled and generate mipmaps option to importer
- change: removed log for loaded node count mismatch, extensions can modify node counts so the log was misleading
- change: removed loaded texture count error log: when multiple samplers are used for one texture, the textures will be duplicated
- fix: PolySpatial support now also includes emission textures and colors
- Unity bug IN-72885 is fixed in PolySpatial 1.2.3+, please update
- fix: avoid overwriting texture files with identical names on glTF export
- fix: avoid NullReferenceException when read values from array are not a number (invalid glTF but encountered in the wild)
- fix: rough refraction feature sometimes had incorrect cameraColorTarget as source
- fix: better math for index of refraction – improves visual correctness of transmission, volume, dispersion
- fix: stripping empty roots now respects when some of those roots are animated and doesn't strip them
- fix: import of default unspecified materials was sometimes not handled correctly
- fix: incorrect duplicated texture tiling regression due to PolySpatial support changes
- add: KHR_animation_pointer import support. Export has been supported for a couple years.
- add: KHR_materials_dispersion import, export, and shader support
- fix: correct disposal of toktx textures after API change in upstream dependency (#710)
- fix: incorrect blendshape tangents when using sparse accessor export
- fix: wrong texture import offset when importing KTX2 textures without texture transforms (#709)
- fix: use of draco with tangents and creating the draco attribute map with all the other mesh attributes (#726)
- fix: export of multiple instances of the same skinned mesh not reusing attributes correctly
- fix: extra memory usage due to unnecessary duplication of the first imported instance of a texture (#713)
- fix: one case of default texture import filter mode being set to TriLinear instead of Bilinear
- change: outdated warning about occlusion textures not being on the UV1 channel (support has improved)
- add: visual indicator which extensions are required for a given file when the file has import errors
- add: support for humanoid import for Meta avatar bone hierarchies
- add: initial support for PolySpatial/MaterialX conversion for
PBRGraph
andUnlitGraph
(#725)- due to a Unity bug (IN-72885) emission colors and textures are currently not working correctly
- add: Camera import support (#706)
- fix: Exception caused by animation targeting a missing material
- add:
OnAfterMeshExport
callback hook which allows adding extensions to the exported gltf mesh
- fix: add
com.unity.mathematics
as required dependency - fix: added null check in mesh data preparation code to prevent exception for files without nodes (e.g. just materials)
- fix: GLTFRecorder issue where resulting animation would have linear interpolation for cases where a jump was expected
- fix: GLTFSettings toolbar active index correctly stored in session now
- fix: don't export empty buffers with length 0
- fix: check for valid Humanoid avatar before export (#681)
- fix: work around SRP issue with invalid camera data in render passes affecting rough refractions
- fix: issue when morph targets have varying normals and tangents data (#682)
- fix: prevent exception in earlier 2022.x versions with
isDataSRGB
not being available - fix: missing normalization checks for quantized accessor data (#693)
- fix: make sure topology are triangles for calculating normals/tangents (#133)
- fix: KTX2 textures were not checking for linear for "Fix All" importer button
- fix: MAOS maps (combined metallic/ambient occlusion/roughness) were not exported correctly
- fix: wrong accessor
UBYTE
>BYTE
andBYTE
>SBYTE
conversion when reading data in some - fix: restore multithreading support and improve performance
- feat: import plugin for
EXT_mesh_gpu_instancing
extension - feat: added blend shape frame weight import option for easier animation retargeting
- feat: show failing filenames more clearly when exceptions occur during import
- feat: add option to hide scene obj during loading in
GLTFComponent
- feat: add import support for glTF
LineLoop
,TriangleStrip
,TriangleFan
topologies - feat: performance improvements in name resolution for importing files with many nodes
- feat: performance improvements by using
NativeArray
andMathematics
types
- fix: spritesheet animation keyframes should be constant
- change: log warning if spritesheet used for animation contains only one image/sprite (currently all images must be part of the same spritesheet)
UnityGLTF has been maintained in a fork since the end of 2019.
Hundreds of fixes have been made, numerous features have been added, and the library has been brought up-to-speed on latest glTF developments,
modern material extensions, and Unity versions. We're happy to bring these changes back to the main repository so everyone can benefit.
UnityGLTF has turned into an extremely versatile glTF exporter and importer, which excellent support for data roundtrips and glTF-first workflows in Unity.
Please open an issue if you find any problems with the release candidate.
- change: Readme updates with links changed back to KhronosGroup/UnityGLTF
- change: Mark as release candidate
- fix: tangent recalculation was not working when importing draco meshes without tangents
- fix: DXT5nm conversion for non-readable textures
- fix: color space when loading KTX2 normals was incorrect
- fix: tiling and offset properties were displayed even when TEXTURE_TRANSFORMS was disabled on 2022.3+
- fix: nullref in texture format validation when texture is missing
- fix: ifdefs to support Draco package 5.x from Unity Registry (
com.unity.cloud.draco
) - add: show UI for adding/removing optional compression packages in GLTFSettings
- fix: bone weights were not properly imported from Draco compressed meshes due to bug in Unity's
CombineMeshes
- fix: data loader was preventing multi-threaded imports from working
- fix: compilation error when
TMPro
package is not present - fix: TMPro detection when
[email protected]
is present which has TMPro embedded - fix: normal map color space was wrong on non-standalone target platforms when normal import settings is set to DXT5nm, which is default on Unity 2021.3+ on some platforms
- fix: normal maps were not marked as Normal on editor import which is required for DXT5nm support
- fix: normal maps imported at runtime now set a
_NormalMapFormatXYZ
flag on their materials to ensure correct display - fix: assets were not reimported when normal map setting changed between XYZ and DXT5nm (requires domain reload)
- fix: prepare for changed package declarations due to draco/ktx packages moving registries
- fix: GLTFRecorder should respect specified
UseAnimationPointer
setting - fix: warn after editor import when textures on disk have incorrect linear/normal settings
- change: incorrectly named PBRGraph material option
_AutoSurfaceMode
is now called_OverrideSurfaceMode
- change: display texture settings warning above tabbed inspector for better visibility
- fix: default property deserializer was missing for nested extras objects in
MeshPrimitive
- fix potential
ImportContext
NullRef - change: move blend shape target names to mesh, according to KhronosGroup/glTF#1631
- add: selection export options are also in the GameObject menu now for right-click > export support
- fix: import scale was not applied to position animation curves
- fix: make sure
GLTFImporter
uses the default plugin import settings - change: refactored import/export plugins for better control of what's enabled and what's not. This allows shipping experimental/optional plugins earlier.
- change: mark
GLTFSceneExporter.*
static callbacks obsolete. Use plugins instead - add: allow overrides for which editor import plugins are used
- add: export plugin for
MSFT_lod
- add: export plugin for
KHR_materials_variants
. Add theMaterialVariants
component to your root to configure variants. - add: export plugin to bake particle systems to meshes
- add: export plugin to bake canvas to meshes
- add: export plugin to bake TMPro GameObjects to meshes
- add: per-import settings for which plugins are applied
- add:
BeforeNodeExport
callback for export plugins - add: warning icon for plugins that e.g. have missing package dependencies
- fix: verify tangent.w component on animation export (should be exactly -1 or 1)
- fix: recalculate mesh bounds when changing import scale
- fix: ensure correct quaternion continuity on animation import
- fix: sanitize Animator state names on import
- add: allow enabling GPU Instancing for materials on editor import
- add: ability to export files and buffer views, useful for e.g. KHR_audio
- fix: animation curve sorting running before validation
- add: support to animate camera background color
- fix: issue where importer context root object was not set
- fix: wrong flipped triangles when it's required to generate them ("Fox"-Test model) + fixed wrong imported vertex data on submeshes
- fix: draco ifdef compiler error
- fix: import reuse joints and weights for submeshes
- fix: import normals when tangents are required
- fix: humanoid importer inspector not being shown when model doesn't have animation data
- fix: animation export for identical clip+node
- fix: exporting glTF with external EXR texture falsely being encoded as PNG
- change: importer exposes node- and mesh-cache
- fix: default dataloader is now UnityWebRequestLoader
- fix: importing animations at runtime did not work in specific settings combinations
- fix: create default import context when importing files at runtime
- fix: meshes without submeshes but multiple materials behave the same as in Unity now (results in multiple draw calls)
- change: remove animation bounds nodes from GLTFRecorder again, can be added back via callbacks if needed
- feat: add option to import blend shape names or defaults
- feat: add OnBeforeAddAnimationData callback to GLTFRecorder
- feat: expose ExportAccessor(byte[]) and configurable overload for easier arbitrary data export
- change: always export root level objects / objects explicitly requested to be exported
- fix: GPU Instancing option was missing in 2021.x
- fix: Prevent ArgumentException when animating same property name on multiple components on the same GameObject
- change: Make glTF material editing opt-in per material
- add: glb textures can now be compressed to platform-default settings at import
- fix: improvements to light color and value export
- fix: light import color space
- fix: sanitize alpha cutoff value before writing
- fix: convert light and material color spaces when exporting for animation
- add: allow choice between implicit and explicit queue and surface type control (experimental)
- fix: restore ShouldExportTransform functionality on latest dev branch
- fix: removed incorrect smoothness property from PBRGraph
- fix: wrong file extension when extracting textures (was ".mat", now ".asset")
- fix: ensure default glTF sampling settings on loaded textures (in case there is no sampling information in the gltf)
- change: warn when importing legacy KHR_materials_pbrSpecularGlossiness extension
- change: remove obsolete GLTFSceneImporter constructors
- change: adjusted repository structure for modern package formats
- change: removed legacy test files and legacy samples that were used for testing (tests should come back at a later point)
- change: removed legacy folders from repository
- add: gltf filename log output when textures or extensions can't be imported
- fix: serialize/deserialize ExtTextureTransform for textures in material extensions
- fix: compiler warnings in unity 2023.1
- fix: animation interpolation on import (unwanted smoothing of animation curves)
- fix: blendshapes with sparse accessors on import (results in distorted meshes)
- fix: quantize decoding (wrong data type conversion)
- fix: when exporting baked humanoid animation data with KHR_animation_pointer enabled, additional tracks were created for the already baked animation
- fix: relative paths containing ".." were not resolved correctly when importing in the Editor
- change: add external images to import dependencies (was conflicting with the ktx2 importer)
- change: import non referenced materials and textures (Use GLTFSceneImporter.LoadUnreferencedImagesAndMaterials to enable it) - In editor import: default is true, runtime: false
- change: don't export submeshes with 0 vertices
- change: RoughRefractionFeature (RenderFeature) to support 2023.1
- add: uv channel support for export
- add: textures without names on import get a temp. name (will get removed on export again)
- add: clearcoat support (Normals are still not supported in pbrgraph shader)
- add: log error when trying to load exr textures (not supported)
- add: per texture transforms in pbrgraph (uv, rotation, scale/offset)
- add: stream length check in LoadBufferView, to prevent infinite loop when trying to read more data
- add: new import options in Gltf loading at runtime: Normals, Tangents, SwapUVs (see ImportOptions)
- add: meshOpt import support (requires package: com.unity.meshopt.decompress)
- fix: export of humanoid animations where both transforms as well as blendshapes are animated
- fix: export texture transform for metallicRoughness
- add: draco import support (requires package: com.atteneder.draco)
- add: KTX2 import support (requires package: com.atteneder.ktx)
- fix: sampled animations need individual GLTFAnimations since sampling another avatar is not transferrable
- fix: switching from URP/Lit or Standard to PBRGraph should set cutoff correctly so it matches the UI / shader expectations (#68)
- fix: conversion with _EMISSION keyword off was still setting emissive values (#86)
- fix: typo in TMPro shader (#83)
- fix: animated property validation was incorrect for 3-component color values and camera properties
- fix: import path retargeting exception in some cases
- fix: Range shader property type was missing from propery validation
- feat: allow changing GLTFRecorderClip animation output name
- remove: unnecessary forced texture transform setting
- fix: make sure default animation state is first in clip list on export
- fix: regarget animation clip paths when stripping empty hierarchy nodes
- fix: watch current render pipeline for changes so that we can trigger reimports
- fix: texture_ST properties aren't properly saved since ShaderGraph marks the textures as [NoScaleOffset} (IN-16486)
- fix: ArgumentException when animated property doesnt exist anymore on assigned shader where the PropertyType can not be resolved then
- add: sorting of animation clips
- change: dont export animation if expected channel count is not met (e.g. Vector2 has only one channel)
- fix: compilation warning
- fix: extracting multiple materials would throw error in serialized object access
- fix: "Calculate Mikktspace" tangents can be NaN in some cases
- internal: remove GradientSkybox shader from tests
- fix: fresh project reimport was breaking ImportPlugin API
- fix: editor import in 2021.x, added ShaderGraph dependency now
- fix: blendshape frame weight was incorrectly calculated on export
- fix: player compilation
- change: bump Unity dependency to 2020.3
- add: ImportPlugin API with
GltfImportPlugin
andGltfImportPluginContext
for receiving callbacks during import
- add: option to disable baking of AnimatorState speed value into animationclip
- fix: doublesided import when shader already had that set explicitly to false
- fix: sampling animation rigging wasn't working anymore
- fix: added warning about obsolete code and what to do
- fix: exposed
GLTFImporterHelper.TextureImportSettingsAreCorrect
andGLTFImporterHelper.FixTextureImportSettings
again
- fix: nullref when importing files without animation in the editor
- feat: allow Mecanim Humanoid import in Editor with Avatar creation
- feat: better structure for glTF importer with tabs
- fix: don't try to generate UV coordinates for non-triangle meshes
- fix: don't attempt to recalculate normals/tangents for non-triangle meshes
- fix: wrap material extraction in StartEditing/StopEditing calls (fixes #81)
- fix: imports that failed on first try (e.g. missing textures, other errors) would keep using the old asset identifier instead of defaulting to the new one
- fix: runtime recording of SkinnedMeshRenderers without blend shapes was failing in some cases (fixes #80)
- fix: disabling Volume from PBRGraph would still use volume values
- fix: imported animation blendshape frame weights were not roundtripping well
- fix: some animations not imported in Mecanim mode
- fix: compilation issues with ShaderGraph package not present
- fix: ExportMesh not exporting submeshes in some cases
- fix: missing export mesh marker
- fix: revert other possible modifications when recording animations
- fix: exporting animation curves failed for blendshape animations on missing targets
- fix: better info for which object has missing curves on animation export
- feat: transparent/double-sided materials can now be upgraded from 2020.x to 2021.x+
- fix: revert prefab modifications when recording humanoid animation from prefab assets to work around AnimationMode limitations
- fix: creation of duplicated keyframe when there is only one keyframe
- change: clarify log for rotation animation export with wrong number of curves
- fix: specular extension factor roundtrip was incorrect
- fix: MSFT_lods import created the wrong hierarchy and the culling option wasn't working
- fix: edge case in node/mesh imports in extensions that could lead to a stack overflow
- fix: calling
GLTFImporterInspector.FixTextureImportSettings
could result in an infite loop when called from an AssetPostprocessor
- fix: set morph target names from mesh extras on import (#70, thanks @emperorofmars)
- fix: broken texture references prevented files from loading entirely
- fix: .bin file was not properly registered as dependency for the imported .gltf asset
- fix: shader issue with instance ID transfer on 2021.x (#71, thanks @Jerem-35)
- fix: normal map colorspace was wrong on Mac in some cases (#74, thanks @robertlong)
- fix: ORM maps were exported with empty/unneeded alpha channel (#77, thanks @robertlong)
- feat: expose ExportNode API
- feat: optionally calculate and place bounds markers in GltfRecorder for viewers that don't caclulate bounds from animated skinned meshes properly (experimental)
- fix: animator being disabled after exporting humanoid animationclip
- fix: ignore MotionT and MotionQ on animator, can't be resolved for KHR_animation, seems to be a magic unity name
- fix: build error by accessing imageContentHash
- change: export HDR textures with zip compression by default
- feat: allow aborting export when not in Play Mode and meshes are not readable - seems to be a random Unity synchronization context issue
- fix: don't export unsupported light types (e.g. area light has type "rectangle" which is not supported in glTF)
- fix: Export human motion translation
- fix: prevent exporting the same baked humanoid clip for different avatars, needs individual clips since we're baking them (not retargeting at runtime)
- fix: reusing animation clips between objects with different hierarchies caused some targets to be missing, depending on export order
- change: remove warning for KHR_animation_pointer resolving when the unresolved object is a transform, that's part of core
- fix: wrong texture name in Texture Transform check
- fix: better check if a texture is a normal map and needs the right import settings
- fix: uris with escaped characters didn't correctly import in the editor
- fix: export of color animations where only one channel is animated
- fix: order of animationcurve properties when exporing animated colors in component where e.g. a user started by animating a single channel first (e.g. alpha) and later added keyframes for other channels
- fix: issue with exporting shared texture samplers in some cases
- fix: weights on skinned meshes shouldn't be resolved by custom KHR_animation_pointer resolvers as they're part of the core spec
- change: remove logs when caching data
- change: move cache clear button into settings
- add: KHR_materials_clearcoat roundtrip support (no in-editor visualization yet)
- add: caching of texture bytes on disc for faster export (can be disabled in UnityGLTFSettings)
- add: AfterPrimitiveExport event
- add: spritesheet keyframe animation export
- change: print warning when animation pointer cant be resolved and add filtering of objects that cant be resolved before building animation data
- fix: index discrepancy between _exportedMaterials and _root.Materials lead to wrong texture indices being returned in some cases
- fix: don't write and declare IOR when it's at the default value
- fix: importing textures with names resulted in those names not being used (only image names were used)
- fix: importing files without baseMap but using texture transforms for normal or emissive would result in texture transforms not being used
- fix: default material was missing in build
- fix: GLTFRecorder didn't properly record with animation pointer off anymore
- fix: unified access to SkinnedMeshRenderer weights on export
- fix: nullrefs in ExportPlan with missing SkinnedMeshRenderer
- feat: allow passing custom settings into GLTFRecorder
- fix: disabled MeshRenderers and SkinnedMeshRenderers were not exported despite ExportDisabledGameObjects being on
- fix: sample root transform as well in Humanoid export to prevent shifting it around when recording
- fix: exception thrown when trying to add a material instance id twice
- fix: ExportMeshes was not exporting new meshes since the internal material check didn't let it through
- fix: blend shape weight animation wasn't properly exported in some cases
- fix: IOR extension may end up as null when IOR was animated
- fix: rough refracton LOD access is now affected by alpha blending
- feat: HDR render textures can be exported now
- feat: add ExportMesh(Mesh) API as convenience helper
- feat: add material remapping to glTF/GLB importer
- chore: code cleanup for rough refraction and material inspector
- change: animation export code paths have been consolidated, less differences between KHR_animation_pointer and regular export
- change: bumped min Unity version to 2019.4
- fix: set linear export setting before accessing texture exporter settings for unknown textures
- fix: glb export now using utf8 (no BOM)
- fix: simplify and fix normals export
- add: import options for animation loop and re-enable by default for Mecanim
- fix: reimport assets when colorspace changes
- fix: texture map type needs to be passed into UniqueTexture, otherwise textures used for different things don't get exported correctly
- fix: bake smoothness values into roughness map if there's no good conversion
- fix: alpha cutout export on BiRP
- fix: base color warning should only be shown for transparent objects
- fix: improve alpha cutout inspector for 2020.3
- fix: smoothness was inverted / removed even if no smoothness map existed
- change: refactor TextureMapType to contain options for conversion to clean up export and introduce ability to convert smoothness
- change: refactor textureSlots, usage of textureSlot names and how they should be called
- fix: KHR_animation_pointer bug with re-used animations targeting properties on nodes
- fix: blend shapes and blend shape animations were not imported (note: sparse accessor import not working yet)
- fix: allow doublesided and transparent import on 2020.3 URP with PBRGraph
- fix: make RegisterPrimitivesWithNode API public, belongs to ExportMesh
- fix: UnlitGraph used wrong texture transform in some cases
- fix: BiRP texture import on legacy shaders in < 2020.3 had flipped texture transforms
- fix: ExporterMaterials compilation issue on 2018.x
- fix: some TMPro materials were exported incorrectly
- fix: first-time import was failing to find shaders on 2020.x in some cases
- fix: TMPro texture conversion one export was blurry at the bottom of the texture
- fix: transmission/volume mat was incorrectly imported
- fix: transparency was incorrectly imported on 2020.x
- fix: material validation on 2021.x wasn't properly turning transparency on for some imports
- fix: no compilation errors on 2018.4 + 2019.4
- fix: checking materials for _ST shader properties was failing on specific Unity versions
- fix: AnimationPointerResolver was warning in cases that are allowed / no warning needed
- fix: build compilation issues on 2022+
- fix: default scene name differed from glTFast, which broke switching importers. Both use "Scene" now
- fix: import warnings for metallicRoughness texture swizzling only print when a metallicRoughness texture is actually used
- feat: tangents are recalculated on import now
- feat: TMPro meshes export with baked texture now instead of SDF texture
- feat: added AfterTextureExportDelegate/BeforeTextureExportDelegate and UniqueTexture hash for modifying textures on export
- change: explicit bool option to turn KHR_materials_volume export on and off
- change: removed outdated samples from package
- change: if a mesh in the glTF doesn't specify a name it will import without name now instead of using a default name
- fix: workaround for ShaderGraph bug on 2021.2+ that breaks defining baseColorTexture_ST manually
- fix: workaround for Unity regression in 2022.1+ where checking material properties returns wrong results in some cases
- feat: allow exporting of Humanoid animation clips (get baked to generic)
- change: texture aniso values >= 1 now result in LinearMipmapLinear filtering to match visual result in Unity better
- fix: log error instead of exception for missing textures on export
- feat: allow referencing GameObjects for
KHR_animation_pointer
- change: animated fields with
KHR_animation_pointer
now try to find their correct Unity properties instead of the serialized field (m_ prefix disappears)
- add: preliminary HDR texture export in EXT_texture_exr extension
- fix: Unity Editor module related issues
- fix: wrongly exporting two keyframes for animations with only one keyframe
- fix: children of lights and cameras were inverted
- fix: KHR_animation_pointer export where member is declared on base type
- fix: nullref in export of missing mesh
- fix: emissive color alpha was set to 1 in some roundtrip cases when it should have been 0
- fix: nullref in import when glTF had null textures (against the spec, but other viewers tolerate it)
- fix: unlit double sided was incorrectly imported in BiRP
- fix: PBRGraphUI didn't properly draw infos for SkinnedMeshRenderer
- fix: added safeguards against Shader.Find not working in first imports (fixes #51)
- fix: textures without mipmaps should export closer to intended now
- fix: missing pbrMetallicRoughness property was treated incorrectly
- fix: BeforeSceneExport was missing from gltf+bin exports
- feat: warn in PBRGraphGUI when UV0 isn't present (fixes #52)
- feat: texture channel swizzling on URP/Lit > PBRGraph material conversion in 2022.1+
- feat: expose ExportMesh API using UniquePrimitive array to export arbitrary meshes from extensions (#55, thanks @robertlong)
- feat: GLTFSettings can now be passed into GLTFSceneExporter directly, falls back to project settings if none are provided
- remove: public settings API on GLTFSceneExporter is now gone. Pass in custom settings via ExportOptions if needed.
- fix: converting PBRGraph and UnlitGraph to each other shouldn't warn
- fix: multiple animators referencing the same clip exported animations incorrectly with KHR_animation_pointer on
- fix: implemented partial animation target removal when some bindings animate missing objects
- change: asset identifier for imported assets is now an explicit option
- change: removed compilation flag to use new asset identifier, use the explicit option instead
- fix: accessor submesh primtives were incorrectly assigned after internal duplication
- fix: don't add import dependency on shaders, load them by GUID instead
- fix: URI-escaped file names weren't always resolved correctly
- fix: some KHR_animation_pointer export type fixes (vec3 colors vs. vec4 colors)
- feat: add color helpers to PBRGraphGUI
- feat: add UnlitGraph for 2021.2+
- feat: new API, GetPrimitivesForMesh to add extensions to exported meshes (e.g. KHR_materials_variants)
- fix: PBRGraph assignable again from shader dropdown
- fix: various KHR_animation_pointer fixes to extension usage and property names
- fix: compilation fixes for Unity 2018/2019
- feat: add helper, callbacks and script generator for shader conversion
- change: Importer/Exporter are now multiple partials
- change: change GetAnimationTargetIdFrom[..] to Get[..]Index to clarify what it does
- fix: properly set BiRP ShaderGraph transparency keywords
- feat: PBRGraph property names now match glTF names directly (breaking change from 1.7.0+)
- feat: PBRGraph now has a custom shader GUI that also validates keywords
- fixed: same animation used on different objects should result in different pointer values with KHR_animation_pointer used
- fixed: nullref when adding animation data for null object (e.g. unused property clip)
- fixed: too many nodes get overwritten by duplicate animations with animation pointer
- changed: GetAnimationId now takes root transform parameter
- fixed: previously seen KHR_animation_pointer is now added to resolve list (e.g. when using animations on multiple objects and animating component values)
- fixed: OcclusionTexture tiling now defaults to (1,1)
- fixed: build errors on certain platforms
- fixed: fixed package version, color space changes require minor version bump, not just patch
- fixed: C# version error on 2020.3
- feat: show extensions and textures in importer inspector
- feat: export texture coord (UV0 / UV1) separately for "occlusionTexture" and "everything else", same as three.js
- fixed: editor import of .gltf files with textures now uses those textures directly instead of creating new ones
- fixed: exporting only includes extensions that are actually used or explicitly enabled
- fixed: no more differences in color space between exporting glTF + textures or glb with embedded textures
- fixed: importer properly declares shaders as dependencies, fixes library reimport errors
- fixed: animation clip import in Editor working again
- feat: sparse accessors import (partial)
- feat: UV rotation import/export (for baseColorTexture only right now)
- fixed: GLTFRecorderComponent error in play mode when only new input system is present
- fixed: animation export with KHR_animation_pointer and reused nodes
- fixed: passing invalid file names to Export could result in wrong buffer paths in JSON
- feat: experimental support for KHR_animation_pointer
- feat: experimental URP (2020.3+) & BiRP (2021.2+) Shader Graph for export and import,
UnityGLTF/PBRGraph
- feat: approximated support for exporting and importing KHR_materials_transmission, KHR_materials_volume, KHR_materials_ior, KHR_materials_iridescence, best used with
UnityGLTF/PBRGraph
- feat: renderer features and post effect for rough refraction / transmission (for URP and BiRP)
- fixed: light and camera directions were flipped when animated
- fixed: normal textures were exported with wrong color space in .gltf
- fixed: WebRequestLoader edge case with relative paths
- improved: better heuristic for PBR material export and generally better glTF-related material property export
- feat: allow replacing logger for GLTFSceneExporter with a custom one, allows to reduce number of logs
- feat: added more ProfilerMarkers
- removed: removed submodules from repository to make usage as submodule in other projects easier
- fixed: bad performance in GLTFRecorder when recording lots of animation and/or Blendshape weights
- fixed: some mismatched ProfilerMarker.Begin/End calls
- fixed: less allocations when writing accessors
- feat: allow recording root object in worldspace in GLTFRecorder
- feat: added experimental support for KHR_animation_pointer in-editor animation export (for select properties), can be turned on in
ProjectSettings/UnityGltf
- feat: added scene export as GLB (fixes #22)
- fixed: roundtrip issues with glTFast when alpha testing is used
- fixed: no build errors in Samples anymore
- fixed: allow exporting skinned mesh animations even when the mesh isn't readable (bone animation is then still exported)
- feat: added WebGL import support (export was already supported)
- feat: added WebGL animation export support
- feat: added onLoadComplete action to GLTFComponent
- feat: added ProfilerMarkers for export
- feat: import support for KHR_materials_emissive_strength
- changed: replaced FileLoader/WebRequestLoader with simpler UnityWebRequestLoader for better platform support. Use the previous ones if you need streaming.
- removed: removed unused shader variants from BiRP shaders
- fixed: sparse accessor JSON is properly parsed (no sparse accessor import support yet though)
- fixed: no more validation errors regarding minMag filters, bufferView.byteStride for animation samplers, bufferView.target for index/vertex data
- fixed: only export KHR_materials_emissive_strength if emissive intensity > 1
- fixed: URP roundtrip now works with glTFast imports (#42)
- fixed: better handling of filenames for glTF + bin + textures export (#41, #40)
- fixed: add vertex color alpha support, add _EmissionMap_ST support to BiRP shader
- fixed: exporting Prefab assets directly from Project Window wasn't working properly when ExportDisabled was off
- fixed: regression with serialization and roundtrip behaviour of spotlights
- fixed: incorrect UV offset for tiled textures on export in some cases
- feat: show exported glTF/GLB in explorer after exporting via Menu Item
- feat: expose API for
GetAnimationId
for custom export logic
- added: dialogue window will ask when meshes are not readable at runtime in the editor
- added: more samples regarding custom material extension export
- changed: more GltfSceneExporter methods are now public to allow for custom extension exporting
- changed: moving back to proper versioning; big jump from 1.0 to 1.5 to show that lots of changes have happened
- fixed: no more ScriptedImporter collisions between UnityGltf, glTFast and Siccity glTF
- fixed: corrected some export callback orders
- fixed: random hangs when importing .gltf files via ScriptedImporter
- fixed: correctly importing wrapModeS and wrapModeT now
- fixed: correctly importing Mask mode and cutoff now
- added better logs for unsupported animation tracks on export
- added public methods in GLTFSceneExporter to allow for custom animation export
- added first batch of samples for custom extensions export
- fixed: Auto Referenced is back on on AsmDefs to keep legacy behaviour
- fixed: first timeline keyframe was exported incorrectly in some cases
- fixed: skins should be exported even when animation export is off
- fixed: animation clips shouldn't be exported when exporting from Timeline recorder
- fixed: MetallicGlossMap scale was incorrectly exported in some cases
- added Accessor reuse between exported animations when they come from the same AnimationClip/speed pair
- added optional project setting to export animation clips with unique names (lots of viewers don't support that)
- fixed animation clips being merged when the same clip was used in multiple Animators
- added export option to merge animator states with identical names into one animation
- fixed export of multiple animations when they had the same name (was implicitly merged before, now explicit)
- fixed export of multiple animations when they had the same animator state name but different speeds
- fixed compilation issues on older Unity versions
- fixed exporting in memory to GLB byte array
- fixed dependency to Timeline and some modules not being clear / not guarded
- fixed Readme containing outdated install instructions
- fixed compiler errors when building to some platforms
- added ability to record and export blend shapes at runtime
- fixed settings not being loaded from Resources correctly at runtime
- fixed another case of duplicate recorded keyframes
- added start events to recorder, made key methods virtual
- fixed GLTF recorder component global shortcuts; now uses regular keycode during play mode
- added GLTFRecorderComponent to record at runtime
- renamed recorder files to follow existing filenames
- fixed compilation warning in GLTFSceneImporter
- fixed: create export directory if it doesn't exist
- fixed: blendshape export was missing flag to export no blendshapes at all
- fixed: in some cases would attempt to record duplicate timestamps which is not allowed
- fixed build error from GLTFSceneExporter
- added glTF Timeline exporter track that allows for both editor and runtime animation export
- added ability to export RenderTextures instead of erroring out, these can be exported for a while now
- added export callbacks and made an initial set of export methods public to enable custom export extensions (similar to three.js export callbacks)
- added export generator name
- fixed URP/Unlit color not being exported
- fixed light intensity values being incorrect depending on Unity settings
- fixed removeEmptyRootObjects on import not actually removing empty root objects
- fixed warning when exporting texture transforms if _MainTex_ST is present but _MainTex isn't
- fixed non-specific textures using the wrong export type in some cases, asking the AssetImporter now if one exists
- changed menu items, export options are now in "Assets/UnityGltf/" instead of a toplevel "GLTF" menu
- fixed
_scaleFactor
not being applied to child transform positions for editor import - fixed roundtrip issues when exporting models that have been imported by UnityGLTF or glTFast
- fixed metallicGlossMap being in the wrong color space on export if emission texture was also used
- fixed light/occlusion map being in the wrong color space during roundtrip
- fixed objects with EditorOnly tag being exported, are skipped now
- fixed imported object names potentially not being unique
- fixed normal map export format when build target is Android
- fixed export of animations when multiple exported objects share the same animation name (gets merged on export now)
- moved GLTF serialization from DLL to package to improve platform support (Unity will compile this for all platforms, no need for special DLLs)
- added sparse accessor export for blendshape positions/normals
- added ability to generate secondary UVs in UnityGLTF importer
- added warning when trying to use KTX2 textures which is currently not supported
- fix: don't attempt to export blendshape normals/tangents when mesh doesn't have them
- fix: warn and skip null bones in SkinnedMeshRenderer export
- added: settings for determining texture export type (png/jpeg depending on alpha channel) and JPEG quality
- added: setting to determine if vertex colors should be exported
- fixed animation export from legacy Animation component
- fixed exporting blendshapes for meshes that don't have bones
- fixed empty textures being generated on import
- fixed emission keyword missing on material import when only color but no texture was set
- fixed metallic and fade export not being correct in some cases
- added option to select which properties (normals/tangents) to export with blendshapes
- fixed ScriptedImporter not importing meshes from SkinnedMeshRenderers
- fixed ScriptedImporter not importing AnimationClips
- fixed ScriptedImporter changing material names on import
- fixed blend shape data being exported multiple times when meshes have multiple submeshes
- added blendshape animation export
- fixed settings file directory not being created on settings file creation
- added settings provider to change GLTF settings from
Project Settings/UnityGLTF
- added settings for control over object export based on visibility (
Camera.cullingMask
) and active state (GameObject.activeInHierarchy
) - changed: experimental texture-from-disk export is now disabled by default
- fixed exporting GameObjects with names that contain invalid filename characters
- fixed normal sampling in built-in pipeline which most likely was never correct with scaled normals
- fixed texture sampling for export/import that resulted in incorrect Point sampling in some cases
- fixed some issues with exporting skinned mesh renderers
- fixed regression with multi material/submesh export
- CHANGED: package name is now back to org.khronos.unitygltf
- fixed missing mesh logging an error, is now a warning
- fixed property export order for URP shaders that also have built-in property fallbacks
- fixed export path omitting extensions for cases such as 15-1.0.3.glb
- fixed issue with shared meshes that have different materials not being properly exported (#15)
- added MenuItem validation methods to disable them if no valid object for export is selected
- added ability to export selected Prefabs from the Project window directly
- changed the GLTFImporter to overrideExt for 2020.1+ so that importer for .glb files can be chosen when multiple are present
- fixed ACCESSOR_INDEX_PRIMITIVE_RESTART for meshes that have exactly 256 or 65536 vertices and used the wrong buffer type
- fixed vertex color import color space and alpha usage
- fixed incorrect keyframe values causing import abort, just warns now
- fixed GLB/GLTF export paths sometimes being incorrect (double or no extension)
- changed: GLB importer now embeds all meshes and textures as sub assets instead of putting them in the project; needs better importer inspector to allow for asset remapping.
- fixed color space issues with vertex colors and emissive
- fixed export of UV offset/tiling for non-main textures
- fixed exporting materials as PBR when they have _Metallic and _Glossiness (required only _MetallicGlossMap before)
- fixed issues with material export in URP where PBR wasn't properly detected and exported
- fixed issues with KHR_materials_pbrSpecularGlossinessExtension and materials that don't have textures
- fixed missing references in materials and prefabs
- fixed issue preventing build with UnityGLTF in project
- moved samples into subfolder
- added support for animation clip speed being set inside Animator States
- fix compilation errors in GLTFSerialization.dll on recompiling
- fix Newtonsoft.Json being copied to output directory
- fix a number of animation export issues
- add KHR_materials_unlit extension import and export
- fix KHR_lights_punctual extension always being set, even if no lights were exported
- fix invalid primitives being exported for meshes with 0 vertices
- removed export rotation offset that caused incorrect rotation in other softwares
- fix error thrown when vertex arrays have 0 elements (this is valid in FBX)
- add light export/import extensions
- merged a number of PRs that fix nullrefs on export/import
- merged in a number of material fix and null ref PRs
- add namespaces to scripts that didn't have them
- built GLTFSerialization.dll against Newtonsoft.JSON 12.0.3
- removed Newtonsoft.JSON.dll from package
- added dependency on [email protected]
- added 2020.2 compatibility
- fix sRGB/linear conversion for normal maps depending on Unity color space
- fix sRGB/linear conversion for colors exported from Unity
- fix rotation order for 180° hack
- note: please use Linear color space, normal maps break in Gamma color space right now
- hack: added 180° rotation on export (experimental), needs to be tested with animations, only works with a single root transform on export
- changed back to "preview" instead of "pfc" tag because stupid PackMan
- fix meta files for Tests folder
- fix build errors preventing builds
- fix PBR texture roundtrip with incorrect red channel
- lots of improvements to animation export
- automatic keyframe reduction
- BREAKING: disabled UV2 and vertex color export for web
- fixed texture export from memory instead of from disk
- fix breaking animations in SceneViewer due to omitted LINEAR sampler specification
- rebased all pfc feature branches on latest master
- back to org.khronos scope for easier switching between versions
- added animation export
- added PNG/JPG texture export from disk where available
- Upgraded to 2017.4
- Included various fixes (will update)
- Includes UPM package
- first built unity package release of UnityGLTF