All Projects → eadf → toxicblend.rs

eadf / toxicblend.rs

Licence: AGPL-3.0 license
gRPC blender-addon written in Rust

Programming Languages

rust
11053 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to toxicblend.rs

bLandscapeTools
bLandscapeTools
Stars: ✭ 31 (+40.91%)
Mutual labels:  blender-addon
stampinfo
Stamp Info is a Blender add-on that ensures the tracking of the rendered images by writing all the meta information directly on them, on specific areas such as their top and bottom.
Stars: ✭ 21 (-4.55%)
Mutual labels:  blender-addon
BlenderDMX
Blender addon to design and render DMX lighting.
Stars: ✭ 67 (+204.55%)
Mutual labels:  blender-addon
pointu
✏️ Pointillisme tool based on Weighted Voronoi Stippling
Stars: ✭ 32 (+45.45%)
Mutual labels:  voronoi
uvlayout bridge
Blender Add-On: A bridge between Headus UVlayout and Blender
Stars: ✭ 20 (-9.09%)
Mutual labels:  blender-addon
blendpresence
Discord RPC support for Blender 3.0
Stars: ✭ 81 (+268.18%)
Mutual labels:  blender-addon
blender Shelves
Custom Header Buttons
Stars: ✭ 32 (+45.45%)
Mutual labels:  blender-addon
curve cad
Blender Addon: Bezier Curve CAD Tools for CNC Milling & Laser Cutting
Stars: ✭ 107 (+386.36%)
Mutual labels:  blender-addon
Blender-UE4-Workspace
Blender add-on for better workflow with unreal engine 4
Stars: ✭ 143 (+550%)
Mutual labels:  blender-addon
Blender-Metaverse-Addon
Blender toolset for creating content for Metaverses like High Fidelity
Stars: ✭ 53 (+140.91%)
Mutual labels:  blender-addon
nCNC
Blender CNC Add on - nCNC - G code visualizer, g code converter, g code sender, CNC Milling
Stars: ✭ 48 (+118.18%)
Mutual labels:  blender-addon
Node-Pong
Let's play a classic game of Node Pong in Blender 3D
Stars: ✭ 20 (-9.09%)
Mutual labels:  blender-addon
projectile
An artist-friendly tool for throwing stuff around inside Blender
Stars: ✭ 136 (+518.18%)
Mutual labels:  blender-addon
delaunay-triangulation-algorithm
Delaunay Triangulation
Stars: ✭ 25 (+13.64%)
Mutual labels:  voronoi
blender-renderborder
pixel-precise render border
Stars: ✭ 26 (+18.18%)
Mutual labels:  blender-addon
cc3 blender tools
Add-on for importing and auto-setup of character creator 3 & 4 and iClone 7 & 8 character exports.
Stars: ✭ 191 (+768.18%)
Mutual labels:  blender-addon
PieMenusPlus
Pie Menus Plus is a complete Pie Menu ecosystem for Blender 2.8+
Stars: ✭ 26 (+18.18%)
Mutual labels:  blender-addon
BlenderGameRig
Rigging framework for game development. Hard fork from Rigify.
Stars: ✭ 53 (+140.91%)
Mutual labels:  blender-addon
neuro-bge
Node-based Blender game engine and logic editor addon for Blender
Stars: ✭ 27 (+22.73%)
Mutual labels:  blender-addon
VoronoiIsland
🏝: Voronoi Island
Stars: ✭ 15 (-31.82%)
Mutual labels:  voronoi

toxicblend.rs

crates.io Workflow dependency status license

It is a client-server based addon for Blender written in Rust (and Python for the client side parts).

Blender addon installation

Follow instructions in install_as_blender_addon.md

Rust requirement

Rust 1.56+

Will automatically make use of the fast(er) features hash_drain_filter and map_first_last if run on rust +nightly

Run local server

A blender addon based on a client-server model using grpc and tonic. The blender addon is the client, and it only connects to localhost. The server binds to localhost as well; so it should not be reachable from any other computer (not thoroughly tested), run it with this command:

cargo +nightly run --bin toxicblend_server --release

or just

cargo run --release

Saft backend

You can enable the saft voxel meshing backend like this:

cargo +nightly run --release --features saft

Run blender

If the grpc server (for any unimaginable reason) would crash, blender will hang waiting for response. This can easily be fixed if you run blender from the console. A ctrl - C will fix it.

Development status

Project is still in development, I will add more operations. The existing operations are pretty much usable as-is.

Addon operations:

These operations all operate in blender edit mode:

Operation: 2d outline

Will convert a flat mesh object into a 2D outline. Right now the data must be in a plane crossing origin (one axis need to be zero)

