Commit Graph

352 Commits

Author SHA1 Message Date
58076b9ccb Implement glTF compat version system for files from older Godot versions 2023-11-03 12:07:25 -05:00
d1043a5f93 Enhance checks and user experience around tangents.
Ensure `ensure_tangents` option actually creates tangent array. Even if it is just a dummy array.

Allow mesh to generate its own tangents when using compression. This allows users to compress meshes without tangents.

Warn users if they are trying to read from tangents without providing tangents.
2023-11-01 22:40:42 +01:00
4b671eec0e Reimport bone attachment fixes:
Assign bone_idx to GLTF importer to fix serialization.
Notifies Skeletons and BoneAttachments when reimporting.
Removes usage of NOTIFICATION_NODE_RECACHE_REQUESTED
2023-10-27 20:34:01 +01:00
2413952a4c Fix "as" capitalization in editor strings 2023-10-23 16:10:05 +08:00
1c70a7ae6a Prevent godot crash from importing a certain kind of invalid gltf
invalid type: mistach interpolation CUBICSPLINE and value size
2023-10-20 16:58:11 +08:00
034c0f1624 Replace sanity with safety for checks 2023-10-08 16:22:24 +02:00
51ed3aef63 Vertex and attribute compression to reduce the size of the vertex format.
This allows Godot to automatically compress meshes to save a lot of bandwidth.

In general, this requires no interaction from the user and should result in
no noticable quality loss.

This scheme is not backwards compatible, so we have provided an upgrade
mechanism, and a mesh versioning mechanism.

Existing meshes can still be used as a result, but users can get a
performance boost by reimporting assets.
2023-10-05 12:02:23 -06:00
3cf17679ca Merge pull request #81194 from rcorre/blend-import-76338
Update blender export flags for 3.6.
2023-10-02 13:16:11 +02:00
7e64c6c399 Update blender export flags for 3.6.
Fixes #76338.

Blender 3.6 imports fail with:

```
TypeError: Converting py args to operator properties: : keyword "export_nla_strips" unrecognized
```

The `export_nla_strips` flag was removed and replaced with `export_animation_mode`.
In 3.6.0-3.6.21, this option does not exist at all and causes the failure above.
In 3.6.22, this option was re-added, but does nothing.
See 96a73cb664.

We now need to check the blender version to determine what flags to use.
This adds an additional shell command before every import.
We might consider caching the version, but we'd have to invalidate the cache if the blender version or path changes.

As an aside, the "group animations" setting in Godot does the opposite of what I'd expect.
When `group_tracks=true`, each animation is exported individually.
When `group_tracks=false`, all animations are exported as a single track.
This seems backwards, but I've kept the 3.6 behavior consistent with 3.5.

From https://docs.blender.org/api/3.6/bpy.ops.export_scene.html:

> ACTIONS Actions – Export actions (actives and on NLA tracks) as separate animations.
> ACTIVE_ACTIONS Active actions merged – All the currently assigned actions become one glTF animation.

Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
2023-09-30 11:32:21 -04:00
7bd894ba7a Fix skeletons when generating multiple Godot scenes from one GLTF 2023-09-28 17:48:33 -05:00
dc14f02892 Merge pull request #81851 from aaronfranke/gltf-single-root
GLTF: Add root node export options and GODOT_single_root extension
2023-09-26 17:52:51 +02:00
446893fdd1 GLTF: Add GODOT_single_root extension 2023-09-26 10:18:52 -05:00
517e9f8aef [Modules] Replace ERR_FAIL_COND with ERR_FAIL_NULL where applicable 2023-09-26 16:44:52 +02:00
3f4513d4de Add error checks for DirAccess creation. 2023-09-26 03:07:43 +01:00
ec0e6800bc Fix gltf importer forcing vertex colors on all materials
The importer already checks if a mesh has vertex colors and enables
vertex colors on the material using it.

