Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bevyengine
GitHub Repository: bevyengine/bevy
Path: blob/main/examples/3d/load_gltf.rs
6592 views
1
//! Loads and renders a glTF file as a scene.
2
3
use bevy::{
4
light::{CascadeShadowConfigBuilder, DirectionalLightShadowMap},
5
prelude::*,
6
};
7
use std::f32::consts::*;
8
9
fn main() {
10
App::new()
11
.insert_resource(DirectionalLightShadowMap { size: 4096 })
12
.add_plugins(DefaultPlugins)
13
.add_systems(Startup, setup)
14
.add_systems(Update, animate_light_direction)
15
.run();
16
}
17
18
fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
19
commands.spawn((
20
Camera3d::default(),
21
Transform::from_xyz(0.7, 0.7, 1.0).looking_at(Vec3::new(0.0, 0.3, 0.0), Vec3::Y),
22
EnvironmentMapLight {
23
diffuse_map: asset_server.load("environment_maps/pisa_diffuse_rgb9e5_zstd.ktx2"),
24
specular_map: asset_server.load("environment_maps/pisa_specular_rgb9e5_zstd.ktx2"),
25
intensity: 250.0,
26
..default()
27
},
28
));
29
30
commands.spawn((
31
DirectionalLight {
32
shadows_enabled: true,
33
..default()
34
},
35
// This is a relatively small scene, so use tighter shadow
36
// cascade bounds than the default for better quality.
37
// We also adjusted the shadow map to be larger since we're
38
// only using a single cascade.
39
CascadeShadowConfigBuilder {
40
num_cascades: 1,
41
maximum_distance: 1.6,
42
..default()
43
}
44
.build(),
45
));
46
commands.spawn(SceneRoot(asset_server.load(
47
GltfAssetLabel::Scene(0).from_asset("models/FlightHelmet/FlightHelmet.gltf"),
48
)));
49
}
50
51
fn animate_light_direction(
52
time: Res<Time>,
53
mut query: Query<&mut Transform, With<DirectionalLight>>,
54
) {
55
for mut transform in &mut query {
56
transform.rotation = Quat::from_euler(
57
EulerRot::ZYX,
58
0.0,
59
time.elapsed_secs() * PI / 5.0,
60
-FRAC_PI_4,
61
);
62
}
63
}
64
65