#几何 #图形 #3d #创意

nightly polyhedron-ops

康威/哈特多面体操作

10个版本

0.2.7 2023年4月16日
0.2.6 2023年4月5日
0.2.4 2023年1月9日
0.2.3 2021年4月19日
0.1.3 2020年11月24日

#58渲染

Download history 5/week @ 2024-03-11 18/week @ 2024-04-01 1/week @ 2024-05-20

84 每月下载量
用于 2 crates

MIT OR Apache-2.0 OR Zlib

2.5MB
3.5K SLoC

多面体算子

此crate实现了康威多面体算子及其扩展,由George W. Hart和其他人实现。

Some brutalist Polyhedron, rendered with 3Delight|ɴsɪ

一些粗野主义多面体;由3Delight|ɴsɪ渲染并在Darktable中后期处理。

这是一个为了提高我对Rust中迭代器的理解而进行的实验。它基于Kit Wallace的OpenSCAD代码。由于OpenSCAD语言是函数式的,因此它非常适合转换为函数式的Rust。

use polyhedron_ops::Polyhedron;
use std::path::Path;

// Conway notation: gapcD
let polyhedron =
    Polyhedron::dodecahedron()  // D
        .chamfer(None, true)    // c
        .propellor(None, true)  // p
        .ambo(None, true)       // a
        .gyro(None, None, true) // g
        .finalize();

// Export as ./polyhedron-gapcD.obj
polyhedron.write_to_obj(&Path::new("."), false);

上面的代码从一个十二面体开始,并迭代地应用四个算子。

产生的形状如下所示。

A polyhedron

警告

这处于半抛光状态。文档可能不够好(如果您觉得某处特别缺乏,请提出问题)。

简而言之:风险自担。

Cargo特性

  • bevy – 添加将多面体转换为bevy Mesh的支持。

  • nsi – 通过ɴsɪ crate将多面体发送到离线渲染器的支持。

  • obj – 添加将数据输出为Wavefront OBJ的支持。

  • parser – 增加对康威多面体符号中字符串解析的支持。该功能实现了Polyhedron::TryFrom<&str>

基本形状

  • 柏拉图立体
  • 棱柱
  • 反棱柱
  • 金字塔
  • 约翰逊多面体

支持的运算符

  • a – ambo
  • b – bevel(等同于ta
  • c – chamfer
  • d – dual
  • e – expand(又称explode,等同于aa
  • g – gyro
  • i – inset/loft(等同于x,N
  • j – join(等同于dad
  • K – 快速而简单的规范化
  • k – kis
  • M – medial(等同于dta
  • m – meta(等同于k,,3j
  • n – needle(等同于dt
  • o – ortho(等同于jj
  • p – propellor
  • q – quinto
  • r – reflect
  • S – spherize
  • s – snub(等同于dgd
  • t – truncate(等同于dkd
  • v – subdivide(Catmull-Clark)
  • w – whirl
  • x – extrude
  • z – zip(等同于dk

其他运算符

  • H – hollow(在Wings3D中称为‘intrude’)
  • h – hexpropellor
  • l – stellate
  • ? – triangulate

游戏

有一个游乐场示例应用程序来测试东西并享受乐趣。

cargo run --release --example playground --features obj

如果您想生成上面的图像,您需要下载3Delight渲染器的免费版本并安装它。之后,运行示例并启用ɴsɪ支持。

cargo run --release --example playground --features nsi,obj

键盘命令

使用与上面列表中运算符名称匹配的键来应用。

使用UpDown调整最后一个运算符的参数。与Shift结合可进行10倍变化。

Delete撤销最后一个(并且只有最后一个)操作。

F1使用3Delight进行渲染(需要3Delight|ɴsɪ安装)。与Shift结合可使用3Delight Cloud进行渲染(需要注册)。

Space将其保存为$HOME/polyhedron-<type>.obj

我使用kiss3d进行实时预览,目前,这限制了网格到64k个顶点。这意味着一旦网格达到这个限制,预览将出现损坏/丢失的部分。

导出和渲染将始终生成正确的OBJ文件。您可以在Wings、Blender或其他DCC应用程序中查看。

依赖关系

~3–41MB
~634K SLoC