Skip to content
A parametric aircraft geometry tool
Branch: master
Clone or download
ramcdona OpenVSP 3.17.0
Once again, it has been about half a year since the last release -- that
seems to be about the cadence these days.  This version includes some cool
features and fixes some longstanding bugs.  Hopefully it will be a good
step up for everyone.

conformalOpenVSP to CHARM export scripts.  This release includes a set of Python
scripts that will generate the geometry input files to run CHARM - the
comprehensive rotorcraft analysis tool.  These scripts debuted at the
OpenVSP/CHARM/PSU-WOPWOP eVTOL acoustics short course at the VFS
conference earlier this year.

Transparent screenshots - we now export screenshots with the background
made transparent (no more off-white box screaming VSP).  Even translucent
components maintain their translucency.

Cutting planes that define a structure can now be exported as STEP and IGES
files.  Note, these are accessed through the main File-Export menu, not
the FEAMesh menu.

Improvements to STL export for unintersected geoms with better tags.  Also
allow export of propellers relocated at the origin -- these options were
preferred for some CFD workflows.

Support design lift coefficient for four-digit airfoils.  The design lift
coefficient is now calculated -- and the option exists to set the camber
to achieve a desired design lift coefficient.  This brings a more useful
and modern parameterization to the old classic airfoil set.

Lots of propeller improvements -- Instead of discrete airfoils at stations,
propellers can now be defined in terms of distributions of
thickness-to-chord and design lift coefficient.  This will result in
smoother propeller lofts better able to match design intent (and to
recreate the geometry of many published props).  Also calculate integrated
design lift coefficient for props (already calculates activity factor).
Add control of feather axis location and feather offset - should help with
modeling rotors and some novel prop designs.  Also add the option of a disk
model for every propeller.

Faster surface evaluation -- a few improvements to the way surface points
(and normals) are evaluated to speed refreshes.  OpenVSP should be
noticeably faster feeling.

Two really significant bug fixes (along with a bunch of smaller ones).
The 'Unexpected ResetRemapID' warning with models including conformal
geometry is fixed.  This should also help fix the destruction of links
when opening models.

The file corruption bug where the decimal separator was switched to a
comma has been fixed.  This only happened for users with a non-default
locale, who saved the VSP file after exporting an IGES file.  It was a bug
in the IGES library.  Sorry for the pain this one has caused.

Overall, this should be a great release -- and perhaps the only one for
six months or so.

 - CHARM Python export scripts
 - Transparent screenshots
 - Border toggle in menu
 - Improved show axis toggle
 - Export structure surfaces to IGES and STEP
 - Design lift coefficient support for four-digit airfoils
 - Propeller definition by thickness and CLi distribution
 - Calculate integrated design lift coefficient for props
 - BEM files in terms of thickness and CLi distribution
 - Feather axis and offset control for propeller
 - Implicit disk model for propeller
 - STL solid names include tag number
 - Tag unintersected triangles for STL export
 - Increase tessellation limits
 - Option to export props at origin (unintersected STL and STEP/IGES)
 - Batch evaluation of Bezier surface points and normals (faster refresh)

Library updates:
 - FLTK to 1.3.5
 - Eigen to 3.3.7
 - LibXml2 to 2.9.9
 - LibIGES to version that respects locale
 - Code-Eli to version that supports latest Eigen and other improvements.

 - Restore visualization of CFDMesh sources and wake
 - Don't crash when BOR XSec changed to Bezier
 - Don't crash when reading Lednicer airfoils
 - Import v2 multi-section wings properly
 - Make key-corner default for rounded rectangle
 - Reverse props with shifted construction line built correctly
 - Don't allow insertion of XSec at negative index from API
 - Don't allow comma as decimal point marker; fixes file corruption.
 - Fix writing excressence drag label to XML file
 - Fix unexpected ResetRemapID in files with conformal geometry
