A downloadable tool for Windows, macOS, and Linux

Download NowName your own price

What is this tool for?

This tool is used to generate pseudo volume textures aka. 3D textures. 

I made this tool for volumetric ray marching for clouds and nebula.

Here is an example:



How does it work?

  • Adjust the settings and click on the play button
  • A texture will be generated with your custom settings and resolution
  • Have fun!

Bugs/Features

If you find any bugs or missing features or have some ideas for future versions, let me know! I'll be happy to fix or implement them.

Where are the files stored?

The tool will create two directories.

Default path is: C:\Users\<User>\AppData\LocalLow\Acetix\3D Volume Generator

  • Result folder contains the rendered textures
    • can be changed via settings 
  • TempSlices contains the temporary files

Credit to JummyCushnie who uploaded the code to generate 3D noise inside shadergraph: https://github.com/JimmyCushnie/Noisy-Nodes


StatusIn development
CategoryTool
PlatformsWindows, macOS, Linux
Rating
Rated 5.0 out of 5 stars
(2 total ratings)
AuthorAcetix
Made withUnity
Tags3D, Procedural Generation, Textures, tool, volumetric
Average sessionA few seconds
InputsMouse

Download

Download NowName your own price

Click download now to get access to the following files:

3D Volume Generator 2.7 Linux.zip 27 MB
3D Volume Generator 2.7 Mac.zip 36 MB
3D Volume Generator 2.7 Win.zip 27 MB

Development log

View all posts

Comments

Log in with itch.io to leave a comment.

What about taking an image as input like 128x128, then with one click generate the volume texture of 2048x2048 ? will be possible? Im looking something like that and this is the most close i found.

I don't think it's possible to generate a volume texture from a single image.  Maybe if you'd explain what you're trying to achieve I could help you.

Is to be used in Unreal Engine. Seems Blender or Houdini with some SideFX node , giving a texture like 256x256, they can generate a volume texture, which outputs a 4096x4096 image with a 16x16 grid of 256x256 texture resolution, so they can be used to map any model seamless without need of triplanar mapping.

So i was looking a standalone app that picks a texture and converts/generate into a volutme texture (flipbook) ready to be used.

Now I think I understand what you're trying to achieve. So basically the texture just needs to be repeated in a grid pattern so it looks like a flipbook.

But doing this for a volume texture would just mean to extrude the texture on one axis - there would be no real "3Dness" because all the layers look the same.

I don't think I'll implement something like that since you can basically do this with some software like Gimp etc. It's just a bit tideous.

Oh not that, my question was if there will be some way to create that "3Dness" from a single texture. Not repeat the same texture X times, because as you said, then will be 2 axis just extruded.

One of the simple ideas was move/span in wrap mode the texture, one pixel left&down, in each slice/tile, to avoid that extrusion, still the result not will be as nice as a real volume texture but may works enough.

Other method will be more complex, like keep the center of the texture 254x254 , and the borders used for the other axis, change in each slice to recreate that 256x256 texture in the other sides/axis.  0 extrusion, each face will have that texture.

No idea how this ideas may work, at the end, is some method that from a single seamless texture, the tool can do the process and give you a volume texture, with no extrusion, so you can map any object seamless in any face.

(5 edits)

Hi !

Here are some features i'd love to see implemented, please consider them:

- .dds output. (Check out Texassemble), or alternatively output for individual frames

- Brightness / Contrast / Blending improvements

- Option to disable noise layers

- Option for pixel perfect noise (adjustable filtering/smoothening)

- preview options like quality, preview object size/model etc.

- unlocked min/max values on all options

These are great suggestions and I'll try implementing them! I can't say how long it will take though.

(1 edit) (+1)

Hello !

It seems like a great tool ! But I when I click generate,  the process is stuck in a forever loop it seems. I've let it run for half an hour on a low resolution texture to try, no luck so far.

Any idea what could cause this ?

Thanks a lot in advance !

Solved : If I change the default output path, It will be stuck in a rendering loop. Reverted back to default , it works ! 

Thank you for the info! 

Unfortunately I could not recreate this bug.
There should be a Player.log file inside this folder C:\Users\<User>\AppData\LocalLow\Acetix\3D Volume Generator
Maybe it contains an error message that could identify the problem.

