Skip to content

Representing complex surfaces of arbitrary smoothness in 3D in C++

Notifications You must be signed in to change notification settings

geometryprocessing/blendsurf

Repository files navigation

Blendsurf is a C++ library to represent surfaces of arbitrary smoothness (C^\infty and C^k) written by Lexing Ying and Elif Tosun. Minor additions added by Matt Morse. Currently NOT maintained. It is made available for use as is in other projects.

Requires:

  • OpenMP
  • BLAS/LAPACK
  • CMake 3.1

The renderer requires:

  • OpenGL version that supports EXT_texture_cube_map

Library compilation tested on OSX 10.10 and Cent OS 7.3 with gcc-4.8 and icc/icpc 17.0.1. The renderer has been tested with gcc-4.8 on OSX 10.10.

To compile the library:

mkdir build
cd build
CC=<your-c-compiler> CXX=<your-cxx-compiler> cmake ..
make 

To compile the renderer, use

CC=<your-c-compiler> CXX=<your-cxx-compiler> cmake -DCOMPILE_RENDERER=True ..

Legacy rendering code is available in vis/. This is not maintained. It compiles and runs as expected with the current CMakeLists.txt's, but it requires EXT_texture_cube_map in your linked OpenGL implementation. This is deprecated and current versions of OpenGL do not support it. Moreover, the options file vis/visoptions3d requires -bdsurf_submatlibfile and -bdsurf_bdulibfile to point to the location of ccsubmatall.dat and bdsurf_U_ONE.dat respectively, which are downloaded from the link below. Legacy makefiles are included for future reference.

On the off chance someone gets the viewer running again: The options file for the visualization code is visoption3d, with some comments explaining each value. In the legacy viewer, the following keys are active:

  • P = display/remove control mesh
  • R = render surface
  • S = surface control, switches between different views reflection map, checkerboard map, higher order derivatives
  • V = switch from one vertex to another for surface control
  • F = wireframe
  • I = influence boundary
  • C = center
  • home = return to original view
  • W = write ppm file
  • Q = exit

Legacy test cases, precomputed data required for some options, and scripts are available at https://drive.google.com/open?id=13Gpjq5fFwwzCQ4XnaRQQOliNbOwTLaNP, but I'm not exactly sure what most of the files are for.

About

Representing complex surfaces of arbitrary smoothness in 3D in C++

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages