From 3fc2bd71ea6e4f8295ff4f60f2e2f389e486e710 Mon Sep 17 00:00:00 2001 From: Rob Parrett Date: Sun, 27 Oct 2024 12:06:19 -0700 Subject: [PATCH] Cosmetic tweaks to `query_gltf_primitives` (#16102) # Objective This example is really confusing to look at and tell at a glance whether it's broken or not. It's displaying a strange shape -- a cube with two vertices stretched in a couple dimensions at an odd angle, and doing its vertex position modification in a way where the intent isn't obvious. ## Solution - Change the gltf geometry so that the object is a recognizable regular shape - Change the vertex modification so that the entire cube top is being "lifted" from the cube - Adjust colors, lighting, and camera location so we can see what's going on - Also remove some irrelevant shadow and environment map setup ## Before ![Image](https://github.com/user-attachments/assets/e5dd5075-0480-49d4-b1ed-cf1fe6106f3c) ## After image --- .../models/GltfPrimitives/gltf_primitives.glb | Bin 4428 -> 4316 bytes examples/3d/query_gltf_primitives.rs | 61 +++++------------- 2 files changed, 17 insertions(+), 44 deletions(-) diff --git a/assets/models/GltfPrimitives/gltf_primitives.glb b/assets/models/GltfPrimitives/gltf_primitives.glb index 9a53f99cfea0dce12473c165ba13e4b32161827b..81a13005475b1a27f1a7b8c68889bc004b798727 100644 GIT binary patch delta 532 zcmX@3bVrdlJtxGCiGhLPjsOEg#YA2URuerVJ=2L^sVsU128J8g|6>9(Hm_w~z$j{{ z1B9_UO1YVNN>z5c7x4c zoSRsr6cjv|85o>A{eX^Wu!rLPAbRoxe(}lLe4P4`PkVO%_)~8m`IKjmyTz8>@4naD z-?&z=$NcSUE1m!K_FoxiS!;XBS{(qg13no{PUh3)fEflfMA{l;EXYW(vHSbq+MHR( zyiedrt^F>?rae51ukA5^SZ^P)hTFC_+{^ZIXTAN>CP6z8<~%<69iJZ9A^-U~CR_6h z>PJnlx8?cxWzXBB`u$lh^X&HfPT$9vnZ93w!*6e%(RW*qv$gwGt3K^EWqNL-`lNnx zHNP%czq)|nWCK1H7O>B5@F&!Zo~*Z@y(`&f$p+cIK)-{$4|E>`!yce7m>ah5x_3?4 zddIhV`@7+6He0S1>;cKa)MWjvw`Yo%*u&|sZvzuUmWQwr>anO1M5uvUJo$t`3jogz BsgVEx delta 662 zcmcbkct(jgJtxGCiGhK^N05Qx#YA2UR%1P5J)?$w^k)EZ2xrMR0 zg_*gzv6+RTnTd{}j$y2hQf_9Rl2x>>p^kx`fw6(9xrLFTnJG}6v9Xb%iH`2%MmB}X zovcqRjr1%`Of8Jf49$#8&CCsrEzHpk0GnZCX=GqxWM*z;W^7_;WMXa>JNY1++~kF9 zPc*PPLDxXf*v!P-*wo0x)ZDHA%)sE}>Bqn# zW#yn<|I22|zFqtDl*}ABs@QGkwN15~?7%N>VBf7;VRt*W!hS*CY-=LelRxw7@}QWa z!>6Jr+$U%!1jHuCs_Y4~C)e@m@gTcu@(w-~{ogYf?S2CBzPr`?iC|CW=GPTKHiUtp z!G7`qJ`q&cW$-7|&))ORZn0Ow{&NRhZGcGt2paZ-2xM_&HdqN3HBfzE15nvuA+VXK U;$VA#DGn$KBA}8DlOqIL0D@r3#sB~S diff --git a/examples/3d/query_gltf_primitives.rs b/examples/3d/query_gltf_primitives.rs index bbc91737fe..780abeb977 100644 --- a/examples/3d/query_gltf_primitives.rs +++ b/examples/3d/query_gltf_primitives.rs @@ -3,16 +3,10 @@ use std::f32::consts::PI; -use bevy::{ - gltf::GltfMaterialName, - pbr::{CascadeShadowConfigBuilder, DirectionalLightShadowMap}, - prelude::*, - render::mesh::VertexAttributeValues, -}; +use bevy::{gltf::GltfMaterialName, prelude::*, render::mesh::VertexAttributeValues}; fn main() { App::new() - .insert_resource(DirectionalLightShadowMap { size: 4096 }) .add_plugins(DefaultPlugins) .add_systems(Startup, setup) .add_systems(Update, find_top_material_and_mesh) @@ -36,7 +30,7 @@ fn find_top_material_and_mesh( if let Color::Hsla(ref mut hsla) = material.base_color { *hsla = hsla.rotate_hue(time.delta_secs() * 100.0); } else { - material.base_color = Color::from(Hsla::hsl(0.0, 0.8, 0.5)); + material.base_color = Color::from(Hsla::hsl(0.0, 0.9, 0.7)); } } @@ -44,12 +38,14 @@ fn find_top_material_and_mesh( if let Some(VertexAttributeValues::Float32x3(positions)) = mesh.attribute_mut(Mesh::ATTRIBUTE_POSITION) { - positions[0] = ( - ops::sin(2.0 * PI * time.elapsed_secs()), - positions[0][1], - positions[0][2], - ) - .into(); + for position in positions { + *position = ( + position[0], + 1.5 + 0.5 * ops::sin(time.elapsed_secs() / 2.0), + position[2], + ) + .into(); + } } } } @@ -59,38 +55,15 @@ fn find_top_material_and_mesh( fn setup(mut commands: Commands, asset_server: Res) { commands.spawn(( Camera3d::default(), - Transform::from_xyz(0.6, 1.6, 11.3).looking_at(Vec3::new(0.0, 0.0, 3.0), Vec3::Y), - EnvironmentMapLight { - diffuse_map: asset_server.load("environment_maps/pisa_diffuse_rgb9e5_zstd.ktx2"), - specular_map: asset_server.load("environment_maps/pisa_specular_rgb9e5_zstd.ktx2"), - intensity: 500.0, - rotation: Quat::IDENTITY, - }, + Transform::from_xyz(4.0, 4.0, 12.0).looking_at(Vec3::new(0.0, 0.0, 0.5), Vec3::Y), )); commands.spawn(( - DirectionalLight { - shadows_enabled: true, - ..default() - }, - // This is a relatively small scene, so use tighter shadow - // cascade bounds than the default for better quality. - // We also adjusted the shadow map to be larger since we're - // only using a single cascade. - CascadeShadowConfigBuilder { - num_cascades: 1, - maximum_distance: 1.6, - ..default() - } - .build(), - )); - commands.spawn(( - SceneRoot(asset_server.load( - GltfAssetLabel::Scene(0).from_asset("models/GltfPrimitives/gltf_primitives.glb"), - )), - Transform { - rotation: Quat::from_rotation_y(-90.0 / 180.0 * PI), - ..default() - }, + Transform::from_rotation(Quat::from_euler(EulerRot::ZYX, 0.0, 1.0, -PI / 4.)), + DirectionalLight::default(), )); + + commands.spawn(SceneRoot(asset_server.load( + GltfAssetLabel::Scene(0).from_asset("models/GltfPrimitives/gltf_primitives.glb"), + ))); }