isosurface:等值面提取的Rust算法

  • v1_329904
    了解作者
  • 144.2KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-03 02:17
    上传日期
等值面 在Rust中实现的等值面提取算法。 包括经典的行进立方体和双重轮廓技术,以及主题上的更多现代变化。 为了教育的目的,每种提取算法的文档都链接到相关的学术论文。 范例程序 cargo run --example sampler将执行采样器,使您可以比较各种算法和隐式曲面。 cargo run --example deferred_rasterisation将执行来自点云的GPU端延迟栅格化的演示。 这是由声望的Gavan Woolery率先采用的技术。 依存关系 该库有意无依赖性。 尽管这需要重新开发一些通用代码(即Vec3类型),但它使库的占用空间较小,并且减少了使用板条箱的编译时间。 但是,这些示例确实依赖glium , glium_text_rusttype和cgmath板条箱,以避免重塑世界。 32位索引 为简单起见,顶点索引已固定为32位,因为对于32x32x32和更大
isosurface-trunk.zip
  • isosurface-trunk
  • .github
  • workflows
  • rust.yml
    314B
  • src
  • implicit
  • sphere.rs
    3KB
  • mod.rs
    768B
  • torus.rs
    5.8KB
  • cylinder.rs
    4.2KB
  • csg.rs
    5.3KB
  • rectangular_prism.rs
    4KB
  • feature
  • mod.rs
    4.6KB
  • particle_minimisation.rs
    2.6KB
  • qef.rs
    2.4KB
  • math
  • mod.rs
    800B
  • svd.rs
    35.1KB
  • vector.rs
    10.7KB
  • traversal
  • mod.rs
    722B
  • implicit_octree.rs
    3.6KB
  • dual_grid.rs
    3.8KB
  • primal_grid.rs
    3.3KB
  • linear_hashed_marching_cubes.rs
    3.1KB
  • extractor.rs
    3.6KB
  • marching_cubes_tables.rs
    35.6KB
  • mesh.rs
    8.5KB
  • extended_marching_cubes.rs
    7KB
  • distance.rs
    3KB
  • linear_hashed_octree.rs
    1.8KB
  • sampler.rs
    1.9KB
  • lib.rs
    1.6KB
  • marching_cubes_impl.rs
    3.3KB
  • dual_contouring.rs
    3.9KB
  • index_cache.rs
    2.2KB
  • morton.rs
    5.9KB
  • marching_cubes.rs
    2.8KB
  • source.rs
    3.1KB
  • point_cloud.rs
    2.1KB
  • examples
  • common
  • mod.rs
    1.2KB
  • sources.rs
    1.7KB
  • text.rs
    1.2KB
  • fonts
  • LICENSE.txt
    11.3KB
  • RobotoMono-Regular.ttf
    111.9KB
  • README.md
    257B
  • deferred_rasterisation.rs
    14.7KB
  • sampler.rs
    11.1KB
  • benches
  • isosurface.rs
    1.8KB
  • rustfmt.toml
    46B
  • Cargo.toml
    497B
  • LICENSE.md
    11.1KB
  • README.md
    2.5KB
  • .gitignore
    73B
