Cubic Craft
Haoda Li, Puyuan Yi, Victor Li, Zhen Jiang,
In this project, we present a stylization tool to automatically manipulate 3D objects into a cubic style. Our tool uses a cubic stylization algorithm [Liu and Jacobson 2019]1 to cubify the object while preserving the geometric details. With our tool, 3D artists can create Minecraft-styled objects with ease.
Problem Description
Non-realistic modeling can provide a unique art style for animations and video games. One of the most popular area for non-realistic modeling is voxel art. The cube-like looking is very interesting and attractive. There are many 3D editing software that can converts arbitrary meshes to voxels. However, voxelization works on local scale and cannot convert the general geometric shape. In our project, we use a cubic stylization algorithm to stylize the object into a cubic shape. Therefore, the object have a cubic look.
Goals and Deliverables
What we plan to deliver
The final demo will be an interactive GUI for editing and displaying objects. The GUI will provide sliders for tuning the parameters, including cube orientation and "cubeness". Because cubic stylization is based on ARAP energy, ARAP deformation comes for free. The user will also be able to set up handle points and deform the object by dragging the points. The GUI will be able to run in real time and show the object's deformation. In addition, we will have an offline renderer to produce ray tracing based images.
We are interested in testing the numerical stability and convergence speed of the cubic stylization algorithm. Also, how creative can the cubic style be.
What we hope to deliver
If there are enough time, we are interested in accelerating the algorithm using GPU for more complex meshes. Alternatively, we want to implement mesh decimation so that we we can estimate a simplified mesh, perform cubic stylization, and recover the original mesh after convergence.
In addition, we can allow more controls and creativity. For example, the "cubeness" can be axis-specific so that the final shape is a cuboid (3D rectangle) instead a right cube. Also, we can expand the algorithm to create other polygon shapes.
Schedule
First week
- Read the paper and investigate the reference code.
- Write code for the basic cubic stylization algorithm.
Second week
- Finish and test the basic cubic stylization algorithm.
- Write the GUI interface and include slides for tuning the parameters.
Third week
- Fix any existing minor bugs or issues.
- Work on the stretch goal: accelerating the algorithm using GPU, if we have time.
- Plug into renderer in order to generate images and record videos for deliverables.
Fourth week
- Finish final deliverables, including project video, project webpage and final paper.
- Prepare for final demo, including making presentation slides and rehearsal for presentation.
- Code restructure, improve code readability.
Resources
We will mainly use C++ for the implementation. Ideally, the code will be cross-platform, but we will mainly target at Windows platform.
Here is a list of papers and libraries we will use
- Cubic Stylization [Liu and Jacobson 2019]1 the algorithm we will use.
- As-rigid-as-possible surface modeling [Sorkine and Alexa 2007]2 makes the deformation problem an energy minimization problem, and cubic stylization is augmented on ARAP energy.
- CGAL[@cgal] as the major software platform for CPU implementation.
- Eigen for linear algebra and sparse solver.
- ImGUI as the major platform for GUI.
- Taichi language [Hu et al. 2019]3 If GPU optimization is possible, we can also implement cubic stylization as a Taichi kernel.
References
-
Liu, H.-T.D. and Jacobson, A. 2019. Cubic stylization. ACM Trans. Graph. 38, 6. ↩↩
-
Sorkine, O. and Alexa, M. 2007. As-rigid-as-possible surface modeling. Proceedings of the fifth eurographics symposium on geometry processing, Eurographics Association, 109–116. ↩
-
Hu, Y., Li, T.-M., Anderson, L., Ragan-Kelley, J., and Durand, F. 2019. Taichi: A language for high-performance computation on spatially sparse data structures. ACM Transactions on Graphics (TOG) 38, 6, 201. ↩