Commit Graph

40 Commits (65a79029ecbfe73cc761129ab9c4c4a64f0fcdca)

Author SHA1 Message Date
Haroon Qureshi acad9a06e9 Add support for importing GLTF2 animations.
Refactors the glTF2 internal classes to more closely reflect the structure
of the actual GLTF2 file format. Adds implementations for reading skins
and animations from GLTF2 files into those structures.

Also provides implementations for converting skins and animations from GLTF
into assimp data structures.  Special handling is required for bone weights
since assimp stores vertex-weights-per-bone whereas GLTF2 stores
bone-weights-per-vertex.  Only supports keyframed LINEAR animation data;
STEP and CUBICSPLINE is not currently supported.
2018-10-29 14:44:29 -07:00
Stanlo Slasinski a1a17c1dda Read and write the KHR_materials_unlit glTF/2.0 extension. 2018-05-18 14:52:02 -07:00
Kim Kulling b049933d2f update license dates. 2018-01-28 19:42:05 +01:00
Axel Wefers 0e99f1f587 Build fix for 1684
Requires cast from size_t to uint64 like in other places, otherwise the call to the constructor for GenericValue() is ambiguous.

Fixes #1684
2018-01-11 10:15:05 -08:00
A. Breust ca152f41e2
Merge branch 'master' into 1674-buffer-relative-uri 2018-01-06 09:19:48 +01:00
Alexis Breust 9b5df71150 Not using external bin file for glb2 2018-01-05 10:28:12 +01:00
Alexis Breust 988acd00f1 Using relative buffers URI 2018-01-05 10:08:17 +01:00
Alexis Breust d29173aaa9 Following specification for padding 2017-12-14 17:32:18 +01:00
Alexis Breust d09df8cc07 Fixed leftover log 2017-12-14 16:18:17 +01:00
Alexis Breust 31a4ccaebb Added support for generating glb2 (binary glTF 2) 2017-12-14 16:11:12 +01:00
Patrick Dähne a05d74a281 [glTF2] Moved byteStride from accessor to bufferView 2017-11-20 19:01:28 +01:00
Thomas Lemaire 5b76a31485 fix trivial warnings
mainly unused parameter and unused function
some parameters are indeed used in a debug built, I used the
(void)(param) trick
warnings reported by clang 4
2017-11-02 11:13:52 +01:00
Daniel Hritzkiv 28523232cf
Merge multiple meshes in a node into one mesh with many primtives; write out only one mesh per node
To do:
- clean up MergeMeshes
- see if there’s a way to do this earlier in the flow
2017-09-18 11:16:05 -04:00
Daniel Hritzkiv 5147acfe65
Revert "store node mesh vs. meshes"
This reverts commit a0d97505e5.
2017-09-18 11:16:04 -04:00
John Senneker eca008d5ec Properly move string passed to JSON writer 2017-09-12 11:55:22 -04:00
Daniel Hritzkiv b1a5ca4516
Use `forceNumber` argument of `WriteAttrs` to write correct attribute names, instead 2017-09-11 11:02:16 -04:00
Daniel Hritzkiv 990fe143a1
Fix mesh primitive’s attributes’ names
Per spec

TEXCOORD -> TEXCOORD_0
COLOR -> COLOR_0
JOINTS -> JOINTS_0
WEIGHTS -> WEIGHTS_0

Remove JOINTMATRIX since it’s not supported (and doesn’t seem to be output, anyway)

TANGENT should be added at a later date
2017-09-11 11:02:16 -04:00
Daniel Hritzkiv 816e6909ca
Remove KHR_binary_glTF code
Binary glTF is now part of the glTF2 spec. However, it’s implemented incorrectly, so will be temporarily removed
2017-09-11 11:02:16 -04:00
John Senneker 140b903d7a
Fix parsing of glTF version
Handle version as int in gltf
Fix format specifiers in glTF version parser
2017-09-11 11:02:15 -04:00
Daniel Hritzkiv 44757af34a
Implement pbrSpecularGlossiness property as Nullable 2017-09-11 11:02:13 -04:00
Daniel Hritzkiv 03cfa04ee4
Define default material values as static constants
for reuse
2017-09-11 11:02:13 -04:00
Daniel Hritzkiv 37527849b7
Export material names properly 2017-09-11 11:02:13 -04:00
Daniel Hritzkiv a9c4fa84b5
Sampler improvements; Add new LazyDict method
Samplers are now imported into assimp internal format from textures;
Samplers have defaults as per spec;
Sampler enums are strongly typed with UNSET values;
Samplers are exported properly;
Sampler filters are exported as well;
Samplers are re-used across textures on export
Default sampler values are not written
2017-09-11 11:02:12 -04:00
Daniel Hritzkiv 7f01e3f48f
Only export byteStride if not 0 2017-09-11 10:55:50 -04:00
Daniel Hritzkiv a0d97505e5
store node mesh vs. meshes
glTF nodes can only hold one mesh. this simply assigns to and check’s a Node’s Mesh
2017-09-11 10:55:50 -04:00
Daniel Hritzkiv f09892ab63
Write specularGlossiness textures on the specularGlossiness object 2017-09-11 10:50:39 -04:00
Daniel Hritzkiv 2d54019b8f
Remove OPEN3DGC and compression references 2017-09-11 10:50:39 -04:00
Daniel Hritzkiv 562920fbb8
Changes to GLTF2 materials
pbrMetallicRoughness and pbrSpecularGlossiness as structs; persist textureinfo properties from start to finish; persist pbrSpecularGlossiness (via extensionsUsed) usage from start to finish
2017-09-11 10:50:39 -04:00
Daniel Hritzkiv 7532d6aac1
Remove Light, Technique references 2017-09-11 10:50:38 -04:00
Daniel Hritzkiv 863458cd4a
Start removing materials common, and adding pbrSpecularGlossiness 2017-09-11 10:50:38 -04:00
Daniel Hritzkiv 0cf69479c3
Use `!ObjectEmpty()` vs. `MemberCount() > 0` 2017-09-11 10:50:38 -04:00
Daniel Hritzkiv 11cb9ac139
Working read, import, export, and write of gltf2 (pbr) material 2017-09-11 10:50:38 -04:00
Daniel Hritzkiv 5b3b80cbc2
Formatting 2017-08-09 11:41:12 -04:00
Daniel Hritzkiv 7a4a32625c
Ensure gltf asset version is printed as \d.0 2017-08-09 10:47:34 -04:00
jamesgk c91e9a94da glTF2: export materials' normal maps 2017-07-26 14:42:22 -07:00
jamesgk b7b17b03ec glTF2: use opacity for diffuse alpha + alphaMode
The "transparency" attribute is unused in glTF2.
2017-07-26 14:39:35 -07:00
jamesgk acf8c54e55 glTF2: Fix animation export 2017-07-26 14:20:53 -07:00
jamesgk bb55246c18 Export glTF 2 2017-07-25 18:05:18 -07:00
jamesgk d7cbbaf23e Compile with glTF2 export option (currently same as glTF1 output) 2017-07-25 17:34:03 -07:00
jamesgk 38626d4260 glTF: start fork of files used in export, for glTF2 2017-07-25 17:34:03 -07:00