{"id":28067433,"url":"https://github.com/Adamkob12/Meshem","last_synced_at":"2025-05-12T16:01:55.380Z","repository":{"id":187922344,"uuid":"677542484","full_name":"Adamkob12/Meshem","owner":"Adamkob12","description":"Bevy Meshem is a Rust crate designed to provide meshing algorithms for voxel grids, enabling you to create cohesive 3D mesh structures from a grid of cubic voxels","archived":false,"fork":false,"pushed_at":"2025-05-09T16:18:47.000Z","size":26844,"stargazers_count":62,"open_issues_count":5,"forks_count":6,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-09T17:27:52.300Z","etag":null,"topics":["bevy","mesh","minecraft","rust","voxel","voxel-engine","voxel-game"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/bevy_meshem","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Adamkob12.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-08-11T21:14:20.000Z","updated_at":"2025-05-09T16:18:52.000Z","dependencies_parsed_at":"2024-05-31T14:44:24.167Z","dependency_job_id":"f57d66d1-3b31-44ac-9f7e-5f4ecd373dee","html_url":"https://github.com/Adamkob12/Meshem","commit_stats":null,"previous_names":["adamkob12/bevy_meshem"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Adamkob12%2FMeshem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Adamkob12%2FMeshem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Adamkob12%2FMeshem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Adamkob12%2FMeshem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Adamkob12","download_url":"https://codeload.github.com/Adamkob12/Meshem/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253773089,"owners_count":21962187,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bevy","mesh","minecraft","rust","voxel","voxel-engine","voxel-game"],"created_at":"2025-05-12T16:01:26.068Z","updated_at":"2025-05-12T16:01:55.350Z","avatar_url":"https://github.com/Adamkob12.png","language":"Rust","funding_links":[],"categories":["Misc"],"sub_categories":[],"readme":"# Bevy Meshem\n\n## ***Showcase (taken from [minecraft_bevy](https://github.com/Adamkob12/minecraft_bevy)):***\n\n![Screenshot 2023-11-05 at 16 41 53](https://github.com/Adamkob12/bevy_meshem/assets/46227443/58afd45b-ea66-4b77-a3b1-d00627bd27a5)\n\nBevy Compatibility:\n\n| Bevy Version |  bevy_meshem         |\n|--------------|----------------------|\n| `0.15`       | `0.5.x`              |\n| `0.12`       | `0.3.x`              |\n| `0.11.x`     | `0.2.x`              |\n| `0.11`       | `0.1.1`              |\n\nBevy Meshem is a Rust crate designed to provide meshing algorithms for voxel grids, enabling you to create cohesive 3D mesh structures from a grid of cubic voxels.\nSimilar to the mechanics in Minecraft, Bevy Meshem offers a powerful and flexible way to visualize voxel-based environments with efficient mesh generation.\nCurrently in pre-release stages of development.\n\n## Features\n\n### ***Generate 3d meshes:***\n\nJust define a data structure that implements the simple \"VoxelRegistry\" trait (see examples and documentation) and you can turn any array of voxels into a 3d mesh.\n\n### ***Run time mesh updating in O(1):***\n\nAdded in 0.2, this feature allows users to easily update the mesh after it has been generated, without any need for regenerating. See the new update_mesh_example.\n![update mesh video](assets/Screenshots/video1.gif)\n\n### ***Custom Shadowing, Similar to \"Ambient Occlusion\" (Smooth Lighting)***\n\nAdded in 0.3, this feature allows users to add an ambient occlusion-like effect during mesh generation, \"Smooth Lighting\":\n![Screenshot 2023-11-05 at 16 36 06](https://github.com/Adamkob12/bevy_meshem/assets/46227443/6bc24f3e-d223-4cab-8128-33a3fb9f1bd8)\n\n### ***\"Introducing\" Chunks***\n\nWhen generating each mesh, the unused vertices inside the mesh are being culled, but there was no way to automatically cull vertices trapped between two separately generated meshes, only manually.\nNow `introduce_adjacent_chunks` will automatically do the job for you, and apply the shadowing mentioned above as well!\n\n### \"The Naive Method\"\n\nIterate over the grid and generate a matching cube for each voxel (Also referred to as the \"default\" as this method doesn't offer any optimization) examples: (screenshots from examples/simple_example.rs)\n![Naive method screenshot](assets/Screenshots/ScreenshotS.png)\n\n10x10x10 grid, each voxel is built out of 24 vertices, and the entire mesh is built out of 24000 (expected, 24 * 10 * 10 * 10)\n\n### \"Culling\"\n\nA slightly more sophisticated method, while iterating over the grid, we don't add any vertices and indices that are hidden behind other voxels. This is roughly the method that Minecraft uses in its\nengine, though the specifics are obviously unknown. examples:\n![Culling method screenshot](assets/Screenshots/ScreenshotC.png)\n\n10x10x10 grid, but in contrast to The Naive Method, only 2400 are rendered.\n\n### Not supported: \"Greedy Meshing\"\n\nGreedy Meshing is even more efficient than Culling, but it makes very limiting compromises (specifically to the texture of the mesh), making it somewhat undesirable. Support for this method might be added in later stages.\n\n## Requirements \u0026 Installation\n\n- You must be familiar with the Bevy game engine, and of course the Rust programming language.\n- You know the drill - add this incantation to your project's Cargo.toml file:\n\n  ```toml\n  [dependencies]\n  bevy_meshem = \"0.5\"\n  ```\n\n## Usage\n\nThe example in examples/simple_example.rs shows what you need to do to get started.\n\n***In 0.1, you provide a VoxelRegistry and a grid of voxels, and you get a mesh.***\n\n\u003cimg width=\"609\" alt=\"Screenshot 2023-09-28 at 21 59 53\" src=\"https://github.com/Adamkob12/bevy_meshem/assets/46227443/4f74b341-6de2-45db-ad0a-b3352f98dc7a\"\u003e\n\n***In 0.2, you can also log voxel changes in the MeshMD data-structure, and use the MeshMD data-structure to update the Mesh at run-time***\n\n\u003cimg width=\"615\" alt=\"Screenshot 2023-09-28 at 22 05 47\" src=\"https://github.com/Adamkob12/bevy_meshem/assets/46227443/bc8459ad-d6ea-4eef-8677-c2b7688db1e9\"\u003e\n\n## Design Goals\n\nFlexibility, Stability, User experience and Performance.\n\n## Contributing\n\nContributions are very welcome! This project is currently in its early stages and operates closely with the Bevy rendering API.\nAs a result, it may have some stability challenges. However, your contributions can play a significant role in enhancing and stabilizing the project.\n\n## Credits\n\nThanks to mikollysenko for writing this informative article!\n\u003chttps://0fps.net/2012/06/30/meshing-in-a-minecraft-game/\u003e\nAnd to the Bevy Community, for building an awesome project!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAdamkob12%2FMeshem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAdamkob12%2FMeshem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAdamkob12%2FMeshem/lists"}