from

from

Operation: Simplify

Works similarly to the built-in simplify command, but instead of a distance it takes a percentage. This percentage is applied to the largest dimension of the AABB and that value is used as the Ramer–Douglas–Peucker distance. Works on 3D linestrings/polylines (no faces).

from

This percentage change makes it possible to simplify tiny objects without having to scale them up, simplify and then scale them down again.

Operation: Voronoi mesh

Runs the Voronoi sweep-line algorithm on loops of 2D lines and builds a 2½D mesh (input geometry must be on a plane crossing origin).

Note: Edges may only intersect at their end points, use the Knife intersect operation to make it so.

from

Operation: Centerline

Takes the output of the 2d_outline command and calculates the 3D centerline.

This operation only works on non-intersecting loops with islands of loops inside. E.g. fonts.

If you only need the 2D centerline, you can simply scale the added dimension to zero.

Keyboard command: s z 0 for setting Z to zero.

from

Operation: Voronoi

Runs the Voronoi sweep-line algorithm on 2D points and lines (geometry must be on a plane crossing origin).

from

Operation: Voxel

from

Takes an edge-only 3D mesh, like the output of the Voronoi operation, and puts voxelized tubes along the edges. This operation does not require flat input.

This operation uses fast-surface-nets or saft for voxel generation.

Operation: Median Axis Voxel (MaVoxel)

Takes an edge-only 3D mesh where one of the axis represents a distance. The operation puts voxelized rounded cones along the edges. The third axis represents the radius of the end points of the rounded cones.

Start with any closed loop 2d shape:

metavolume

Calculate the median axis of that shape with the centerline operation. (deselect the "negative radius" and "keep input edges" options):

metavolume

Then run the mavoxel operation on that centerline/median axis:

metavolume

Operation: Metavolume (object operation)

Takes an edge-only mesh, like the output of the Voronoi operation, and puts metaballs along the edges. This operation does not require flat input.

This operation is located under Object -> Add -> Metaball -> MetaVolume

metavolume

Operation: LSystems (object operation)

Generates parametric Lindenmayer systems 3d graph/curves. This operation is located under Object -> Add -> Mesh -> LSystem

dragon_3d

dragon_curve

plant

arrowhead

hilbert

dragon_curve_3d

Operation: Gyroid (object operation)

Generates a parametric Gyroid

gyroid

Gyroid intersected with an egg-shape:

egg

Operation: Knife intersect

Runs on a single flat wire-frame object made of edges (no faces) and tests for self-intersections. If an intersection is found, the intersecting edges will be split at that point.

Operation: Select end vertices

Selects all wire-frame vertices that only connects to one other vertex. Useful for identifying dangling vertices.

Operation:Select vertices until intersection

Selects all (wire-frame) vertices that are connected to already selected vertices. It continues doing this until an intersection is detected. Could be useful for deleting strings of vertices generated by 'Knife intersect'

Operation: Select collinear edges

Select edges that are connected to the selected edges, but limit by an angle constraint. If edge A is selected and edge B is directly connected to it, B will be selected if the angle between A and B is smaller than the angle limit. B will then be used to select more edges and so on.

Operation: Select intersection vertices

Selects all vertices that connects to three or more other vertices. Useful for selecting intersections.

Operation: Debug object

Checks a mesh for anomalies, double edges etc. Will print results to the console/terminal.

Todo

  • Add command line options to the server, setting bind address and port. Possibly feature gated for security reasons.
  • Port the rest of the operations from my old scala project
  • Lift the 'flatness' restriction, it should be enough with flat in any plane.
  • Create docker release image
  • When everything has stabilized, remove the gRPC layer and publish as a Python package using the Rust binaries directly.

Changelog:

0.0.22

  • saft 0.27
  • tokio 1.15
  • boostvoronoi 0.10.3

0.0.21

  • Added benchmark code
  • saft 0.26
  • boostvoronoi 0.10
  • linestring 0.8
  • centerline 0.7
  • tokio 1.14

0.0.20

  • tokio 1.13
  • saft 0.25
  • Added the median-axis-voxel (mavoxel) operation
  • Added some parameters to the centerline operation

0.0.19

  • saft 0.24
  • tonic 0.6
  • prost 0.9
  • smallvec 1.7

0.0.18

  • Replaced building_blocks with fast_surface_nets
  • Refactoring of Lindenmayer Systems
  • Made sure there is one empty voxel surrounding geometry
  • Rust 1.56.0 and 2021 Edition
  • Dependency updates

0.0.17 (GitHub release)

0.0.16 (GitHub release)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].