Difference between revisions of "CalVR Plugins"

From Immersive Visualization Lab Wiki
Jump to: navigation, search
Line 7: Line 7:
 
Use (CVRPlugins Dir)/calit2/ModelLoader as an example:  
 
Use (CVRPlugins Dir)/calit2/ModelLoader as an example:  
  
Make a copy of the ModelLoader folder, rename it to <YourPluginName>. Each source code directory has the files "CMakeLists.txt" and "cmake_install.cmake". In order for cmake to generate a make file for the new plugin, we need to add an entry to these cmake files in the parent directory, and modify the cmake files in the new plugin directory.
+
Create a new directory named <YourPluginName>. Each source code directory have a file "CMakeLists.txt". In order for cmake to generate a makefile for the new plugin, we need to add an entry to the "CMakeLists.txt" in the parent directory.
  
Under the parent directory, e.g., CalVR/plugins/calit2/CmakeLists.txt, add the following lines:
+
Under the parent directory, e.g., (CVRPlugins Dir)/calit2/CmakeLists.txt, add the following lines:
  OPTION(PLUGIN_EXAMPLEPLUGIN "ExamplePlugin" ON)
+
  OPTION(PLUGIN_EXAMPLEPLUGIN "ExamplePlugin" OFF)
  
 
  IF(PLUGIN_EXAMPLEPLUGIN)
 
  IF(PLUGIN_EXAMPLEPLUGIN)
Line 16: Line 16:
 
  ENDIF(PLUGIN_EXAMPLEPLUGIN)
 
  ENDIF(PLUGIN_EXAMPLEPLUGIN)
  
Launch cmake, delete the cache if necessary, configure and generate again. Note that under the PLUGINS entry, the calit2 checkbox should be on, and you should be able to find your new plugin name under PLUGIN along with the ModelLoader.  
+
Go to the root CVRPlugins directory and run:
 
+
ccmake .
Go back to the plugin directory, the new Makefile should have been generated. Type make to build.  
+
Type 'c' to configure the project again.
 +
<br>Note that under the PLUGINS entry, the calit2 checkbox should be on.
 +
<br>You should now see an option to build your new plugin. Set this option to ON, re-configure, then type 'g' to generate the new makefiles.
 +
<br>You can now build your plugin by typing make.
  
 
Now we need to modify the CalVR/config/config.xml to turn on the new plugin. We can search for ModelLoader and add the exact lines to config.xml, and modify the names to the new plugin's name. Now run CalVR, in the terminal we should see the init message of the new plugin.
 
Now we need to modify the CalVR/config/config.xml to turn on the new plugin. We can search for ModelLoader and add the exact lines to config.xml, and modify the names to the new plugin's name. Now run CalVR, in the terminal we should see the init message of the new plugin.

Revision as of 12:37, 21 November 2011

Overview

In CalVR, new applications are added in the form of plugins. These plugin modules implement a virtual base class in the CalVR core and compile into a separate shared library. At runtime, this library is loaded and the plugin receives callbacks from the CalVR core through the implemented virtual functions.

Adding a new Plugin for CalVR

Use (CVRPlugins Dir)/calit2/ModelLoader as an example:

Create a new directory named <YourPluginName>. Each source code directory have a file "CMakeLists.txt". In order for cmake to generate a makefile for the new plugin, we need to add an entry to the "CMakeLists.txt" in the parent directory.

Under the parent directory, e.g., (CVRPlugins Dir)/calit2/CmakeLists.txt, add the following lines:

OPTION(PLUGIN_EXAMPLEPLUGIN "ExamplePlugin" OFF)
IF(PLUGIN_EXAMPLEPLUGIN)
 ADD_SUBDIRECTORY(ExamplePlugin)
ENDIF(PLUGIN_EXAMPLEPLUGIN)

Go to the root CVRPlugins directory and run:

ccmake .

Type 'c' to configure the project again.
Note that under the PLUGINS entry, the calit2 checkbox should be on.
You should now see an option to build your new plugin. Set this option to ON, re-configure, then type 'g' to generate the new makefiles.
You can now build your plugin by typing make.

Now we need to modify the CalVR/config/config.xml to turn on the new plugin. We can search for ModelLoader and add the exact lines to config.xml, and modify the names to the new plugin's name. Now run CalVR, in the terminal we should see the init message of the new plugin.