【发布时间】:2023-01-08 01:41:48
【问题描述】:
我正在尝试在 bevy 中渲染一个四面都有纹理的立方体。纹理是16x16,立方体是1bevy坐标大。
到目前为止,这是我的代码:
use bevy::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins.set(WindowPlugin {
window: WindowDescriptor {
title: "Definitely Minecraft".to_string(),
..Default::default()
},
..Default::default()
}))
.add_startup_system(setup_system)
.add_startup_system_to_stage(StartupStage::PostStartup, generate_world_system)
.run();
}
#[derive(Resource)]
struct GameMaterials {
dirt: Handle<StandardMaterial>
}
fn setup_system (
mut commands: Commands,
asset_server: Res<AssetServer>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {
// Light
commands.spawn(DirectionalLightBundle {
transform: Transform::from_xyz(4., 80., 4.),
..Default::default()
});
commands.insert_resource(GameMaterials {
dirt: materials.add(StandardMaterial {
base_color_texture: Some(asset_server.load("dirt.png")),
alpha_mode: AlphaMode::Blend,
unlit: false,
..Default::default()
})
});
// Camera
commands.spawn(Camera3dBundle {
transform: Transform::from_xyz(3., 5., 8.).looking_at(Vec3::ZERO, Vec3::Y),
..Default::default()
});
}
fn generate_world_system(
mut commands: Commands,
game_materials: Res<GameMaterials>,
mut meshes: ResMut<Assets<Mesh>>,
) {
let block_handle = meshes.add(Mesh::from(shape::Cube::new(1.)));
commands.spawn(PbrBundle {
mesh: block_handle.clone(),
material: game_materials.dirt.clone(),
transform: Transform::from_xyz(0., 0., 1.5),
..Default::default()
});
}
当我编译时,我得到一个 1x1 立方体,单面有一个模糊的(实际纹理很清晰)纹理。为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
我不能用 bevy 0.9 重现这个。我得到一个在所有三个可见面上都有纹理的普通立方体。您确定这看起来不像是由于照明而只有一侧吗?