内容介绍
[![Crates.io](https://img.shields.io/crates/v/isosurface.svg)](https://crates.io/crates/isosurface) [![Docs.rs](https://docs.rs/isosurface/badge.svg)](https://docs.rs/isosurface) [![Github license](https://img.shields.io/github/license/swiftcoder/isosurface.svg)](https://github.com/swiftcoder/isosurface/blob/trunk/LICENSE.md) # Isosurface Isosurface extraction algorithms implemented in Rust. The classical Marching Cubes and Dual Contouring techniques are included, along with more modern variations on the theme. In the interest of education, the documentation for each extraction algorithm links to the relevant academic papers. ## Example programs `cargo run --example sampler` will execute the sampler, which allows you to compare a variety of algorithms and implicit surfaces. `cargo run --example deferred_rasterisation` will execute a demonstration of GPU-side deferred rasterisation from point clouds. This is a technique pioneered by Gavan Woolery, of [Voxel Quest](https://www.voxelquest.com) fame. ## Dependencies This library intentionally has no dependencies. While that requires some redevelopment of common code (i.e. the Vec3 type), it keeps the footprint of the library small, and compile times low for consuming crates. The examples do however rely on the `glium`, `glium_text_rusttype`, and `cgmath` crates, to avoid reinventing the world. ## 32-bit indices For simplicity vertex indices have been fixed at 32-bits, because for chunks of 32x32x32 and larger you'll often end up with more than 65k vertices. If you are targeting a mobile platform that supports only 16-bit indices, you'll need to keep to smaller chunk sizes, or split the mesh on the output side. ## Why are optimisations enabled in debug builds? Without optimisations enabled, debug builds are around 70x slower. The implementation relies on a lot of nested for loops over integer ranges, and the range iterators themselves entirely dominate the CPU profiles in unoptimised builds. While this can be worked around by converting the `for 0..8` style of loop to a while loop with manual counter, the result is quite unpleasant, and distinctly not in the spirit of rust. I'd rather leave optimisations enabled, and wait for the compiler to become better at handling iterators in debug builds. If you take a dependency on this crate and run into the same issue, you can tell Cargo to compile just this one crate in release mode, by adding the following to your `Cargo.toml`: ``` [profile.dev.package.isosurface] opt-level = 3 ```
评论
    相关推荐
    • rake-rs — RAKE算法Rust上的多语言实现-Rust开发
      RAKE.rs该库提供了用于Rust的快速自动关键字提取(RAKE)算法的多语言实现。 如何在RAKE.rs上使用附加rake该库提供了Rust的快速自动关键字提取(RAKE)算法的多语言实现。 如何使用将rake附加到Cargo.toml的依赖项:...
    • cassowary-rs:Cassowary约束求解算法Rust实现
      cassowary-rs:Cassowary约束求解算法Rust实现
    • rust-genetic-algorithm-一种解决学术基准问题的遗传算法-Rust开发
      遗传算法Rust中的遗传算法可解决以下基准问题:Ackley Griewangk Rastrigin Rosenbrock Schwefel球体用法:Insta遗传算法Rust中的遗传算法可解决以下基准问题:Ackley Griewangk Rastrigin Rosenbrock Schwefel球体...
    • rusty-rete:Rete 算法Rust 中的实现
      生锈的网 Rete 算法Rust 中的实现。
    • freeverb-rs:Freeverb算法Rust实现
      Freeverb算法Rust实现。 关于自由词 Freeverb最初由“ Jezar at Dreampoint”用C ++编写,并于2000年6月发布到公共领域。现在,它已在多种软件的各种版本中广泛使用。 关于freeverb-rs Rust中Freeverb的这种实现...
    • spiril:用于遗传算法Rust
      Spiril是遗传算法的一种实现,该遗传算法用于通过突变和自然选择来获得任务的最佳变量(遗传)。 API使您可以指定一组初始单元,这些单元将充当所有后续单元的原始父级。 单位类型实现适应度函数和繁殖函数,以将新...
    • Rust:在Rust中实现的所有算法
      Rust:在Rust中实现的所有算法
    • redcentipede:Rust 中的遗传算法项目
      Rust 中的遗传算法项目 该项目的概念大量借鉴了。 红蜈蚣的一般博弈论 那里存在: 世界 部分代理 一些资源 时间单位 世界- 世界是一个具有 X、Y 坐标的二维网格。 存在的代理和资源都有一个 X 和一个 Y,它们指的是...
    • twox-hash:XXHash算法Rust实现
      算法Rust实现。 例子 带有固定种子 use std :: hash :: BuildHasherDefault; use std :: collections :: HashMap; use twox_hash :: XxHash64; let mut hash: HashMap < _, _, BuildHasherDefault < XxHash64>>...
    • SIM800C_MQTT.rar
      使用SIM800C模块,使用MQTT协议,连接中国移动onenet平台,能实现数据的订阅、发布、存储等