Commit graph

362 commits

Author SHA1 Message Date
Aaron Franke
9753a35c76
Move 3D scene import classes to their own folder 2024-01-04 11:02:49 -06:00
Rémi Verschelde
6c390b620d
Merge pull request #84445 from Rubonnek/add-const-references-clang-tidy
Add const references detected by clang-tidy
2024-01-04 14:25:33 +01:00
Rémi Verschelde
a1d45858e0
Merge pull request #86504 from lyuma/gltf_reimport_textures_merry_xmas
gltf: Fix three bugs which prevented extracted textures from being refreshed
2024-01-02 18:05:19 +01:00
Aaron Franke
8acef03cb5
Add export settings to the export dialog for GLTF 2023-12-30 19:57:39 -06:00
Lyuma
fea4165ca8 gltf: fix three bugs which prevented extracted textures from being refreshed.
1. Extracted texture paths in `GLTFDocument::_parse_image_save_image` at the project root started with res:/// which broke cache invalidation
2. md5 hashes were not being written to generator_parameters for new imports, which led Godot to think the file was manually created.
3. `EditorFileSystem::reimport_append` must emit the `resources_reimported` signal in order for the resource cache to be updated.
2023-12-25 01:03:40 -08:00
Wilson E. Alvarez
a3cb1b096f
Add const references detected by clang-tidy 2023-12-16 13:36:44 -05:00
Aaron Franke
52f1b86ebc
Fix referring to ResourceImporterScene static importers via instances 2023-12-11 20:01:39 -06:00
Pedro J. Estébanez
fe4850c0d0 Use mingw-std-threads in MinGW builds 2023-11-18 11:56:05 +01:00
Hugo Locurcio
e5270c0db2
Link to runtime loading/saving tutorial and improve Image documentation 2023-11-14 12:05:54 +01:00
Aaron Franke
6d8f029df4
Use the Blender file name instead of the generated GLTF file name 2023-11-09 12:11:39 -06:00
Aaron Franke
58076b9ccb
Implement glTF compat version system for files from older Godot versions 2023-11-03 12:07:25 -05:00
clayjohn
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
Saracen
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
Haoyu Qiu
2413952a4c Fix "as" capitalization in editor strings 2023-10-23 16:10:05 +08:00
jsjtxietian
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
A Thousand Ships
034c0f1624 Replace sanity with safety for checks 2023-10-08 16:22:24 +02:00
clayjohn
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
Rémi Verschelde
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
Ryan Roden-Corrent
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
Aaron Franke
7bd894ba7a
Fix skeletons when generating multiple Godot scenes from one GLTF 2023-09-28 17:48:33 -05:00
Rémi Verschelde
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
Aaron Franke
446893fdd1
GLTF: Add GODOT_single_root extension 2023-09-26 10:18:52 -05:00
A Thousand Ships
517e9f8aef [Modules] Replace ERR_FAIL_COND with ERR_FAIL_NULL where applicable 2023-09-26 16:44:52 +02:00
Saracen
3f4513d4de Add error checks for DirAccess creation. 2023-09-26 03:07:43 +01:00
Matias N. Goldberg
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
Rémi Verschelde
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
Rémi Verschelde
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
Aaron Franke
2723f781dd
GLTF: Allow specifying export image format including from extensions 2023-09-14 17:33:48 -05:00
Yuri Sizov
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
Aaron Franke
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
kobewi
6de34fde27 Add EditorStringNames singleton 2023-09-03 19:58:18 +02:00
Aaron Franke
5b7001dccf
GLTF: Improve logic for keeping track of the real root node 2023-09-03 03:35:29 -05:00
Aaron Franke
c1bc4fbd20
GLTF: Change "Camera3D" generated node name to "Camera" 2023-09-03 02:47:34 -05:00
Aaron Franke
da89753cc6
Fix doubly-reserved unique names in GLTF scene name assignment 2023-08-20 00:03:56 -05:00
Rémi Verschelde
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
acazuc
a00cf02241 Add support for KTX & KTX2 image format
Add support glTF KHR_texture_basisu extension
2023-08-19 10:27:29 +02:00
Rémi Verschelde
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
KurtBliss
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
Aaron Franke
d12b0787af
GLTF: Add center of mass property 2023-08-11 11:27:01 -05:00
Lyuma
f67b6c158c Use image index instead of texture index for source_images 2023-08-05 16:54:35 -07:00
Aaron Franke
2970839085
Set base_path and filename during export 2023-08-03 16:49:22 -05:00
Aaron Franke
101442ced9
Expose filename in GLTFState 2023-08-03 16:38:10 -05:00
Rémi Verschelde
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
Aaron Franke
2d13a9651c
GLTF: Preserve the original bytes when importing a texture 2023-08-03 10:30:33 -05:00
Aaron Franke
bc68fa368d
More cosmetic improvements in the GLTF code 2023-08-03 02:05:41 -05:00
Rémi Verschelde
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
Rémi Verschelde
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
Rémi Verschelde
c000b0ce1b
Merge pull request #79267 from aaronfranke/gltf-copyright
Add copyright to GLTFState
2023-08-02 12:16:40 +02:00
Aaron Franke
955104385c
Cosmetic changes in GLTF node generation code 2023-07-30 13:51:25 -05:00
Aaron Franke
8da45d9e16
Improve GLTF export logic for scene root nodes 2023-07-22 23:45:27 -05:00