mcpField
B
bevy-cameras

bevy-cameras

github.com/chrisgliddon开发2692 次安装9 周前更新
代码仓库

关于 bevy-cameras

面向 Bevy 0.19 开发者的摄像机配置技能,涵盖视图、渲染目标和摄像机控制。还说明投影与光照选项及版本相关的配置要点。

主要功能

  1. 01摄像机与投影设置
  2. 02配置渲染到纹理
  3. 03自由视角与平移控制器
  4. 04摄像机分层排序
  5. 05逐摄像机环境光
  6. 06第三人称摄像机指导

适用场景

  1. 01设置游戏主摄像机
  2. 02将小地图或传送门渲染到纹理
  3. 03添加自由视角或平移控制
  4. 04组合摄像机叠加层

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/chrisgliddon/bevy-skills --skill bevy-cameras

安装后在 Claude Code 中输入/bevy-cameras确认已加载。

附带文件references/third-person-orbit.md

详细介绍

Bevy 0.19 — 摄像机

何时使用此技能

  • 生成主游戏摄像机。
  • 渲染到纹理(小地图、传送门、后处理目标)。
  • 想要直接使用自由视角或平移控制器,而无需自行编写。
  • 配置多个摄像机,并使用不同的 order 实现叠加渲染。
  • 按摄像机设置环境光亮度。
  • 构建第三人称枢轴/悬臂摄像机,支持固定姿态插值和 Rapier 障碍物射线检测。

典型模式

FreeCamera/PanCamera 受 Cargo 功能控制。在 Cargo.toml 中:

bevy = { version = "0.19", features = ["free_camera", "pan_camera"] }
use bevy::asset::RenderAssetUsages;
use bevy::camera::RenderTarget;
use bevy::camera_controller::free_camera::{FreeCamera, FreeCameraPlugin};
use bevy::prelude::*;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_plugins(FreeCameraPlugin) // adds the input wiring
        .add_systems(Startup, setup)
        .run();
}

fn setup(mut commands: Commands, mut images: ResMut<Assets<Image>>) {
    // 1. Main camera with the built-in free-look controller.
    commands.spawn((
        Camera3d::default(),
        FreeCamera::default(),
        Transform::from_xyz(0.0, 4.0, 8.0).looking_at(Vec3::ZERO, Vec3::Y),
    ));

    // 2. A texture target for an off-screen render pass (mini-map, portal).
    let size = bevy::render::render_resource::Extent3d {
        width: 512,
        height: 512,
        depth_or_array_layers: 1,
    };
    let mut image = Image::new_fill(
        size,
        bevy::render::render_resource::TextureDimension::D2,
        &[0; 4],
        bevy::render::render_resource::TextureFormat::Bgra8UnormSrgb,
        RenderAssetUsages::default(),
    );
    image.texture_descriptor.usage =
        bevy::render::render_resource::TextureUsages::TEXTURE_BINDING
            | bevy::render::render_resource::TextureUsages::COPY_DST
            | bevy::render::render_resource::TextureUsages::RENDER_ATTACHMENT;
    let image_handle = images.add(image);

    // 3. A second camera that draws into the texture.
    //    RenderTarget is now a *separate* component, not Camera.target.
    commands.spawn((
        Camera3d::default(),
        Camera { order: -1, ..default() }, // -1 = render before the main camera
        RenderTarget::Image(image_handle.into()),
        Transform::from_xyz(10.0, 5.0, 0.0).looking_at(Vec3::ZERO, Vec3::Y),
    ));
}

选择投影方式

use bevy::prelude::*;
use bevy::camera::Projection;

# fn _proj(mut commands: Commands) {
// Default perspective (45° vertical FOV).
commands.spawn((Camera3d::default(), Projection::default()));

// Orthographic for top-down or strategy views.
commands.spawn((
    Camera3d::default(),
    Projection::Orthographic(OrthographicProjection {
        scale: 10.0,
        ..OrthographicProjection::default_3d()
    }),
));
# }

环境光:世界默认值与按摄像机设置

use bevy::prelude::*;
use bevy::light::GlobalAmbientLight;

# fn _amb(app: &mut App, mut commands: Commands) {
// World default — applies everywhere unless a camera overrides.
app.insert_resource(GlobalAmbientLight {
    brightness: 200.0,
    ..default()
});

// Per-camera override (`AmbientLight` is a Component).
commands.spawn((Camera3d::default(), AmbientLight { brightness: 1000.0, ..default() }));
# }

Bevy 0.19 注意事项

  • RenderTarget 是独立组件。 Camera { target: ... } 是旧写法。生成摄像机时,将 RenderTarget 与 Camera3d/Camera 一起添加。
  • AmbientLight 不再是 Resource。 它是按摄像机设置的组件。世界默认值存储在 GlobalAmbientLight 资源中。
  • ImageRenderTarget::scale_factor 的类型是 f32(以前用 FloatOrd 包装)。
  • 摄像机的 order 为有符号数。 值越小,渲染越早。对于要在主渲染过程中采样的离屏渲染通道,请使用 order: -1。
  • FreeCamera/PanCamera 需要对应的插件和 Cargo 功能。 添加 features = ["free_camera", "pan_camera"];仅生成组件不会安装其输入系统。
  • 导入:bevy::camera::RenderTarget、bevy::camera_controller::{free_camera::*, pan_camera::*}、bevy::light::GlobalAmbientLight。这些都不在 prelude 中。

另请参阅

  • 第三人称环绕摄像机 — 枢轴/悬臂分离、 俯仰限制、平滑处理、固定插值、球体投射、迟滞和角色淡出。
  • bevy-rendering — 渲染器选择、前向/延迟渲染 和渲染系统。
  • bevy-input-actions — 可重新绑定的摄像机/瞄准输入 和正确的鼠标位移传递。
  • bevy-physics — Rapier 场景查询设置和过滤。
  • bevy-pbr-materials — 光照和摄像机可见的 材质。
  • bevy-a11y — FOV、抖动、运动和视口无障碍功能。

评论

支持 Markdown