Crates.io | bevy-single-variable-function-mesh |
lib.rs | bevy-single-variable-function-mesh |
version | 0.15.1 |
source | src |
created_at | 2022-12-27 15:31:20.271401 |
updated_at | 2024-11-29 23:21:50.529774 |
description | A 2D or 3D mesh generated from single-variable functions. |
homepage | |
repository | https://github.com/772/bevy-single-variable-function-mesh |
max_upload_size | |
id | 746292 |
size | 562,179 |
A 2D or 3D mesh generated from single-variable functions.
We have one math function that generates a half squircle and one that generates a half circle.
fn squircle(x: f32) -> f32 {
(1.0 - (x).abs().powf(4.0)).powf(0.25)
}
fn circle(x: f32) -> f32 {
(1.0 - x.powf(2.0)).powf(0.5)
}
// Flat ground.
commands.spawn((
Mesh3d(meshes.add(SingleVariableFunctionMesh {
f1: |_x: f32| -> f32 { 10.0 },
f1_x_start: -10.0,
f1_x_end: 10.0,
f2_x_start: 0.0,
f2_x_end: 0.0,
..default()
})),
MeshMaterial3d(materials.add(StandardMaterial::default())),
Transform::from_xyz(0.0, 0.0, 0.0),
));
// Flat squircle.
commands.spawn((
Mesh3d(meshes.add(SingleVariableFunctionMesh {
f1: squircle,
f2_x_start: 0.0,
f2_x_end: 0.0,
..default()
})),
MeshMaterial3d(materials.add(StandardMaterial::default())),
Transform::from_xyz(-4.0, 1.0, 0.0),
));
// A bit flat squircle.
commands.spawn((
Mesh3d(meshes.add(SingleVariableFunctionMesh {
f1: squircle,
f2: |x: f32| -> f32 { (1.0 - (x * 5.0).abs().powf(4.0)).powf(0.25) },
f2_x_start: -0.2,
f2_x_end: 0.2,
..default()
})),
MeshMaterial3d(materials.add(StandardMaterial::default())),
Transform::from_xyz(-2.0, 1.0, 0.0),
));
// Cylinder.
commands.spawn((
Mesh3d(meshes.add(SingleVariableFunctionMesh {
f1: circle,
f2: straight,
..default()
})),
MeshMaterial3d(materials.add(StandardMaterial::default())),
Transform::from_xyz(0.0, 1.0, 0.0),
));
// Ball.
commands.spawn((
Mesh3d(meshes.add(SingleVariableFunctionMesh {
f1: circle,
f2: circle,
..default()
})),
MeshMaterial3d(materials.add(StandardMaterial::default())),
Transform::from_xyz(2.0, 1.0, 0.0),
));
// Pyramid.
commands.spawn((
Mesh3d(meshes.add(SingleVariableFunctionMesh {
f2: |x: f32| -> f32 { -0.5 * x + 0.5 },
..default()
})),
MeshMaterial3d(materials.add(StandardMaterial::default())),
Transform::from_xyz(4.0, 1.0, 0.0),
));
bevy | bevy-single-variable-function-mesh |
---|---|
0.15 | 0.15 |
0.14 | 0.14 |
0.13 | 0.13 |
0.12 | 0.12 |
0.11 | 0.11 |
Licensed under either of these:
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.