|
Posted
about 9 years
ago
Finally, after many months (actually, more like years!) I've finally got around to moving the Functy code off SourceForge and on to GitLab. Getting it right took a big chunk of my holiday, but I reckon it'll have been worth it.
At the same time I've
... [More]
also split it into two separate projects: functy and libsymbolic. Grab nightly-built deb packages for Ubuntu from my private PPA. For the Windows installer I'm still figuring out where they should go (probably somewhere on this site, once I've moved the content off the now sleeping Functy blog).
SourceForge has been a great resource for such a long time and I'm sad to be moving on, but it's been through a lot recently, and not always in a good way. By contrast GitLab seems to be going in a really good direction. Using it on the Pico project has highlighted its strengths and I'm very optimistic for its future. [Less]
|
|
Posted
over 10 years
ago
by
flypig
SourceForge suffered a serious failure last week, apparently taking out everything apart from a static page saying:
The sourceforge.net website is temporarily in static offline mode.
Only a very limited set of project pages are available until the
... [More]
main website returns to service.
Thankfully, as you can now see, SourceForge is getting back to normal, including the Functy [...] [Less]
|
|
Posted
over 10 years
ago
About a week ago SourceForge suffered what seemed to be a catastrophic outage, taking everything offline. I realised when some of the tools I use for continuous integration and syndication started to complain at me. I'm pleased to see things are
... [More]
getting back to normal. Both Functy and Knot3D are hosted on SourceForge and both are now back online. SourceForge is an important site from an Open Source perspective and I feel for the SourceForge team who clearly have had to do a lot of work to piece everything back together. [Less]
|
|
Posted
over 10 years
ago
About a week ago SourceForge suffered what seemed to be a catastrophic outage, taking everything offline. I realised when some of the tools I use for continuous integration and syndication started to complain at me. I'm pleased to see things are
... [More]
getting back to normal. Both Functy and Knot3D are hosted on SourceForge and both are now back online. SourceForge is an important site from an Open Source perspective and I feel for the SourceForge team who clearly have had to do a lot of work to piece everything back together. [Less]
|
|
Posted
over 10 years
ago
OpenVDB seems to work best on Linuxy systems. Nick Avramoussis has posted some useful and clear instructions on how to build it using VC++10/11. Unfortunately C++ libraries aren't portable between compilers, and I needed it integrated into an
... [More]
existing project built using MinGW.
This post chronicles my experiences with getting it to work. If you're planning to travel the same path, you should know from the start that it's quite an odyssey. OpenVDB has several dependences which also need to be built with MinGW as well. But it is possible. Here's how.
The Dependencies
OpenVDB relies on several libraries you'll need to build before you can even start on the feature presentation. The best place to start is therefore downloading each of these dependencies and collecting them together.
I've listed the version numbers I'm using. It's likely newer versions will work too.
Boost 1.58
ilmbase 1.0.3 source code (part of OpenEXR)
OpenVDB 3.0.0. Not a dependency, but you're certainly going to need it
TBB 4.3 Update 5 Source
You also need zlib, but MinGW comes with a version you can use for free. Finally, grab yourself this skeleton archive which contains some files needed to complete the build.
The Structure
Each of these will end up generating a library you'll link in to OpenVDB. In theory it doesn't matter where you stick them as long as you can point g++ to the appropriate headers and libraries. Still, to make this process (and description) easier, it'll be a big help if your folders are structured the same way I did it. By all means mix it around and enjoy the results!
I've unpacked each archive into its own folder all at the same level with the names boost, ilmbase, openvdb, tbb and test. The last contains a couple of test files, which you can grab from the skeleton archive.
You can download a nice ASCII-art version of the folder structure I ended up with (limited to a depth of 2) to avoid any uncertainty.
In the next few sections I'll explain how to build each of the prerequisites. This will all be done at the command line, so you should open a command window and negotiate to the folder you unpacked all of the archives into.
Building Boost
Boost comes with a neat process for building with all sorts of toolchains, including MinGW. Assuming the folder structure described above, here's what I had to do.
cd boost
bootstrap.bat mingw
.\b2 toolset=gcc
cd ..
If you've download the skeleton archive, you'll find the build-boost.bat script will do this for you. This will build a whole load of boost libraries inside the boost\stage\lib folder. As we'll see later, the ones you'll need are libboost_system-mgw48-mt-1_58 and libboost_iostreams-mgw48-mt-1_58.
Building ilmbase
Actually, we don't need all of ilmbase; we only need the Half.cpp file. Here's what I did to build it into the library needed.
cd ilmbase\Half
g++ -UOPENEXR_DLL -DHALF_EXPORTS=\"1\" -c -I"." -I"..\config.windows" Half.cpp
cd ..\..
ar rcs libhalf.a ilmbase\Half\*.o
This will leave you with a library libhalf.a in the root folder, which is just where you need it.
Building TBB
TBB comes with a makefile you can use straight away, which is handy. This means you can build it with this.
cd tbb
mingw32-make compiler=gcc arch=ia32 runtime=mingw tbb
cd ..
Now copy the files you need into the root.
copy tbb\build\windows_ia32_gcc_mingw_release\tbb.dll .
copy tbb\build\windows_ia32_gcc_mingw_release\tbb.def .
Building OpenVDB
Phew. If everything's gone to plan so far, you're now ready to build OpenVDB. However, there are a few changes you need to make to the code first.
Following the steps from Nick's VC++ instructions, I made these changes:
Add #define NOMINMAX in Coord.h and add #define ZLIB_WINAPI in Compression.cc
Change the include path in Types.h from <OpenEXR/half.h> to <half.h>
Add #include "mkstemp.h" to the top of openvdb\io\TempFile.cc. This is to add in the mkstemp function supplied in the skeleton archive, which for some reason isn't included as part of MinGW.
The following should now do the trick.
cd openvdb
g++ -DOPENVDB_OPENEXR_STATICLIB=\"1\" -UOPENEXR_DLL -DHALF_EXPORTS=\"1\" -c -w -mwindows -mms-bitfields -I"..\..\libzip\lib" -I".." -I"..\boost" -I"..\ilmbase\Half" -I"..\tbb\include" *.cc io\*.cc math\*.cc util\*.cc metadata\*.cc ..\mkstemp.cpp
cd ..
ar rcs libopenvdb.a openvdb\*.o
And bingo! You should have a fresh new libopenvdb.a library file in the root folder of your project.
Testing the Library
Okay, what now?
You want to use your new creation? No problemo! The skeleton archive has a couple of test programs taken from the OpenVDB cookbook.
These tests also provide a great opportunity to demonstrate how the libraries can be integrated into the MinGW build process. Here are the commands I used to build them.
g++ -DOPENVDB_OPENEXR_STATICLIB=\"1\" -UOPENEXR_DLL -DHALF_EXPORTS=\"1\" -w -c -I"." -I"boost" -I"ilmbase\Half" -I"tbb\include" test\test1.cpp
g++ -DOPENVDB_OPENEXR_STATICLIB=\"1\" -UOPENEXR_DLL -DHALF_EXPORTS=\"1\" -w -c -I"." -I"boost" -I"ilmbase\Half" -I"tbb\include" test\test2.cpp
g++ -g -O2 -static test1.o tbb.dll zlib1.dll -Wl,-luuid -L"." -o test1.exe -lhalf -lopenvdb -L"boost\stage\lib" -lboost_system-mgw48-mt-1_58 -lboost_iostreams-mgw48-mt-1_58
g++ -g -O2 -static test2.o tbb.dll zlib1.dll -Wl,-luuid -L"." -o test2.exe -lhalf -lopenvdb -L"boost\stage\lib" -lboost_system-mgw48-mt-1_58 -lboost_iostreams-mgw48-mt-1_58
The key points are the pre-processor defines for compilation:
Define: OPENVDB_OPENEXR_STATICLIB
Define: HALF_EXPORTS
Undefine: OPENEXR_DLL
the include folders needed also for compilation:
boost
ilmbase\Half
tbb\include
and the library folders needed during linking:
tbb.dll
zlib1.dll (can be found inside the MinGW folder C:\MinGW\bin
libhalf.a
libopenvdb.a
libboost_system-mgw48-mt-1_58.a
libboost_iostreams-mgw48-mt-1_58.a
Finally you should be left with two executables test1.exe and test2.exe to try out your new creation. [Less]
|
|
Posted
over 10 years
ago
OpenVDB seems to work best on Linuxy systems. Nick Avramoussis has posted some useful and clear instructions on how to build it using VC++10/11. Unfortunately C++ libraries aren't portable between compilers, and I needed it integrated into an
... [More]
existing project built using MinGW.
This post chronicles my experiences with getting it to work. If you're planning to travel the same path, you should know from the start that it's quite an odyssey. OpenVDB has several dependences which also need to be built with MinGW as well. But it is possible. Here's how.
The Dependencies
OpenVDB relies on several libraries you'll need to build before you can even start on the feature presentation. The best place to start is therefore downloading each of these dependencies and collecting them together.
I've listed the version numbers I'm using. It's likely newer versions will work too.
Boost 1.58
ilmbase 1.0.3 source code (part of OpenEXR)
OpenVDB 3.0.0. Not a dependency, but you're certainly going to need it
TBB 4.3 Update 5 Source
You also need zlib, but MinGW comes with a version you can use for free. Finally, grab yourself this skeleton archive which contains some files needed to complete the build.
The Structure
Each of these will end up generating a library you'll link in to OpenVDB. In theory it doesn't matter where you stick them as long as you can point g++ to the appropriate headers and libraries. Still, to make this process (and description) easier, it'll be a big help if your folders are structured the same way I did it. By all means mix it around and enjoy the results!
I've unpacked each archive into its own folder all at the same level with the names boost, ilmbase, openvdb, tbb and test. The last contains a couple of test files, which you can grab from the skeleton archive.
You can download a nice ASCII-art version of the folder structure I ended up with (limited to a depth of 2) to avoid any uncertainty.
In the next few sections I'll explain how to build each of the prerequisites. This will all be done at the command line, so you should open a command window and negotiate to the folder you unpacked all of the archives into.
Building Boost
Boost comes with a neat process for building with all sorts of toolchains, including MinGW. Assuming the folder structure described above, here's what I had to do.
cd boost
bootstrap.bat mingw
.\b2 toolset=gcc
cd ..
If you've download the skeleton archive, you'll find the build-boost.bat script will do this for you. This will build a whole load of boost libraries inside the boost\stage\lib folder. As we'll see later, the ones you'll need are libboost_system-mgw48-mt-1_58 and libboost_iostreams-mgw48-mt-1_58.
Building ilmbase
Actually, we don't need all of ilmbase; we only need the Half.cpp file. Here's what I did to build it into the library needed.
cd ilmbase\Half
g++ -UOPENEXR_DLL -DHALF_EXPORTS=\"1\" -c -I"." -I"..\config.windows" Half.cpp
cd ..\..
ar rcs libhalf.a ilmbase\Half\*.o
This will leave you with a library libhalf.a in the root folder, which is just where you need it.
Building TBB
TBB comes with a makefile you can use straight away, which is handy. This means you can build it with this.
cd tbb
mingw32-make compiler=gcc arch=ia32 runtime=mingw tbb
cd ..
Now copy the files you need into the root.
copy tbb\build\windows_ia32_gcc_mingw_release\tbb.dll .
copy tbb\build\windows_ia32_gcc_mingw_release\tbb.def .
Building OpenVDB
Phew. If everything's gone to plan so far, you're now ready to build OpenVDB. However, there are a few changes you need to make to the code first.
Following the steps from Nick's VC++ instructions, I made these changes:
Add #define NOMINMAX in Coord.h and add #define ZLIB_WINAPI in Compression.cc
Change the include path in Types.h from to
Add #include "mkstemp.h" to the top of openvdb\io\TempFile.cc. This is to add in the mkstemp function supplied in the skeleton archive, which for some reason isn't included as part of MinGW.
The following should now do the trick.
cd openvdb
g++ -DOPENVDB_OPENEXR_STATICLIB=\"1\" -UOPENEXR_DLL -DHALF_EXPORTS=\"1\" -c -w -mwindows -mms-bitfields -I"..\..\libzip\lib" -I".." -I"..\boost" -I"..\ilmbase\Half" -I"..\tbb\include" *.cc io\*.cc math\*.cc util\*.cc metadata\*.cc ..\mkstemp.cpp
cd ..
ar rcs libopenvdb.a openvdb\*.o
And bingo! You should have a fresh new libopenvdb.a library file in the root folder of your project.
Testing the Library
Okay, what now?
You want to use your new creation? No problemo! The skeleton archive has a couple of test programs taken from the OpenVDB cookbook.
These tests also provide a great opportunity to demonstrate how the libraries can be integrated into the MinGW build process. Here are the commands I used to build them.
g++ -DOPENVDB_OPENEXR_STATICLIB=\"1\" -UOPENEXR_DLL -DHALF_EXPORTS=\"1\" -w -c -I"." -I"boost" -I"ilmbase\Half" -I"tbb\include" test\test1.cpp
g++ -DOPENVDB_OPENEXR_STATICLIB=\"1\" -UOPENEXR_DLL -DHALF_EXPORTS=\"1\" -w -c -I"." -I"boost" -I"ilmbase\Half" -I"tbb\include" test\test2.cpp
g++ -g -O2 -static test1.o tbb.dll zlib1.dll -Wl,-luuid -L"." -o test1.exe -lhalf -lopenvdb -L"boost\stage\lib" -lboost_system-mgw48-mt-1_58 -lboost_iostreams-mgw48-mt-1_58
g++ -g -O2 -static test2.o tbb.dll zlib1.dll -Wl,-luuid -L"." -o test2.exe -lhalf -lopenvdb -L"boost\stage\lib" -lboost_system-mgw48-mt-1_58 -lboost_iostreams-mgw48-mt-1_58
The key points are the pre-processor defines for compilation:
Define: OPENVDB_OPENEXR_STATICLIB
Define: HALF_EXPORTS
Undefine: OPENEXR_DLL
the include folders needed also for compilation:
boost
ilmbase\Half
tbb\include
and the library folders needed during linking:
tbb.dll
zlib1.dll (can be found inside the MinGW folder C:\MinGW\bin
libhalf.a
libopenvdb.a
libboost_system-mgw48-mt-1_58.a
libboost_iostreams-mgw48-mt-1_58.a
Finally you should be left with two executables test1.exe and test2.exe to try out your new creation.
[Less]
|
|
Posted
over 10 years
ago
OpenVDB seems to work best on Linuxy systems. Nick Avramoussis has posted some useful and clear instructions on how to build it using VC++10/11. Unfortunately C++ libraries aren't portable between compilers, and I needed it integrated into an
... [More]
existing project built using MinGW.
This post chronicles my experiences with getting it to work. If you're planning to travel the same path, you should know from the start that it's quite an odyssey. OpenVDB has several dependences which also need to be built with MinGW as well. But it is possible. Here's how.
The Dependencies
OpenVDB relies on several libraries you'll need to build before you can even start on the feature presentation. The best place to start is therefore downloading each of these dependencies and collecting them together.
I've listed the version numbers I'm using. It's likely newer versions will work too.
Boost 1.58
ilmbase 1.0.3 source code (part of OpenEXR)
OpenVDB 3.0.0. Not a dependency, but you're certainly going to need it
TBB 4.3 Update 5 Source
You also need zlib, but MinGW comes with a version you can use for free. Finally, grab yourself this skeleton archive which contains some files needed to complete the build.
The Structure
Each of these will end up generating a library you'll link in to OpenVDB. In theory it doesn't matter where you stick them as long as you can point g++ to the appropriate headers and libraries. Still, to make this process (and description) easier, it'll be a big help if your folders are structured the same way I did it. By all means mix it around and enjoy the results!
I've unpacked each archive into its own folder all at the same level with the names boost, ilmbase, openvdb, tbb and test. The last contains a couple of test files, which you can grab from the skeleton archive.
You can download a nice ASCII-art version of the folder structure I ended up with (limited to a depth of 2) to avoid any uncertainty.
In the next few sections I'll explain how to build each of the prerequisites. This will all be done at the command line, so you should open a command window and negotiate to the folder you unpacked all of the archives into.
Building Boost
Boost comes with a neat process for building with all sorts of toolchains, including MinGW. Assuming the folder structure described above, here's what I had to do.
cd boost
bootstrap.bat mingw
.\b2 toolset=gcc
cd ..
If you've download the skeleton archive, you'll find the build-boost.bat script will do this for you. This will build a whole load of boost libraries inside the boost\stage\lib folder. As we'll see later, the ones you'll need are libboost_system-mgw48-mt-1_58 and libboost_iostreams-mgw48-mt-1_58.
Building ilmbase
Actually, we don't need all of ilmbase; we only need the Half.cpp file. Here's what I did to build it into the library needed.
cd ilmbase\Half
g++ -UOPENEXR_DLL -DHALF_EXPORTS=\"1\" -c -I"." -I"..\config.windows" Half.cpp
cd ..\..
ar rcs libhalf.a ilmbase\Half\*.o
This will leave you with a library libhalf.a in the root folder, which is just where you need it.
Building TBB
TBB comes with a makefile you can use straight away, which is handy. This means you can build it with this.
cd tbb
mingw32-make compiler=gcc arch=ia32 runtime=mingw tbb
cd ..
Now copy the files you need into the root.
copy tbb\build\windows_ia32_gcc_mingw_release\tbb.dll .
copy tbb\build\windows_ia32_gcc_mingw_release\tbb.def .
Building OpenVDB
Phew. If everything's gone to plan so far, you're now ready to build OpenVDB. However, there are a few changes you need to make to the code first.
Following the steps from Nick's VC++ instructions, I made these changes:
Add #define NOMINMAX in Coord.h and add #define ZLIB_WINAPI in Compression.cc
Change the include path in Types.h from to
Add #include "mkstemp.h" to the top of openvdb\io\TempFile.cc. This is to add in the mkstemp function supplied in the skeleton archive, which for some reason isn't included as part of MinGW.
The following should now do the trick.
cd openvdb
g++ -DOPENVDB_OPENEXR_STATICLIB=\"1\" -UOPENEXR_DLL -DHALF_EXPORTS=\"1\" -c -w -mwindows -mms-bitfields -I"..\..\libzip\lib" -I".." -I"..\boost" -I"..\ilmbase\Half" -I"..\tbb\include" *.cc io\*.cc math\*.cc util\*.cc metadata\*.cc ..\mkstemp.cpp
cd ..
ar rcs libopenvdb.a openvdb\*.o
And bingo! You should have a fresh new libopenvdb.a library file in the root folder of your project.
Testing the Library
Okay, what now?
You want to use your new creation? No problemo! The skeleton archive has a couple of test programs taken from the OpenVDB cookbook.
These tests also provide a great opportunity to demonstrate how the libraries can be integrated into the MinGW build process. Here are the commands I used to build them.
g++ -DOPENVDB_OPENEXR_STATICLIB=\"1\" -UOPENEXR_DLL -DHALF_EXPORTS=\"1\" -w -c -I"." -I"boost" -I"ilmbase\Half" -I"tbb\include" test\test1.cpp
g++ -DOPENVDB_OPENEXR_STATICLIB=\"1\" -UOPENEXR_DLL -DHALF_EXPORTS=\"1\" -w -c -I"." -I"boost" -I"ilmbase\Half" -I"tbb\include" test\test2.cpp
g++ -g -O2 -static test1.o tbb.dll zlib1.dll -Wl,-luuid -L"." -o test1.exe -lhalf -lopenvdb -L"boost\stage\lib" -lboost_system-mgw48-mt-1_58 -lboost_iostreams-mgw48-mt-1_58
g++ -g -O2 -static test2.o tbb.dll zlib1.dll -Wl,-luuid -L"." -o test2.exe -lhalf -lopenvdb -L"boost\stage\lib" -lboost_system-mgw48-mt-1_58 -lboost_iostreams-mgw48-mt-1_58
The key points are the pre-processor defines for compilation:
Define: OPENVDB_OPENEXR_STATICLIB
Define: HALF_EXPORTS
Undefine: OPENEXR_DLL
the include folders needed also for compilation:
boost
ilmbase\Half
tbb\include
and the library folders needed during linking:
tbb.dll
zlib1.dll (can be found inside the MinGW folder C:\MinGW\bin
libhalf.a
libopenvdb.a
libboost_system-mgw48-mt-1_58.a
libboost_iostreams-mgw48-mt-1_58.a
Finally you should be left with two executables test1.exe and test2.exe to try out your new creation.
[Less]
|
|
Posted
over 10 years
ago
by
flypig
Version 0.35 of Functy is now available for download. Variants are available for Windows, Linux and as source code. There’s also now a Launchpad PPA for installing nightly builds on Ubuntu.
The main improvement to this new version is the ability to export models as OpenVDB voxel clouds. OpenVDB is the award-winning 3D sparse volumetric data [...]
|
|
Posted
over 10 years
ago
by
flypig
Version 0.35 of Functy is now available for download. Variants are available for Windows, Linux and as source code. There’s also now a Launchpad PPA for installing nightly builds on Ubuntu.
The main improvement to this new version is the ability to export models as OpenVDB voxel clouds. OpenVDB is the award-winning 3D sparse volumetric data [...]
|
|
Posted
over 10 years
ago
by
flypig
If you’re an Ubuntu user, you can now get the latest Functy development build through my Launchpad PPA. As long as you’ve added the PPA, this means it can be installed real easy using the standard apt-get approach:
sudo apt-get install functy
... [More]
Beautiful.
For those inclined towards voxels, the latest development version can now export in SVX and [...] [Less]
|