Skip to content

Latest commit

 

History

History
61 lines (45 loc) · 2.77 KB

File metadata and controls

61 lines (45 loc) · 2.77 KB

Project 2: Surface Reconstruction

author: m5282025 Yoshiki Sakai
slides link: https://docs.google.com/presentation/d/1u5dwRc7636iZIzBgPNTOS9zPeFmRFznbFkx4gCqBw80/edit?usp=sharing

Project Structure

  • src: the folder to maintain sources
  • lib: the folder to maintain dependencies
  • shaders: shader files
  • data: point clouds in .xyz format (+ doraemon.off from the provided project)
  • .vscode: VSCode config files

Modifications from the provided code (Mesh Viwer / DualContouring)

  • Created an enum for determining the drawing mode of the program (point cloud or triangle mesh).
    This is read as the fourth argument to the program (args[3]).

  • Created XYZLoader.java
    This is a class for loading .xyz format files.
    Does mostly the same stuff as the OFFLoader class, but reads normals (if they exist) and compute faces using RBF (TO BE DONE).

  • Created RBFInterpolator.java
    This is a class for performing RBF interpolation.
    The function evaluate() is called from sample() function in the DualContouring class.
    The initial creation of matrix A takes quite long.
    Currently uses the thin-plate formula because that seems to work the best.
    Triharmonic function is somehow faster (and it works), so I'm using that for now.

  • Decided to use only 1/4 of the vertices for RBF to shorten the wait time until render.

  • Created setNormal() method in TriangleMesh.java
    Since the class was missing a method to add normals...

  • Added lines in MeshNode.java to draw point clouds (render() method).

  • Adapted DualContouring.java to use TriangleMesh instead of Trimesh.

  • Created getMesh() method in DualContouring.java to directly acquire the triangle mesh.

  • Assign random color to the mesh.

  • Flipped the camera movement direction when arrow keys are pressed.

  • Changed the light source position.

  • ... and few more adjustments that I can't recall

Tasks

  • Load a 3D point-cloud using the xyz file format (list of point coordinates and normal)
  • Visualize the 3D point-cloud using OpenGL
  • Implement surface reconstruction with radial basis functions (RBF)
  • Implement the Marching Cubes algorithm to convert the zero level-set of the RBF to a triangle mesh
  • Implement data-structures for manipulating triangle meshes
  • Visualize the reconstructed surface using OpenGL

Resources

Some resources I found useful while implementing...