Hi Émeric,

It would be nice if you could update this documentation at the website (
http://www.openscenegraph.com/index.php/documentation/platform-specifics/windows/38-visual-studio-plugins
 ).

Thanks.

2014-09-23 11:59 GMT+02:00 Émeric MASCHINO <[email protected]>:

> Hi,
>
> For those lost souls trying to build the OpenVRML plug-in on Windows,
> here's how I did it with OSG 3.2.1. Hope this helps, as I was
> desperately looking for such informations the passed days ;-)
>
> First, the informations at [1] are completely outdated. By contrast to
> what's stated there, OpenVRML 0.14.x is no more relevant at all, even
> on Windows. OpenVRML 0.18.x is the way to go. So, to build the
> OpenVRML plug-in, you need to build OpenVRML first. For this, the
> Boost C++ Libraries are required. And OpenVRML's default build
> configuration also has dependencies on libpng and FreeType.
>
> I've successfully built OpenVRML 0.18.9 against Boost 1.55.0, libpng
> 1.6.13 and FreeType 2.5.0 on a Windows XP x64 PC using the Visual
> Studio 2010 Professional IDE. I'm assuming here (i) that your OSG root
> _build_ folder is C:\OpenSceneGraph and (ii) that you've correctly set
> up and/or built Boost, libpng and FreeType. Here are the steps:
> - Download OpenVRML 0.18.9 source code openvrml-0.18.9.tar.gz from
> http://sourceforge.net/projects/openvrml/files/openvrml/0.18.9/;
> - Extract openvrml-0.18.9.tar.gz somewhere; say in C:\openvrml-0.18.9
> folder;
> - Get the following missing project files from
> https://svn.code.sf.net/p/openvrml/code/tags/0.18.9/ and copy them to:
>   - src/local/libopenvrml-dl/openvrml-dl.vcxproj:
> C:\openvrml-0.18.9/src/local/libopenvrml-dl/openvrml-dl.vcxproj;
>   - src/node/x3d-interpolation/x3d-interpolation.vcxproj:
> C:\openvrml-0.18.9/src/node/x3d-interpolation/x3d-interpolation.vcxproj;
>   - src/script/javascript.vcxproj:
> C:\openvrml-0.18.9/src/script/javascript.vcxproj;
> - Remove any entry <PlatformToolset>Windows7.1SDK</PlatformToolset>
> from the project files;
> - Remove any entry <IncludePath
>
> Condition="'$(Configuration)|$(Platform)'=='{Debug|Release}|x64'">C:\Boost\include\boost-1_43;$(IncludePath)</IncludePath>
> from the project files;
> - Fix the x64 platform settings of all projects files, copying from
> the Win32 section. Most were incorrectly created as Applications
> rather than DLLs!
> - Go to C:\openvrml-0.18.9 and open OpenVRML.sln solution;
> - Add $(BOOST_ROOT) to additional include directories of all projects;
> - Add $(BOOST_ROOT)\lib{32|64}-msvc-10.0 to additional library
> directories of all projects;
> - Add /bigobj compiler option to Debug|x64 configuration of openvrml
> DLL project to work around fatal error C1128;
> - Ensure that input libraries of openvrml DLL project is set to
> shlwapi.lib;XmlLite.lib;%(AdditionalDependencies) for all
> targets/platforms;
> - Ensure that input libraries of vrml97 DLL project is set to
> libpng16[d].lib;freetype250[_D].lib;%(AdditionalDependencies) for all
> targets/platforms and that additional library directories are properly
> set;
> - Build the vrml97 and x3d-* DLL projects. The openvrml DLL and
> openvrml-dl static library projects are automatically built as
> dependencies;
> - Copy the headers from C:\openvrml-0.18.9\src\libopenvrml hierarchy
> to C:\OpenSceneGraph\3rdParty\include\openvrml, replicating the
> hierarchy, as well as the resulting openvrml.lib library files to
> OpenSceneGraph\3rdParty\lib and openvrml.dll DLL files to
> OpenSceneGraph\3rdParty\bin;
> - Add OPENVRML_DIR environment variable, pointing to
> C:\OpenSceneGraph\3rdParty;
> - Update
> OpenSceneGraph\OpenSceneGraph-3.2.1\src\osgPlugins\vrml\CMakeLists.txt
> file to build against OpenVRML 0.18.x:
>   - add references to Boost: add ln. 1-3:
>
>     FIND_PACKAGE(Boost COMPONENTS thread)
>
> INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
>
> LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
>
>   - remove references to antlr and regexp libraries: delete ln. 9-21
> and ln. 23-24;
>   - add OPENVRML_USE_DLL preprocessor definition: add ln. 31:
>
>     ADD_DEFINITIONS(-DOPENVRML_USE_DLL)
>
> Final result should be:
>
> FIND_PACKAGE(Boost COMPONENTS thread)
> INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
> LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
>
> INCLUDE_DIRECTORIES(${OPENVRML_INCLUDE_DIR})
> INCLUDE_DIRECTORIES(${OPENVRML_INCLUDE_DIR}/openvrml)
>
> IF (WIN32)
>     INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR})
>     INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR})
>     INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
>
>     SET(TARGET_LIBRARIES_VARS
>         OPENVRML_LIBRARY
>         JPEG_LIBRARY
>         PNG_LIBRARY
>         ZLIB_LIBRARY)
>     SET(TARGET_EXTERNAL_LIBRARIES
>         Ws2_32.lib)
>
>     ADD_DEFINITIONS(-DOPENVRML_USE_DLL)
> ELSE()
>     SET(TARGET_LIBRARIES_VARS
>         OPENVRML_LIBRARY)
> ENDIF()
>
> SET(TARGET_SRC
>     IndexedFaceSet.cpp
>     Primitives.cpp
>     ReaderWriterVRML2.cpp
>     ConvertToVRML.cpp
> )
>
> SET(TARGET_H
>     ReaderWriterVRML2.h
>     ConvertToVRML.h
> )
>
> #### end var setup  ###
> SETUP_PLUGIN(vrml vrml)
>
>
> Check you CMake configuration and build the OpenVRML plug-in:
> - OPENVRML_INCLUDE_DIR: C:/OpenSceneGraph/3rdParty/openvrml;
> - OPENVRML_LIBRARY: C:/OpenSceneGraph/3rdParty/lib/openvrml.lib;
> I didn't use OpenVRML Debug library in the end (see Notice below) so
> OPENVRML_LIBRARY_DEBUG was not set.
>
> Now, for runtime, OpenVRML requires some environment variables and
> data or the OpenVRML plug-in won't work at all:
> - Copy the resulting openvrml.dll DLL from
> C:\openvrml-0.18.9\{Win32|x64}\{Debug|Release}\bin to e.g.
> %OSG_ROOT%\bin; I'm assuming here that %OSG_ROOT%\bin is in your PATH;
> - Copy the resulting DLL nodes from
> C:\openvrml-0.18.9\{Win32|x64}\{Debug|Release}\bin\node to e.g.
> %OSG_ROOT%\share\OpenVRML\bin\node and add OPENVRML_NODE_PATH
> environment variable to point to this folder;
> - Copy the C:\openvrml-0.18.9\data folder to e.g.
> %OSG_ROOT%\share\OpenVRML and add OPENVRML_DATADIR environment
> variable to point to %OSG_ROOT%\share\OpenVRML\data.
>
> Optionally, you can enable scripting, compiling the javascript DLL
> project. To this end, you'll also need XULRunner SDK 12.0 available
> only for Win32 target, not x64 one. So I quickly gave up on this one
> as I moreover wasn't able to run OpenVRML examples with scripting
> (e.g. rotationToy.wrl, Click.wrl) without crashing OpenVRML (using a
> Win32 build of course). Nevertheless, don't forget to copy the
> resulting javascript.dll from
> C:\openvrml-0.18.9\{Win32|x64}\{Debug|Release}\bin\script to e.g.
> %OSG_ROOT%\share\OpenVRML\bin\script and add OPENVRML_SCRIPT_PATH
> environment variable to point to this folder if you want to play with
> scripting.
>
> In some debugging scenario (e.g. VRML file displayed differently in
> sdl-viewer and osgviewer, like OpenVRML's snoman.wrl example where the
> arms are missing in osgviewer), it might be helpful to also build
> OpenVRML's SDL-based viewer sdl-viewer. For this, you'll need SDL
> 1.2.x. I've successfully built sdl-viewer with SDL 1.2.15.
>
> Notice: DON'T MIX Debug and Release versions of sdl-viewer.exe,
> openvrml.dll, javascript.dll and the DLL nodes in the same folders:
> even if they're named differently (e.g. with "d" suffix for Debug
> version), OpenVRML will badly crash as it seems to try to use/load
> both flavours!
>
> For interested people, I've created from scratch native VS 2010
> solution/projects files using property sheets for the external
> dependencies. Just drop me a mail and I'll send you. I'll also submit
> them to the OpenVRML authors/maintainers.
>
> Cheers,
>
>      Émeric
>
>
> [1]
> http://www.openscenegraph.com/index.php/documentation/platform-specifics/windows/38-visual-studio-plugins
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>



-- 
Jordi Torres
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to