Latest commit 18e4e8e Mar 19, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
Libraries Update Eigen to 3.3.7 Mar 28, 2019
SuperProject Make SuperProject install really install, also add package command. Jul 13, 2016
examples Extend API and scripting to support transparent screenshots Mar 28, 2019
src OpenVSP 3.17.0 Mar 28, 2019
.gitattributes OpenVSP 2.9.0, first public alpha for version 3. Feb 13, 2014
.gitignore OpenVSP to CHARM Python scripts Mar 28, 2019
.travis.yml Use bundled Eigen on TravisCI Linux. Jan 8, 2017
CMakeLists.txt OpenVSP 2.9.0, first public alpha for version 3. Feb 13, 2014
LICENSE Update copyright date for active developers to new year. Jan 8, 2017 Fix missing umlaut from Tomas Möller's name. Feb 19, 2018 Update TestScript to test new capability. Aug 13, 2014
TestXSec.fxs Update example fuselage cross section file to match new convention. Apr 15, 2014

Build and Installation Instructions for OpenVSP


OpenVSP is a parametric aircraft geometry tool. OpenVSP allows the user to create a 3D model of an aircraft defined by common engineering parameters. This model can be processed into formats suitable for engineering analysis.

The predecessors to OpenVSP have been developed by JR Gloudemans and others for NASA since the early 1990's. In January 2012, OpenVSP was released as an open source project under the NOSA 1.3 license. The first open source version was 2.0.0.


OpenVSP is available under the terms of the NASA Open Source Agreement (NOSA) version 1.3. The complete terms of the license are specified in the LICENSE file.


OpenVSP relies on a variety of libraries and code made available by other authors. If you are a VSP user, you probably don't need to worry about this. Take this section as informational, providing credit where due.

If you wish to compile VSP or to use the VSP API, then you will need to know more. These dependencies fall into four categories: those assumed to be provided by the operating system; those that must be downloaded and installed by the developer; those that are bundled with OpenVSP, but the developer may want to use a different version installed on the system; and those that are bundled with OpenVSP.

Most users are familiar with the OpenVSP GUI. OpenVSP can also be accessed by other programs via an API, or in a batch mode with no user interaction. These 'headless' targets may be compiled without any of the graphics libraries installed. Although most developers will want to build the graphical version, those dependencies only needed by the GUI program and graphics-enabled API are marked GRAPHICS_ONLY.

Assumed provided by the operating system.
  • OpenGL - 3D graphics library. OpenGL should be available on any platform capable of displaying 3D graphics. GRAPHICS_ONLY
