use bevy::prelude::*;
use bevy_panorbit_camera::{PanOrbitCamera, PanOrbitCameraPlugin};
use bevy_vrm1::vrm::loader::VrmHandle;
use bevy_vrm1::vrm::VrmPlugin;
fn main() {
App::new()
.add_plugins((DefaultPlugins, PanOrbitCameraPlugin, VrmPlugin))
.add_systems(Startup, (spawn_camera, spawn_vrm, spawn_directional_light))
.run();
}
fn spawn_directional_light(mut commands: Commands) {
commands.spawn((
DirectionalLight {
shadows_enabled: true,
..default()
},
Transform::from_xyz(3.0, 3.0, 0.3).looking_at(Vec3::ZERO, Vec3::Y),
));
}
fn spawn_camera(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {
commands.spawn((
Camera3d::default(),
PanOrbitCamera::default(),
Transform::from_xyz(0.0, 2.5, 3.5),
));
commands.spawn((
Mesh3d(meshes.add(Plane3d::new(Vec3::Y, Vec2::new(1000.0, 1000.0)))),
MeshMaterial3d(materials.add(StandardMaterial::from(Color::WHITE))),
));
}
fn spawn_vrm(
mut commands: Commands,
asset_server: Res<AssetServer>,
) {
commands.spawn(VrmHandle(asset_server.load("vrm/AliciaSolid.vrm")));
}