Rémi Verschelde
3e1b61d808
Merge pull request #95121 from aaronfranke/gltf-root-prop-owner
...
GLTF: Propagate owner for root node children
2024-08-19 14:34:04 +02:00
tetrapod00
3b1345c26e
Change capitalization of glTF in errors and comments.
2024-08-15 18:07:30 -07:00
Aaron Franke
246cc7e86d
GLTF: Propagate owner for root node children
2024-08-04 02:28:01 -07:00
Silc 'Tokage' Renew
0235086c14
Add validation to glTF importer for Blendshape and Animation
2024-07-26 18:05:34 +09:00
Jordyfel
416e63ae35
Fix handling of missing bin file in gltf separate
2024-07-18 14:04:16 +03:00
Aaron Franke
923a8eb5d3
Move GLTFAccessorType into GLTFAccessor
2024-07-04 15:46:48 -07:00
Gurvan
e7f34aace3
Use Hermite instead of Bezier for glTF spline interpolation
2024-06-29 14:36:49 +02:00
jsjtxietian
e09443509a
Unsetting the owner of `ImporterMeshInstance3D` before adding it to skeleton's child
2024-06-13 12:45:55 +08:00
K. S. Ernest (iFire) Lee
5a24aec599
Fix GLTFDocument so it can export CSG Meshes correctly.
2024-05-29 07:10:45 -07:00
Aaron Franke
d3a58e57b8
Rename accessor GLTFType to GLTFAccessorType, fix verbose prints, doc
2024-05-24 03:21:13 -07:00
K. S. Ernest (iFire) Lee
24f56008ac
Add bake_fps for FBXDocument, GLTFDocument and both import-export.
2024-05-23 09:09:36 -07:00
David Nikdel
522f035cb1
GLTF export improvements
...
- GLBs produced by godot don't pass validation when there's no data in the buffer segment. The segment is dropped but the size of the chunk_header is still reported in total length (incorrectly)
- Remove empty "extensions" JSON object being appended to all nodes (if it's still empty). This is just cutting down on unnecessary bloat and consistent with the rest of the file's attempts to not emit any keys that are equal to their default value.
- Allow the case where root_nodes is empty. This is permitted by the GLTF spec. Moreover it can happen fairly naturally when using the ROOT_NODE_MODE_MULTI_ROOT root node mode on a scene with only a root node (which is valid in godot).
- Don't create an initial buffer until we're ready to write data into it (buffers of byteLength=0 don't pass validation).
2024-05-11 21:42:05 -04:00
A Thousand Ships
a0dbdcc3ab
Replace `find` with `contains/has` where applicable
...
* Replaces `find(...) != -1` with `contains` for `String`
* Replaces `find(...) == -1` with `!contains` for `String`
* Replaces `find(...) != -1` with `has` for containers
* Replaces `find(...) == -1` with `!has` for containers
2024-05-08 12:37:42 +02:00
Lyuma
bb9674c1b1
Set animation step from importers. Increase default step from 10 to 30 FPS.
2024-04-19 03:02:20 -07:00
Lyuma
d3706488d9
Fix FBX and glTF when root nodes are skeleton bones
...
Set p_scene_parent to the skeleton to guarantee BoneAttachment3D nodes are added as a child of the active skeleton.
Use get_owner() to go all the way up when calculating the root node in generate_scene
2024-04-17 22:10:05 -07:00
Rémi Verschelde
42ab525aa2
Merge pull request #86144 from jsjtxietian/disable-mesh-compression-for-2d
...
Disable mesh compression if vertex `position.z` is always 0
2024-04-12 11:16:33 +02:00
aaronp64
b56934ce19
Fix GLTFDocument.append_from_scene() crash on null node
...
Added null check for p_node parameter to give error instead of crash
Fixes #90502
2024-04-10 17:05:54 -04:00
jsjtxietian
077e20cd51
Disable mesh compression if vertex position.z is always 0
2024-04-10 11:27:36 +08:00
Rémi Verschelde
21b33c5ea4
Merge pull request #89418 from lyuma/gltf_vertex_packing
...
Only store vertices referenced by the indices per surface in the glTF importer
2024-03-14 22:34:52 +01:00
Rémi Verschelde
37b08a3724
Merge pull request #89356 from lyuma/vsk-gltf-sparse-accessors-4.3
...
GLTF export: Use sparse accessors for morph targets
2024-03-14 22:34:47 +01:00
Rémi Verschelde
453485aede
Merge pull request #89270 from Repiteo/enforce-typename-in-templates
...
Enforce template syntax `typename` over `class`
2024-03-14 22:34:37 +01:00
Lyuma
77f6e35a8d
glTF importer now only stores vertices referenced by the indices per surface.
2024-03-13 18:34:55 -07:00
Lyuma
db2c9571bb
glTF export: morph targets are relative, so use zero as reference
2024-03-12 02:39:15 -07:00
K. S. Ernest (iFire) Lee
1e63a2a132
Update buffer view target handling, encode sparse accessors as vec3.
...
Co-authored-by: Lyuma <xn.lyuma@gmail.com>
2024-03-12 02:39:00 -07:00
Lyuma
fd2aa564ab
gltf export: Remove snapping and fix validation
...
Round min/max correctly in accessors
Include correct target in vertex and indices bufferViews
Avoid use of Math::snapped
Normalize vertex weights.
2024-03-10 06:07:46 -07:00
Thaddeus Crews
9903e6779b
Enforce template syntax `typename` over `class`
2024-03-07 22:39:09 -06:00
clayjohn
14c776f798
Fix wrong indexing when generating dummy tangents in GLTF import
2024-02-27 11:44:57 -08:00
Rémi Verschelde
3780604d79
Merge pull request #88819 from lyuma/import_nodes_as_skeleton_bones
...
Add new scene import option to import as Skeleton
2024-02-27 10:18:00 +01:00
Rémi Verschelde
8f98ed65f7
Merge pull request #88738 from clayjohn/mesh_compression-tangents
...
Multiple fixes for compressed meshes
2024-02-27 10:17:43 +01:00
Aaron Franke
c399424db9
Move 3D-only resources to their own folder
2024-02-26 05:23:04 -06:00
Lyuma
652ef966f9
Add new scene import option to import as Skeleton
...
Adds a bool import option `nodes/import_as_skeleton_bones`.
This is supported in all FBX or GLTF document based formats.
It is especially useful for retargeting and importing animations.
2024-02-26 03:06:07 -08:00
clayjohn
781cd27fe4
Avoid singularity when generated tangents and validate that tangents are good enough when using compression
2024-02-23 16:25:26 -08:00
K. S. Ernest (iFire) Lee
04d43947bf
Add ufbx for FBX importing
...
This update introduces a new import method for FBX files using ufbx. If the fbx2gltf import fails, it will use the most recently cached scene from the ufbx import. The process is sped up by introducing threads to load the ufbx portion.
Key changes include:
- Support for importing geometry helper nodes in FBX files.
- Addition of cameras and lights with updated names.
- Removal of the fbx importer manager.
- Introduction of ModelDocument3D and updates to its methods.
- Changes to FBX import options and visibility.
- Updating the documentation and handling some errors.
- Store the original non-unique node, mesh and animation names in FBX and glTF.
Co-Authored-By: bqqbarbhg <bqqbarbhg@gmail.com>
2024-02-23 22:33:04 +01:00
Rémi Verschelde
d00dc8facf
Merge pull request #87371 from AThousandShips/size_err_check
...
Replace error checks against `size` with `is_empty`
2024-02-09 18:09:11 +01:00
Rémi Verschelde
161894652a
Merge pull request #83231 from aaronfranke/gltf-transform
...
Fix desynced duplicate GLTFNode transform properties
2024-02-09 18:09:05 +01:00
A Thousand Ships
684752e75b
Replace error checks against `size` with `is_empty`
2024-02-09 12:50:15 +01:00
Rémi Verschelde
763d5cb7a4
Merge pull request #87934 from aaronfranke/fix-gltf-bad-mesh-export
...
Fix GLTF exporting invalid meshes and attempting to export gizmo meshes
2024-02-08 10:53:48 +01:00
Aaron Franke
2d38c980ee
Fix GLTF exporting invalid meshes and attempting to export gizmo meshes
2024-02-04 02:58:29 -06:00
Aaron Franke
4c8d69f264
Fix crash when importing a GLTF file with a skeleton as the root
2024-02-04 02:48:16 -06:00
Rémi Verschelde
cb0d450b7d
Merge pull request #87775 from clayjohn/GLTF-export-ra-rg
...
Remove workaround in GLTF exporter that double converts ra textures to rg
2024-01-31 10:57:17 +01:00
clayjohn
4f41b94943
Remove workaround in GLTF exporter that double converts ra textures to rg
2024-01-30 23:22:20 -08:00
Aaron Franke
c60ed2587d
Fix desynced duplicate GLTFNode transform properties
2024-01-29 21:24:02 -06:00
Hugo Locurcio
0437db0106
Display values in vector/quaternion math function errors
...
This can help track down the source of the error more easily.
2024-01-28 18:45:46 +01:00
Aaron Franke
d36a34edb7
Misc changes to the GLTF module before audio PR
2024-01-11 20:33:51 -06:00
Rémi Verschelde
60f557c0c5
Merge pull request #86016 from demolke/master
...
Import step interpolation for loc/rot/scale from GLTF as nearest
2024-01-08 11:52:16 +01:00
demolke
3749cbb3ca
Import step interpolation for loc/rot/scale from GLTF as nearest
...
Currently all object transform animation tracks get imported and baked
as linear. For step interpolation mark the resulting animation track
with Nearest interpolation to make sure there are no in-betweens
generated. This is useful for camera cuts or similar.
2024-01-05 22:03:57 +01:00
Muller-Castro
96a95cb974
Add const lvalue ref to container parameters
2024-01-05 14:49:57 -03: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
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
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
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
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
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
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
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
Aaron Franke
e8906b5b80
Add export_preserialize to the GLTF export process
2023-07-18 15:20:24 -05:00
Hendrik Brucker
7e21eb7e00
Extract and reorganize texture resource classes
2023-07-14 20:04:21 +02:00
Yuri Sizov
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
wojtekpil
a875baa218
Add KHR_materials_emissive_strength extension support for exporting gltfs
2023-07-13 15:30:30 +02:00
Aaron Franke
865d7e3e00
GLTF: Internal renames in material parsing code
2023-07-12 14:15:08 -05:00
Aaron Franke
07400f2065
Add copyright to GLTFState
2023-07-10 00:24:10 -05:00
RevoluPowered
83f2fce078
Add support for KHR_materials_emissive_strength
...
This reads the multiplier for the emission strength from GLTF files.
This is fairly universal and is required for blender's emission value to be imported.
The value is a simple universal multiplier and is unitless.
Sponsored by The Mirror.
2023-06-23 19:43:43 +01:00
Aaron Franke
4017524363
Fix exporting MeshInstances without a Skeleton in the GLTF module
2023-05-27 03:41:31 -05:00
Aaron Franke
7da93a0bc0
Add support for extending GLTF with more texture formats & support WebP
2023-05-22 16:30:20 -05:00
Clay John
610877e326
Merge pull request #72288 from MewPurPur/use-string-repeat
...
Use `String.repeat()` to optimize several String methods
2023-05-05 09:56:48 -07:00
VolTer
6b84e258d2
Use String.repeat() in more places
2023-05-01 02:27:46 +02:00
Rémi Verschelde
be00dcd724
Merge pull request #73656 from TokageItLab/expose-3d-tracks
...
Expose interpolation methods for 3D track in `Animation` class
2023-04-25 09:57:52 +02:00
Rémi Verschelde
d5b8a0fc37
Merge pull request #69266 from aaronfranke/gltf-physics
...
Implement physics support in the GLTF module
2023-04-25 09:56:58 +02:00
Silc Renew
fac8a918f9
Expose interpolation methods for 3D track in Animation class
2023-04-25 01:45:14 +09:00
Martin Capitanio
8b6fa79eee
Fix blend_shape (shapekey) empty name import.
...
Corresponds to the Blender glTF-Importer PR
https://github.com/KhronosGroup/glTF-Blender-IO/pull/1902
2023-04-12 16:37:49 +02:00
Aaron Franke
639b8e7dc7
Implement physics support in the GLTF module
2023-03-09 20:02:05 -06:00
Hakim
e14fa5532b
Get the unlit / unshaded extension when importing GLTF and set it when exporting
2023-03-05 22:34:04 +01:00
K. S. Ernest (iFire) Lee
28a340bf3b
For basisu avoid inserting to the image array twice.
...
Basisu images were getting referenced incorrectly like set black or set as not transparent.
2023-02-14 17:22:36 -08:00