bevy-pbr-materials について
Bevy 0.19でPBRマテリアル、ライティング、メッシュプリミティブを扱う開発者向けのスキルです。カスタムマテリアルやバージョン固有の変更点も解説します。
主な機能
- 01StandardMaterialによるシェーディング
- 02カスタムMaterialの実装
- 03ライトとシャドウの設定
- 04Atmosphereとカメラの構成
- 05メッシュプリミティブの利用
活用シーン
- 01メッシュへのPBRマテリアル適用
- 02スタイライズドや溶解シェーダーの作成
- 03シーンのコンタクトシャドウ設定
- 04大気エフェクトの追加
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ chrisgliddon/ bevy-skills --skill bevy-pbr-materialsインストール後、Claude Code で/bevy-pbr-materialsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/custom-material.mdlighting.mdmesh-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 マテリアル、レンダーシステムの移行。
コメント
Markdown 対応