
# Objective *Step towards https://github.com/bevyengine/bevy/issues/19686* We now have all the infrastructure in place to migrate Bevy's default behavior when loading glTF files to respect their coordinate system. Let's start migrating! For motivation, see the issue linked above ## Solution - Introduce a feature flag called `gltf_convert_coordinates_default` - Currently,`GltfPlugin::convert_coordinates` defaults to `false` - If `gltf_convert_coordinates_default` is enabled, `GltfPlugin::convert_coordinates` will default to `true` - If `gltf_convert_coordinates_default` is not enabled *and* `GltfPlugin::convert_coordinates` is false, we assume the user is implicitly using the old behavior. Print a warning *once* in that case, but only when a glTF was actually loaded - A user can opt into the new behavior either - Globally, by enabling `gltf_convert_coordinates_default` in their `Cargo.toml` - Globally, by enabling `GltfPlugin::convert_coordinates` - Per asset, by enabling `GltfLoaderSettings::convert_coordinates` - A user can explicitly opt out of the new behavior and silence the warning by - Enabling `gltf_convert_coordinates_default` in their `Cargo.toml` and disabling `GltfPlugin::convert_coordinates` - This PR also moves the existing release note into a migration guide Note that I'm very open to change any features, mechanisms, warning texts, etc. as needed :) ## Future Work - This PR leaves all examples fully functional by not enabling this flag internally yet. A followup PR will enable it as a `dev-dependency` and migrate all of our examples involving glTFs to the new behavior. - After 0.17 (and the RC before) lands, we'll gather feedback to see if anything breaks or the suggested migration is inconvenient in some way - If all goes well, we'll kill this flag and change the default of `GltfPlugin::convert_coordinates` to `true` in 0.18 ## Testing - Ran examples with and without the flag --------- Co-authored-by: Carter Anderson <mcanders1@gmail.com> Co-authored-by: AlephCubed <76791009+AlephCubed@users.noreply.github.com>
76 lines
2.6 KiB
TOML
76 lines
2.6 KiB
TOML
[package]
|
|
name = "bevy_gltf"
|
|
version = "0.17.0-dev"
|
|
edition = "2024"
|
|
description = "Bevy Engine GLTF loading"
|
|
homepage = "https://bevy.org"
|
|
repository = "https://github.com/bevyengine/bevy"
|
|
license = "MIT OR Apache-2.0"
|
|
keywords = ["bevy"]
|
|
|
|
[features]
|
|
pbr_transmission_textures = ["bevy_pbr/pbr_transmission_textures"]
|
|
pbr_multi_layer_material_textures = [
|
|
"bevy_pbr/pbr_multi_layer_material_textures",
|
|
]
|
|
pbr_anisotropy_texture = ["bevy_pbr/pbr_anisotropy_texture"]
|
|
pbr_specular_textures = ["bevy_pbr/pbr_specular_textures"]
|
|
gltf_convert_coordinates_default = []
|
|
|
|
[dependencies]
|
|
# bevy
|
|
bevy_animation = { path = "../bevy_animation", version = "0.17.0-dev", optional = true }
|
|
bevy_app = { path = "../bevy_app", version = "0.17.0-dev" }
|
|
bevy_asset = { path = "../bevy_asset", version = "0.17.0-dev" }
|
|
bevy_color = { path = "../bevy_color", version = "0.17.0-dev" }
|
|
bevy_core_pipeline = { path = "../bevy_core_pipeline", version = "0.17.0-dev" }
|
|
bevy_ecs = { path = "../bevy_ecs", version = "0.17.0-dev" }
|
|
bevy_image = { path = "../bevy_image", version = "0.17.0-dev" }
|
|
bevy_math = { path = "../bevy_math", version = "0.17.0-dev" }
|
|
bevy_mesh = { path = "../bevy_mesh", version = "0.17.0-dev" }
|
|
bevy_pbr = { path = "../bevy_pbr", version = "0.17.0-dev" }
|
|
bevy_reflect = { path = "../bevy_reflect", version = "0.17.0-dev" }
|
|
bevy_render = { path = "../bevy_render", version = "0.17.0-dev" }
|
|
bevy_scene = { path = "../bevy_scene", version = "0.17.0-dev", features = [
|
|
"bevy_render",
|
|
] }
|
|
bevy_transform = { path = "../bevy_transform", version = "0.17.0-dev" }
|
|
bevy_tasks = { path = "../bevy_tasks", version = "0.17.0-dev" }
|
|
bevy_utils = { path = "../bevy_utils", version = "0.17.0-dev" }
|
|
bevy_platform = { path = "../bevy_platform", version = "0.17.0-dev", default-features = false, features = [
|
|
"std",
|
|
"serialize",
|
|
] }
|
|
|
|
# other
|
|
gltf = { version = "1.4.0", default-features = false, features = [
|
|
"KHR_lights_punctual",
|
|
"KHR_materials_transmission",
|
|
"KHR_materials_ior",
|
|
"KHR_materials_volume",
|
|
"KHR_materials_unlit",
|
|
"KHR_materials_emissive_strength",
|
|
"KHR_texture_transform",
|
|
"extras",
|
|
"extensions",
|
|
"names",
|
|
"utils",
|
|
] }
|
|
thiserror = { version = "2", default-features = false }
|
|
base64 = "0.22.0"
|
|
fixedbitset = "0.5"
|
|
itertools = "0.14"
|
|
percent-encoding = "2.1"
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0.140"
|
|
smallvec = "1.11"
|
|
tracing = { version = "0.1", default-features = false, features = ["std"] }
|
|
bevy_log = { path = "../bevy_log", version = "0.17.0-dev" }
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[package.metadata.docs.rs]
|
|
rustdoc-args = ["-Zunstable-options", "--generate-link-to-definition"]
|
|
all-features = true
|