Home Coding, Scripting, Shaders

Clayform Sculpting App

polycounter lvl 17
Offline / Send Message
Noth polycounter lvl 17

2x playback speed

Hey all. Started this over xmas break as an experiment and just kept poking at it.. The original question was how far I could get on top of open-source libraries -- there's a good number of them out there to build on. It's getting close to the point where I can actually use it to make stuff..!? I'm calling it Clayform.

What it is: a GPU based 3D sculpting tool built in Godot. So we get real-time viewport, post processing, modern material workflow, UI toolkit for free, then I've workshopped the brush engine & sculpting toolset for good feel (I come from zbrush). The ui/ux is a mix of maya + zbrush with opinionated brush-hotkey defaults. (alt + q,w,e,r,a,s,d,f)

First clip is just sculpting around to show the general feel. Second is the part I'm working on now: a setup for sculpting tileable textures, where the center tile repeats in a grid around it so you can see how well it's tiling as you go. I'm thinking I'll approach it sort of like how 3DCoat does, at the start you choose what mode you want the program to be in, then I can customize the UI to fit that space.

In now:

  • 8 core brushes with good feel (clay, trench, trim, standard, flatten, pinch, smooth, inflate)
  • brush masking (zbrush-style UX: ctrl to mask, ctrl+alt to erase mask, ctrl+alt off-mesh to clear mask)
  • brush context panel (space) opens brush-specific settings like strength, spacing, etc.
  • symmetry sculpting (x, y, z)
  • transform gizmo in local + world space (w/e/r hotkeys like maya, q is sculpt mode)
  • undo/redo (ctrl+z / ctrl+shift+z; works across sculpting and gizmo transforms)
  • mesh import/export
  • sculptmesh palette / subtools (alt+click to switch, like zbrush)
  • .clay file format that stores undo history per sculptmesh (no masking or camera history yet)
  • tiling texture wrap sculpting (the second clip)
  • made a cute clayform logo.. may have done that very early on..

Planned:

  • posable armature sculpting -- I always hated zspheres being a destructive conversion into geo
  • tiling texture previews on 3D shapes instead of a grid
  • listen to the community and add stuff based on what we think is cool..

Got the windows build process working and tested an installed build on my own machine. Still a fair bit to go, but figured I'd put up a post and keep updating it as I go. Happy to answer anything about how it works.


It's alive!


What do you guys think of the logo? The idea is a play on words of lifeform -- clayform.



Curious to hear about feature requests! 

-AM

Replies

  • Eric Chadwick
    Wow this is great. How do you handle tessellation, and do you have some sort of retopo to add more detail when surfaces are stretched out?
  • Noth
    Offline / Send Message
    Noth polycounter lvl 17
    @Eric Chadwick Hey! It's all just fixed densities now set dynamically via sliders/input boxes, I don't have subdivision levels yet but that's on the short list. I did some early experiments with instant meshes as an external tool dependency but the quality wasn't quite there, and you can't use the field/curve guides headless, only in the GUI. iirc I landed on QuadWild being the best bet (it takes explicit feature edges + a guide cross-field as files, so you could drive it from painted curves), but there's some licensing stuff to consider there. So I shelved retopo in general — I didn't have the brush engine side solid yet, so figured I'd go focus on that first.

     I've also got a branch with an SDF experiment — an adaptive octree SDF, which is basically the DynaMesh-style answer to your second question: the tessellation follows the field and re-grids as you add/cut, so stretched areas get fresh, evenly-sized topology instead of smearing. I first meshed it out with Transvoxel, but the LOD transition-cell stuff got nasty (seam cracks at the octree level boundaries), and I came around to Surface Nets being the better extraction method — it's a dual method so it outputs all-quads directly, no ambiguous cases, no transition tables, ~half the verts of marching cubes, and it's nicely GPU-parallel. Sharp edges get a selective QEF solve (the dual-contouring trick) only on the cells that need it. So it basically collapses MC → retopo into one step. I shelved it to get the core brush feel locked first, but that's where I'd pick the volumetric side back up.


Sign In or Register to comment.