You could try to model it out of hexagons from scratch or try to work with array modifiers or particle systems (just some ideas that didn't work for me at the first try).
If you'll need this effect more often, you should try to create your own modifier that will do all the work for you. That modifier could work something like this:
- Take the Bounding box of the object and divide it into voxels of the size you want the hexagons to be
- The voxels can be represented by a 3dimensional boolean array
- Check for each voxel if there are any vertices/faces and eventually set the value to true
- Remove the original mesh data
- Add in your by putting a hexagon for every voxel set to true
Edit
I just found this video creating a cube ocean using animation nodes. Perhaps you can try and use the concept with a hexagonal base object.
https://www.youtube.com/watch?v=19wRsmBIVBQ
Edit 2
I played around with animation nodes myself and I built something that acts as a custom remesh modifier. You can download the blend file here: http://blend-exchange.giantcowfilms.com/embedImage.png?bid=2814
Here's what it looks like:
Arguments:
- Replicate: The object to replicate
- Duplicate: The base object that will be duplicated to replicate the input
- Output: The object to write to.
- Tiles per Unit: Amount of duplicated objects in each direction per Blender unit. Basically the resolution.
- Extend bounds: Will extend the area the program is working on by this value into each direction. Use to save calculation time or if the calculated bounds don't fit the Replicate object.
- Hex grid: Check if the X-Y-grid shall be hexagons instead of squares. It is not perfect, you might need to use the Extend bounds option here.
It roughly works like I said above. That's why I'll only explain it in detail if someone asks for it.