I have this error in the log :

UnauthorizedAccessException: Access to the path 'C:\Users\Vaille\Documents\My Pictures' is denied.

  at FileBrowser.GetAllDirectoryNames (System.String path) [0x00057] in <70b10ceaa322400282e297cbd2661509>:0 

  at FileBrowserUI.BuildDirectoryView (System.String path) [0x00000] in <70b10ceaa322400282e297cbd2661509>:0 

  at FileBrowserUI.Show (FileBrowserMode openMode, System.String startingPath) [0x00032] in <70b10ceaa322400282e297cbd2661509>:0 

  at MaterialUiController.ShowFileBrowserForResultPath () [0x00024] in <70b10ceaa322400282e297cbd2661509>:0 

  at UnityEngine.Events.InvokableCall.Invoke () [0x00010] in <027a98498d8c4623bf0c4b0061801949>:0 

  at UnityEngine.Events.UnityEvent.Invoke () [0x00022] in <027a98498d8c4623bf0c4b0061801949>:0 

  at UnityEngine.UI.Button.Press () [0x0001c] in <4d685be77172497b9c5d885029ba77aa>:0 

  at UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) [0x00009] in <4d685be77172497b9c5d885029ba77aa>:0 

  at UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) [0x00007] in <4d685be77172497b9c5d885029ba77aa>:0 

  at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) [0x00067] in <4d685be77172497b9c5d885029ba77aa>:0 

UnityEngine.DebugLogHandler:Internal_LogException(Exception, Object)

UnityEngine.DebugLogHandler:LogException(Exception, Object)

UnityEngine.Logger:LogException(Exception, Object)

UnityEngine.Debug:LogException(Exception)

UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)

UnityEngine.EventSystems.StandaloneInputModule:ReleaseMouse(PointerEventData, GameObject)

UnityEngine.EventSystems.StandaloneInputModule:ProcessMousePress(MouseButtonEventData)

UnityEngine.EventSystems.StandaloneInputModule:ProcessMouseEvent(Int32)

UnityEngine.EventSystems.StandaloneInputModule:ProcessMouseEvent()

UnityEngine.EventSystems.StandaloneInputModule:Process()

UnityEngine.EventSystems.EventSystem:Update()


Also, I cannot rechange the save location. How can I force it to reset to default ? I tried download a new version, or delete files in Local Low, when I start a new instance, he keep this "bugged" Save location in memory

There is currently no reset to default button and it keeps this settings since Unity sets this value in the registry. But I could implement something like this.

Also the error says that the program has now permissions to access the directory  'C:\Users\Vaille\Documents\My Pictures'

Found the registry , deleted, and now its "factory" reset ! Everything is working ! :D Thank you for your help !

(6 edits)

This is really, really good! Runs like a charm, generates nice volumes.

The UI can benefit from a few minor improvements; e.g.:

- can't type 5 digits into the resolution field, but my GPU supports 16384x16384 textures, also in Unity. :) You could clamp it to the SystemInfo.maxTextureSize ; or I guess 65536 or 32768 if your generator doesn't use the GPU to display these textures.

- add a button checkbox that just opens the persistent data path (or custom data path) in explorer after generation

- add a box around the controls group on the top left; to set it apart

- tab and cursor key navigation, can be easily done via Unity's UGUI EventSystem, just wire up auto navigation and click away the pieces you don't want

Thank you for your feedback!
I'll try implementing your points. :)

Also I've set the max resolution to 4 digits since I didn't think someone would need more  because the file size can really impact performance. What's your usecase for such large textures then? ^^

(+1)

I use them as volumes in a space game. Usually just one of that size, though.

Ultimate plan is to build a 3D gradient and use that as a map to visualize the manetosphere of Jupiter. That could eventually be generated from spherical harmonics, but actually twirled noise looks and feels better.

great tool! But i'm encountering a few saving bugs. Anytime i try and render a texture it just hangs. And  I don't think its keeping my export file paths either.

Thanks! It should actually keep the saving path but I'll look into it. And it may hang because it's using to much RAM. That's also something I want to improve but thanks for reminding!

(+1)

With the Twirl property, I can make Volumetric Accretion Disk! Nice Job!!

Thank you :)