## bevy-single-variable-function-mesh

A 2D or 3D mesh (`bevy::render::mesh::Mesh`) generated from a single-variable function `f(f32) -> f32`

### 8 unstable releases(3 breaking)

 0.13.0 Mar 20, 2024 Nov 4, 2023 Aug 10, 2023 Jul 25, 2023 Dec 27, 2022

#33 in Rendering

MIT/Apache

235KB
247 lines

# bevy-single-variable-function-mesh

A 2D or 3D mesh (`bevy::render::mesh::Mesh`) generated from a single-variable function `f(f32) -> f32`.

## Examples

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)
}
``````
``````commands.spawn(PbrBundle {
SingleVariableFunctionMesh {
f: squircle, // or circle
relative_height: 0.0,
..default()
}
.into(),
),
transform: Transform::from_xyz(-2.5, 1.0, 0.0),
..default()
});
commands.spawn(PbrBundle {
SingleVariableFunctionMesh {
f: squircle, // or circle
relative_height: 0.2,
..default()
}
.into(),
),
transform: Transform::from_xyz(0.0, 1.0, 0.0),
..default()
});
commands.spawn(PbrBundle {
SingleVariableFunctionMesh {
f: squircle, // or circle
relative_height: 1.0,
..default()
}
.into(),
),
transform: Transform::from_xyz(2.5, 1.0, 0.0),
..default()
});
``````

## Details

• Feel free to add ideas to the bug tracker.
• This crate will automatically search for good vertices by comparing the slopes of the input function called `f`.
• The plane in the render scene was created by `f: |_x: f32| -> f32 { 20.0 },`.

## Compatible Bevy Version

bevy bevy-single-variable-function-mesh
0.13 0.13
0.12 0.12
0.11 0.11