ramakarl / shared_openvdb

shared_openvdb
Other
4 stars 0 forks source link

Any plans to create a version for OpenVDB 5.1.0? #1

Closed LocalStarlight closed 6 years ago

LocalStarlight commented 6 years ago

Just wondering if you have plans to create a version for OpenVDB 5.1.0?

ramakarl commented 6 years ago

No plans currently to do this. Of course, others are welcome to look into it, using the existing cmakes for OpenVDB 4.0.1 as a template.

LocalStarlight commented 6 years ago

OK, thanks!

Trying to figure out how to get OpenVDB working in Unreal Engine. Should I theoretically be able to use the builds you’ve made here (or the CMake S you’ve put together) for that? Or does it require a totally different approach? Would massively appreciate any pointers/help as I’m totally lost!

Thanks!

ramakarl commented 6 years ago

I have no idea what you're trying to do, so hard to give pointers.

Generally, OpenVDB is CPU-based and intended for offline motion picture rendering. Therefore it may not be the best fit for Unreal Engine. If you're looking to integrate real-time volumes, then you want GVDB and start withe gDepthMap sample. However, UE4 is mostly DirectX, so that sample would have to be rewritten from GL to DX. This is assume you're trying to get volumes in UE4.

LocalStarlight commented 6 years ago

Hey, thanks for the response. I wasn't aware of GVDB. It looks incredible, but (1) might be overkill for what I'm trying to do, and (2) if it relies on CUDA then will only run on Nvidia cards, if I understand correctly, which isn't ideal for a potential game release (which is what this is for).

I'm not actually doing volume rendering, but just looking for ways to read/write sparse data into a 3D grid. From what I've read about OpenVDB, it could be perfect, and for my purposes CPU-based might be fast enough. That remains to be seen though.

The issue I'm facing is that I'm just not sure how to build OpenVDB into a static library for UE4. Three of the dependencies (zlib, itbb, openexr) are already part of UE4's third party libraries, and I've found someone who's built and linked Boost. So I feel like the pieces are there, but I have no experience using CMake or building static libraries, or anything like that, so I've hit a wall with how to make an OpenVDB.lib (VS2017) and get it working in UE4.

Will definitely explore GVDB in the future though, because it looks stunning.

LocalStarlight commented 6 years ago

I'm trying to follow your instructions in your win_openvdb README file, but falling down at the first stage trying to build zlib.

I've downloaded your zlib fork which is meant to have the Windows x64 Build ready to go. I'm using CMake 3.11.1 and Visual Studio Community 2017.

I've configured and generated the projects using CMake and then opened VS, but there's no x64 platform available. It builds the Win32 lib no problems, but if I create the x64 platform using the configuration manager (and telling it to copy settings from Win32 - this is the part that may be wrong?) and then try to build an x64 Release, it gives these errors:

Severity Code Description Project File Line Error LNK1112 module machine type 'x64' conflicts with target machine type 'X86' zlibstatic C:\Users\LS\Desktop\openvdb\build\zlib\x64\Release\adler32.obj 1 Error C1083 Cannot open compiler generated file: 'C:\Users\LS\Desktop\openvdb\build\zlib\x64\Release\zutil.obj': Permission denied zlib C:\Users\LS\Desktop\openvdb\source\zlib-master\zutil.c 1 Error LNK1112 module machine type 'x64' conflicts with target machine type 'X86' minizip_static C:\Users\LS\Desktop\openvdb\build\zlib\minizip\x64\Release\ioapi.obj 1 Error LNK1181 cannot open input file 'Release\zlib.lib' minigzip C:\Users\LS\Desktop\openvdb\build\zlib\LINK 1 Error LNK1181 cannot open input file 'Release\zlib.lib' example C:\Users\LS\Desktop\openvdb\build\zlib\LINK 1

I assumed the CMake would produce a VS project with x64 all ready to go, so something is presumably going wrong there in the first instance. Any ideas what might be happening here?

LocalStarlight commented 6 years ago

Hey!

Forget everything I said, I've just discovered that Epic have actually integrated OpenVDB into an experimental plugin (not part of the standard engine which is why I didn't see it), so I think I can just use/adapt that.

Thanks!