This is going to be a brief post, but with an image that makes me exceptionally happy: I've been implementing a voxel data structure similar to an octree, but with a larger branching factor (still powers of 2), that contains a hashmap at the root of the tree. It takes inspiration from the paper "VDB: High-Resolution Sparse Volumes with Dynamic Topology" by Ken Museth . The image shows the…
Undo is a fundamental feature in many software applications, and my app ShapeReality - 3D Modeling is no exception. Due to the ubiquity of undo, one might expect implementing it to be a solved problem, but there commonly isn't a one-size-fits-all approach. This post will go into how I implemented undo for my mesh graph data structure, and how this fits into the complete undo history of an…
Gizmos # Translate, rotate and scale gizmos are now added to the app, which should make transforming elements a bit easier compared to manually dragging each element freely. The translate, rotate and scale gizmo respectively: The translate gizmo allows translating elements along an axis or a plane. The rotate gizmo allows rotating elements around a specific axis. And the scale gizmo allows scaling…
One core data structure in the ShapeReality - 3D Modeling application is a non-manifold polygon mesh data structure. This data structure is a graph of Vertices , Edges and Faces . It takes inspiration from Blender's BMesh data structure , the Radial Edge Structure (see Nvidia SMLib - Topology documentation ) and the paper Partial Entity Structure: A Compact Boundary Representation for…
For the past 1.5 month I have been working on a 3D modeling app for iOS devices using C++ and Swift, and I just released it on iOS. It supports: Non-manifold polygon meshes with loose vertices and edges (see An editable non-manifold polygon mesh data structure ) Inserting vertices, edges and faces Extruding edges and faces Deleting elements Duplicating elements Multi element selection Flipping…