【问题标题】:Why does this not render a cube with a texture on all sides bevy?为什么这不会渲染一个四面都有纹理的立方体?
【发布时间】: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 重现这个。我得到一个在所有三个可见面上都有纹理的普通立方体。您确定这看起来不像是由于照明而只有一侧吗?

标签: rust 3d bevy


【解决方案1】:

作者 default Bevy 使用线性采样,这使得低分辨率纹理变得模糊。您可以更改采样器,使纹理看起来像素化:

DefaultPlugins.set(ImagePlugin::default_nearest())

【讨论】:

    猜你喜欢
    • 2013-06-29
    • 2022-01-17
    • 1970-01-01
    • 2012-11-01
    • 2015-03-19
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    相关资源
    最近更新 更多