This is a preliminary scope/living document of my current plans for half-edge!
Pretty much everything is subject to change as circumstances evolve, but this should be a pretty good rough guideline to give you an idea for what's to come!
## Core Features
> [!success] Features planned for the 1.0 release
> - π Polygonal Modeling
> - Primitives (Box, torus, sphere)
> - Polygon/prism drawing
> - Translate/Rotate/Scale manipulation
> - Selection conversion & expansion
> - π² GPU accelerated selection
> - Live previews of box selections
> - Camera-based selection support
> - βοΈ Geometry Tools
> - Extrude, Bridge, Revolve
> - Fill hole, Create quad, Bevel
> - Path cut, Separate edges
> - π«° Grid & Snapping tools
> - Hotkey adjustable power of two grid
> - Vertex, per-axis, & planar snapping
> - Adjustable gizmo/pivot position
> - π¦ UV editor that doesn't make you hate yourself
> - A modern take on UV mapping
> - Interactive unfold
> - Texel density & deformation visualizations
> - Adjustable pixel grid with snapping
> - Non-uniform UV region preview/support
> - π¨ Vertex painting
> - Per-channel masks & preview
> - Vertex normal painting
> - UV painting
> - β¬οΈ Vertex normal tools
> - Edges can be soft, hard, or auto (angular threshold)
> - Advanced per-face normal alignment/weighting
> - π§ Configurable up axis & handedness
> - yeah that's right you heard me
> - πΎ File import/export
> - Exports .gltf or .usd or .obj or .fbx, not sure which yet!
> - Import formats TBD
## Potential features
> [!summary] Features that *might* be included for 1.0, or as an update
> - π Tabbed interface
> - Because, it's convenient as heck
> - No need to decide whether to save
> and close before opening something else
> - Easily jump between meshes
> - π AO Baking
> - Ambient occlusion is an instant upgrade for many models, and would be relatively easy for me to make
> - π SubD surfaces (Catmull-Clark)
> - Easy enough to implement as a destructive operator
> - Might not make it to 1.0 as a real-time non-destructive layer/mode though!
> - β Timelapse video export
> - If I can compress the data enough
> - would be a neat tool for social media
> - πͺ‘ Splines
> - Placing/editing splines
> - Extruding along splines
> - πͺ Skinning & Rigging
> - Rarely used for level art, but would open up the tool to be used for most meshes in a whole game
> - π© Volumetric SDFs w. boolean operations
> - Unlike polygonal meshes, booleans are trivially easy with SDFs
> - one-way conversion from SDF to polygons
> - π§ Voxel/3D grid mesh tool
## Big Maybes
> [!example] Features that would be nice, but are deep rabbit holes that are dangerous to walk down, especially as the sole developer on an already large project
> - πΌοΈ Texture painting
> - πΉ Generalized boolean operations
> - πββοΈ Animation editor
> - This is a pretty big rabbit hole
> - Having this would pretty much make it viable as a game dev 3D art tool from start to finish though
> - π Non-destructive editing
> - (modifier stacks or node-based mesh editing)
> - I often find these to rarely cooperate well with destructive editing
> - Also, I want to emphasize human made, hand-crafted art, and this does slightly steer away from that
> - I want to prioritize making destructive editing as nice to use as possible first
> - πPlugin API
> - For custom mesh operations
> - Or maybe export workflows
## Out of scope
> [!warning] Features that are unlikely to ever be implemented
> - β¨ HD fancy beauty shot staged renders
> - No marmoset style renders
> - No offline path tracing renders either
> - π₯ Cameras, camera paths, & video export
> - This is not designed for cinema stuff
> - πͺ© Node-based shaders/procedural texturing
> - Substance designer/Pixel composer style
> - As much as I'd love to do this (again), it's a dangerously big undertaking
> - ποΈ Advanced rigging tools
> - Look-at controls, IK joints, that kind of thing
> - π Importing .blend/.ma/.mb/similar files
## Will never happen
> [!failure] Someone murdered Freya and is impersonating her
>
> - β Generative AI features
> - β web3/NFT/crypto features
> - β turning it into a game engine