Source Code of Curve Orientation

This page provides the C++ source code for Feature Curve Orientation, the core part of Feature-Aligned Shape Texturing.


The curve orientation problem can be described as follows. Given a set of curves on a 3D surface, each represented as a
sequence of vertices connected by edges, we wish to assign an orientation to the tangent vector at each vertex, so that a vector
field that interpolates these oriented tangents is as smooth as possible. Please refer the details of our algorithm to the paper.


Downloads:
* Source Code (MeshStudio MSVC++ 2005 project, 452 KB)
* CHOLMOD includes and libs
compiled on Windows XP (cholmod.zip, 976KB)
* A wrapper for CHOLMOD matrix and vector (
cholmod_wrapper.zip, 4KB)
Testing Data (data.zip, 3.0MB) includes the following items:
* A mesh model file (fandisk.obj)
* Crest lines for the model output by Shin Yoshizawa's crest line extraction program (ravines_fandisk.txt and ridges_fandisk.txt).
* Processed crest lines with both random (fandisk_rand.ccl) and optimized orientation (fandisk_opt.ccl).
* A vector field file (fandisk_opt.shvf) generated with the optimized orientation.

Copyright: MeshStudio is developed by Kai Xu for research use. All rights about the program (esp. feature curve orientation) are reserved by Kai Xu.
This C++ source codes are available
only to a primary user for academic purposes. No secondary use, such as copy, distribution, diversion, business
purpose, etc., is allowed. In no event shall the author be liable to any party for direct, indirect, special, incidental, or consequential damage arising out
of the use of this program. 
MeshStudio is built on top of CGAL and many other libraries and source codes (see the copyright terms therein).

Compilation:
Platform: Win32
IDE: MSVC++ 2005
Instructions (see also readme.txt
included in the package):
* To compile the MSVC++ project, you need to first install CGAL (e.g., version 3.3). In the following, I use $(CGALROOT) to
refer to the root directory of CGAL.
* The computation of harmonic vector field uses CHOLMOD, so you also need to include and link the CHOLMOD stuff. All you
need to do is simply copying the the headers in "cholmod.zip(\include)" into "$(CGALROOT)\auxiliary\cholmod\include\" and
the libs in "cholmod.zip(\lib)" into "$(CGALROOT)\auxiliary\cholmod\lib\". The including and linking setting has been set up
within the VS project.
* I wrote a wrapper class for CHOLMOD matrix and vector (but not including the solver APIs) which you can find in
"cholmod_wrapper.zip". Copy the two *.h files into "$(CGALROOT)\include\CGAL\".

Usage:
* Input: There are two options. You can load either the output of Shin Yoshizawa's crest line program or crest lines processed
and saved by MeshStudio (*.ccl).
* Run: You can perform orientation at any time, no matter which type of data you have loaded. The corresponding vector field
will also be computed.
* Output: You can save the resulted vector field into file (*.shvf).

Please refer more details to readme.txt included in the package.

Acknowledgement:
We would like to thank the providers of the following libraries/source codes:
CGAL
CHOLMOD
Shin Yoshizawa's crest line extraction program

Feedback:
Please send any feedback to kevin DOT kai DOT xu AT gmail DOT com. Thank you.