mcpField
B
bevy-pbr-materials

bevy-pbr-materials

github.com/chrisgliddon開発2684 回インストール9 週間前に更新
リポジトリ

bevy-pbr-materials について

Bevy 0.19でPBRマテリアル、ライティング、メッシュプリミティブを扱う開発者向けのスキルです。カスタムマテリアルやバージョン固有の変更点も解説します。

主な機能

  1. 01StandardMaterialによるシェーディング
  2. 02カスタムMaterialの実装
  3. 03ライトとシャドウの設定
  4. 04Atmosphereとカメラの構成
  5. 05メッシュプリミティブの利用

活用シーン

  1. 01メッシュへのPBRマテリアル適用
  2. 02スタイライズドや溶解シェーダーの作成
  3. 03シーンのコンタクトシャドウ設定
  4. 04大気エフェクトの追加

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/bevy-pbr-materialsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
custom-material.md
lighting.md
mesh-primitives.md

詳細

Bevy 0.19 — PBR マテリアル

このスキルを使用する場面

  • 組み込みの物理ベースシェーダーでメッシュにテクスチャを適用する場合。
  • カスタム Material を作成する場合(スタイライズドシェーディング、ディゾルブ効果、ワールド空間シェーダーなど)。
  • シャドウマップまたは Bevy 0.19 のコンタクトシャドウを有効にする場合。
  • Atmosphere エンティティをスポーンし、カメラで有効にする場合。
  • AsBindGroup::label() に関するコンパイラーエラーが発生した場合(現在は必須です)。
  • MaterialPlugin::<M> { prepass_enabled: ... } に関するコンパイラーエラーが発生した場合(フィールドは 0.18 で削除されました)。

標準的なパターン — StandardMaterial

use bevy::prelude::*;

fn main() {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_systems(Startup, setup)
        .run();
}

fn setup(
    mut commands: Commands,
    mut meshes: ResMut<Assets<Mesh>>,
    mut materials: ResMut<Assets<StandardMaterial>>,
) {
    let mesh = meshes.add(Cuboid::new(1.0, 1.0, 1.0));
    let material = materials.add(StandardMaterial {
        base_color: Color::srgb(0.8, 0.3, 0.2),
        perceptual_roughness: 0.4,
        metallic: 0.1,
        ..default()
    });

    commands.spawn((
        Mesh3d(mesh),
        MeshMaterial3d(material),
        Transform::from_xyz(0.0, 0.5, 0.0),
    ));

    commands.spawn((
        Camera3d::default(),
        Transform::from_xyz(0.0, 2.0, 4.0).looking_at(Vec3::ZERO, Vec3::Y),
    ));

    commands.spawn((
        DirectionalLight::default(),
        Transform::from_xyz(2.0, 4.0, 2.0).looking_at(Vec3::ZERO, Vec3::Y),
    ));
}

カスタムマテリアル — Bevy 0.19 の形式

Material トレイトと AsBindGroup を使ったカスタムマテリアルについては、 references/custom-material.md で詳しく説明しています。

トピック

トピックリファレンス
PointLight、DirectionalLight、SpotLight、GlobalAmbientLight、シャドウマップ、コンタクトシャドウ、アトモスフィアreferences/lighting.md
Plane3d、Cuboid、Sphere、Circle、Cylinder、Capsule3d、Torus のコンストラクターと向きに関する注意点references/mesh-primitives.md
Material トレイトのメソッド、AsBindGroup 属性、ShaderRef のバリアント、MaterialPlugin の設定references/custom-material.md

Bevy 0.19 の注意点

  • MaterialPlugin::<M> { prepass_enabled, shadows_enabled, ..default() } は廃止されました。 代わりに Material トレイトのメソッドをオーバーライドしてください。references/custom-material.md を参照してください。
  • ライトのフィールド名は shadow_maps_enabled です。 Bevy 0.19 で contact_shadows_enabled という別の設定が追加されたため、shadows_enabled は改名されました。
  • コンタクトシャドウを有効にするには、両方の設定が必要です。 カメラに ContactShadows を追加し、対象のライトで contact_shadows_enabled: true を設定してください。
  • Atmosphere は独立したエンティティです。 カメラには AtmosphereSettings を設定し、bevy::light::Atmosphere は別途スポーンしてください。
  • glTF マテリアルのラベルが変更されました。 #Material0 は GltfMaterial を読み込みます。Handle<StandardMaterial> が必要な場合は #Material0/std を使用してください。
  • AsBindGroup::label() は必須です。 #[derive(AsBindGroup)] マクロが自動的に生成しますが、手動で実装する場合は追加する必要があります。
  • メッシュコンポーネントのラッパー。 Mesh3d(handle) と MeshMaterial3d(material_handle) を使用してください。レンダラーがクエリするのはこれらのラッパーです。
  • Plane3d::new の half_size はスカラーではなく Vec2 を取ります。 references/mesh-primitives.md を参照してください。
  • Color::rgb(...) は廃止されました — Color::srgb(...) または Color::linear_rgb(...) を使用してください。
  • Directional light の位置は無視されます — 回転のみが重要です。references/lighting.md を参照してください。

関連項目

  • bevy-rendering — 組み込みレンダラー、フォワード/ディファードレンダリング、 カスタムパス、レンダラーの置き換えが可能な範囲。
  • bevy-cameras — ビュー、HDR、レンダーターゲット。
  • bevy-migration-0-18-to-0-19 — ライト、 アトモスフィア、glTF マテリアル、レンダーシステムの移行。

コメント