Installed by the developer.
  • C++ Compiler - OpenVSP requires a modern C++ compiler that supports some C++11 features. We try to support popular free compilers on the main platforms. For Windows, we require Visual Studio 2010 Express or newer. For Mac OSX or Linux/BSD, we support LLVM and GCC.

  • CMake 2.8 - Cross-platform build system. CMake generates platform-native build files which control compilation of OpenVSP. CMake is available as a standard package on most Linux systems and binary installers are available for many other platforms including Windows and Mac OS X.

  • SWIG - Simplified Wrapper and Interface Generator. Optional dependency used to build interface to API for Python and other scripting languages.

  • Python - Scripting language. Optional dependency required if building Python API module.

  • Doxygen - Documentation generator. Optional dependency used for generating documentation from the source. Can also utilize graphviz dot to generate improved figures in the documentation. (

Bundled with OpenVSP, but system libraries may substitute.
  • Code-Eli - Curve & surface library. Code-Eli was developed by David Marshall to meet OpenVSP's needs. It is a header-only library that must be available to build. It is not likely to be packaged on any system.

  • Eigen3 - Template library for linear algebra. This header-only library is required by Code-Eli. Eigen3 is likely to be available as a standard package on Linux.

  • AngelScript - Embedded scripting language for C++. Used for user-defined components.

  • CppTest - C++ Unit testing framework.

  • Libxml2 - XML parser and toolkit. Libxml2 most likely comes pre-installed with most Linux distributions and Mac OS X systems. Windows users must download the source and build this library following the Libxml2 instructions.

  • CMinpack - C/C++ port of standard Fortran Levenberg-Marquardt implementation.

  • FLTK - Cross-platform windowing library. FLTK should be available as a standard package on most Linux systems and can be installed from source on Windows and Mac OS X according to the FLTK instructions. GRAPHICS_ONLY

  • libjpeg - JPEG compression library. We typically piggy-back on the libjpeg accompanying FLTK. If you prefer to use your own, it is typically pre-installed on Linux. You will need to build it yourself for MacOS or Windows. GRAPHICS_ONLY

  • GLM - OpenGL math library. GRAPHICS_ONLY

  • GLEW - OpenGL Extension Wrangler Library. This library is used to access any modern OpenGL features. GRAPHICS_ONLY

  • libIGES - Library for working with IGES files. This is a very new library and is not likely to be packaged on any system.

Bundled with OpenVSP.
  • STEPcode - Library for working with STEP standard files. Based on an old library developed by NIST. This is a relatively new library, in constant development. Not likely to be packaged on any system.

  • nanoflann - Fast nearest neighbors library.

  • sixseries - NASA 6-Series airfoil generation Fortran code released to the public domain from NASA TM X 3069 September, 1974. Converted to C using F2C.

  • Triangle by Jonathan Shewchuk 2D Delaunay triangulator. This routine has been included in this distribution.

  • triInt by Tomas Möller - Fast triangle-triangle intersection test. This code comes from two sources previously available online. When JGT was taken over by Taylor and Francis, the source accompanying the articles became unavailable. The routines are included in this distribution.

  • glFont2 by Brad Fish [] (*/ - 2D OpenGL font tool. glFont2 has been included in this source distribution. GRAPHICS_ONLY


If you want to build OpenVSP on a Debian based Linux computer (Debian, Ubuntu, Mint, etc.), step-by-step instructions are included on the OpenVSP Wiki here: Debian Based Build.

All of the supporting libraries and code described above in DEPENDENCIES categories 1 and 2 must be properly installed. Those in categories 3 and 4 can be satisfied by OpenVSP itself. Any dependencies from category 3 that the developer prefers to use a system library must be properly installed.

We only expect two common cases where developers would prefer to use the system libraries over the bundled ones. First, on Linux where system libraries are readily available and distributions strongly prefer they are used. Second, when a developer is simultaneously working on OpenVSP and the dependency in question.

OpenVSP is packaged for compilation into three CMake projects: the main OpenVSP project with all the OpenVSP source and the category 4 dependencies; a Libraries project with all the category 3 dependencies; a SuperProject that can unify building the other two projects.

Casual developers new to OpenVSP will want to use the SuperProject; building it should take care of everything. More involved developers will want to use the OpenVSP and Libraries projects directly; the OpenVSP project integrates better than the SuperProject with most IDEs. Developers who want to use only system libraries for the category 3 dependencies have no need for the Libraries project; they can work only with the main project.

CMake is used to construct the build files for a project. CMake supports out-of-tree builds which keep the source tree free of generated files. Create a build directory to contain the generated files, say openvsp/build. Then, change to the build directory and run CMake - passing a relative path to openvsp/src, say cmake ../src.

Once CMake has generated the files for your favorite build system, load them in the IDE and compile or launch the build from the command line.

The OpenVSP CMake system can be configured by defining a handful of variables. These variables may be relevant to some or all of the projects.

All project variables:
  • VSP_NO_GRAPHICS -- Set this variable to disable everything to do with graphics. The build system will not search for or build any graphics libraries. It will only build the headless batch-mode VSP, API, and bindings. This is ideal for building VSP on a HPC machine with limited access.

  • XXX_OMP_COMPILER -- Set these variables to point at secondary compilers to use when the primary compiler does not support OpenMP. This will allow the VSPAERO solver to be built as a multithreaded program. Expected versions of this variable are:

OpenVSP project variables:
  • VSP_LIBRARY_PATH -- Set this variable to point at the directory where the Libraries project was built. The SuperProject sets this path automatically. The Libraries project writes a file VSP_Libraries_Config.cmake containing numerous settings to this path.

  • XXXX_INSTALL_DIR -- Set this variable to point to a directory where a library has been installed. This provides a suggestion to a corresponding FIND_PACKAGE( XXXX ). Do not use these variables with VSP_LIBRARY_PATH, it will overwrite them. Acceptable versions of this variable are:

Libraries & SuperProject project variables:
  • VSP_USE_SYSTEM_XXXX -- Set this variable to search for the particular library rather than use the bundled versions. Acceptable versions of this variable are:

You can’t perform that action at this time.