Before this fix, GLTF importer would force shader generation to use
vertex colors even if the scene did not have vertex colors at all, or
did not need them; causing inefficient shader and PSO generation.
2023-09-24 19:37:33 -03:00
51f67ea4c5 Merge pull request #81264 from aaronfranke/gltf-node-name-camera
GLTF: Change "Camera3D" generated node name to "Camera"
2023-09-16 21:22:29 +02:00
be53991b5a Merge pull request #80272 from aaronfranke/gltf-root-node-logic
GLTF: Improve logic for keeping track of the real root node
2023-09-16 21:21:40 +02:00
2723f781dd GLTF: Allow specifying export image format including from extensions 2023-09-14 17:33:48 -05:00
356624ce6d Merge pull request #80807 from aaronfranke/gltf-skin-mesh-comment
GLTF: Add a comment for skinned mesh tree placement
2023-09-06 14:49:06 +02:00
908716529d GLTF: Add a comment for skinned mesh tree placement
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
2023-09-05 12:19:31 -05:00
6de34fde27 Add EditorStringNames singleton 2023-09-03 19:58:18 +02:00
5b7001dccf GLTF: Improve logic for keeping track of the real root node 2023-09-03 03:35:29 -05:00
c1bc4fbd20 GLTF: Change "Camera3D" generated node name to "Camera" 2023-09-03 02:47:34 -05:00
da89753cc6 Fix doubly-reserved unique names in GLTF scene name assignment 2023-08-20 00:03:56 -05:00
5444afae63 Merge pull request #76572 from acazuc/ktx_format_support
Add support for KTX image format so that we can use Basis Universal for GLTF
2023-08-19 13:00:35 +02:00
a00cf02241 Add support for KTX & KTX2 image format
Add support glTF KHR_texture_basisu extension
2023-08-19 10:27:29 +02:00
a2a1ed1aac Merge pull request #80576 from KurtBliss/master
Fixed editor filesystem/import properties not being caught by the doctool.
2023-08-18 15:43:58 +02:00
300ecfab89 Fixed editor filesystem/import properties not being caught by the doctool
Defined glft editor properties in editor_settings
Added documentation descriptions and entries
2023-08-14 06:06:28 -04:00
d12b0787af GLTF: Add center of mass property 2023-08-11 11:27:01 -05:00
f67b6c158c Use image index instead of texture index for source_images 2023-08-05 16:54:35 -07:00
2970839085 Set base_path and filename during export 2023-08-03 16:49:22 -05:00
101442ced9 Expose filename in GLTFState 2023-08-03 16:38:10 -05:00
1d42504b30 Merge pull request #79623 from aaronfranke/gltf-export-preserialize
Add `export_preserialize` to the GLTF export process
2023-08-03 18:33:49 +02:00
2d13a9651c GLTF: Preserve the original bytes when importing a texture 2023-08-03 10:30:33 -05:00
bc68fa368d More cosmetic improvements in the GLTF code 2023-08-03 02:05:41 -05:00
6b38024b6a Merge pull request #79801 from aaronfranke/gltf-scene-export-logic
Improve GLTF export logic for scene root nodes
2023-08-02 12:20:23 +02:00
3988bf614b Merge pull request #79775 from aaronfranke/gltf-node-gen-cosmetic
Cosmetic changes in GLTF node generation code
2023-08-02 12:19:58 +02:00
c000b0ce1b Merge pull request #79267 from aaronfranke/gltf-copyright
Add copyright to GLTFState
2023-08-02 12:16:40 +02:00
955104385c Cosmetic changes in GLTF node generation code 2023-07-30 13:51:25 -05:00
8da45d9e16 Improve GLTF export logic for scene root nodes 2023-07-22 23:45:27 -05:00
b35a847109 Make blend file importer warnings translatable 2023-07-23 11:19:21 +08:00
e8906b5b80 Add export_preserialize to the GLTF export process 2023-07-18 15:20:24 -05:00
7e21eb7e00 Extract and reorganize texture resource classes 2023-07-14 20:04:21 +02:00
ac16c2696e Merge pull request #79421 from wojtekpil/gltf_emission_strength_export
Add `KHR_materials_emissive_strength` extension support for exporting GLTFs
2023-07-14 18:50:08 +02:00
a875baa218 Add KHR_materials_emissive_strength extension support for exporting gltfs 2023-07-13 15:30:30 +02:00
865d7e3e00 GLTF: Internal renames in material parsing code 2023-07-12 14:15:08 -05:00
e1859346dc Merge pull request #78621 from RevoluPowered/add-emission-strength-support-to-gltf
Add support for GLTF extension KHR_materials_emissive_strength
2023-07-12 17:16:41 +02:00
07400f2065 Add copyright to GLTFState 2023-07-10 00:24:10 -05:00
81064cc239 Doctool: Remove version attribute from XML header
We don't use that info for anything, and it generates unnecessary diffs
every time we bump the minor version (and CI failures if we forget to
sync some files from opt-in modules (mono, text_server_fb).
2023-07-06 10:08:21 +02:00
346f1ab86b Bump version to 4.2-dev
Keep on waitin'
2023-07-05 22:07:03 +02:00