MonkeyEntropy - standalone noise library for use with jme3

Initial release is ready for discussion. For now only interfaces are done and one type of noise. @Sploreg @pspeed @normen

Licensing: GPLv3 for the libs, Studio is a toy/test delivered freely AS IT. I will grant all copyright to jME3 project if/when needed.

Javadoc: Current Online

0.3

Studio: Entropy Studio 0.3
Javadoc: MonkeyEntropy 0.3 javadoc
Source: MonkeyEntropy 0.3 sources
Jar: MonkeyEntropy 0.3

0.2

Studio: Entropy Studio 0.2

0.1

Studio: Entropy Studio 0.1

Description:

Noise1d, Noise2d, Noise3d, Noise4d - main noise interfaces.

Fader - utility interface for specifying larp/fade/mix functions. Currently nearest, linear and perlin supported.

Permutator - main mule of package. Every algorithm uses something like that. It behaves like standard look up hash table that do modulo of index before indexing.

Utils - some utils.

basic.PermutedNoise - fast, bulky, but don’t degenerate. DONE. support all dimensions.

common.ImprovedPerlin - quite fast, nice looking but can degenerate (for integer coordinates returns zero). WIP. Perlin have done only 3d implementation. I’m still reworking grad method for support of all dimensions.

common.Worley - PLANED

comon.Vowel - PLANED

filter.Filter[1-4]d abstract class that do caching. Designed specially for filters that do multiple fetch on source. Caching very similar in design that in processors, fast&simple. Only Filter2d somewhat implemented. WIP

fractal.Fractal[1-4]d filter that computes all octaves fractal. it can operate on any noise, and also implements noise. WIP. only 2d version is somewhat implemented.

Stay tuned. More will come, but firs i need feedback about api.

PS What tags are supported by our forum? Wysywig is somewhat bulky, and forum don’t have “preview” button :frowning:

6 Likes
@SQLek said: Licensing: GPLv3 for the libs

Interesting choice. I’m going to have to avoid looking at the source.

2 Likes

Yep sadly the same for me (why not choose something a little more liberal? like lgpl?

@pspeed said: Interesting choice. I'm going to have to avoid looking at the source.
@Empire Phoenix said: Yep sadly the same for me (why not choose something a little more liberal? like lgpl?

This code will go into BSD two clause when it is finished. Finished will be when all dimension Perlin and all dimension fractals will be stable and documented. For now i need opinions about api. Is it confusing? Is it reasonable?

@SQLek said: This code will go into BSD two clause when it is finished. Finished will be when all dimension Perlin and all dimension fractals will be stable and documented. For now i need opinions about api. Is it confusing? Is it reasonable?

If I look at GPL source then my brain is tainted with knowledge that I cannot then use in my own non-GPL projects. Since I already have my own noise implementations then it is in my best interest to not even look at the source code for restrictively-licensed source code. That way there is never any doubt that my code is my own and I have not violated the GPL.

Yep can sadly only confirm that, if I get ideas from gpl’d code I run into the risk of using them unknowingly.

Crazy murica licensing style… even a dot is licensed. Where goes http://en.wikipedia.org/wiki/Fair_use ? Anyway 0.4 will be licensed under MIT :wink:

2 Likes
@SQLek said: Crazy murica licensing style... even a dot is licensed. Where goes http://en.wikipedia.org/wiki/Fair_use ? Anyway 0.4 will be licensed under MIT ;)

Well, you were the one who picked the most restrictive “open source” license… so you were the one who decided it wouldn’t be fair use.

Yeah, MIT/BSD/etc. is way better.

Also, you will find the copyright is pretty similar the world over in this regard. If I look at your cool algorithm and then implement my own it would be very hard for me to claim that mine was a unique implementation… and it’s impossible to know if the code is actually interesting or unique without actually looking at it.

So ultimately it’s just easier to avoid GPL code completely if I plan to write my own or have already written my own. The viral nature of GPL keeps it pretty scary for those of us who plan to do more than just use it “as is”.

In my opinion this is only copyright, not patent or trademark :wink: If You copy-paste code then it protects me. If You recode/reinwent it then who cares.

0.4 with ImprovedPerlin is almost ready. Debugging and stuff. Also there is a tiling option. Tiling size can be set for different values on different axis, can be disabled per axis. PermutedNoise & ImprovedPerlin supports it now. FractalNoise[1-4]d will support it only for integer Lacunarity.

And here is tiled perlin example.
tiled perlin

for the uninitiated. what exactly is noise? what does it do/what would i use it with?

@icamefromspace said: for the uninitiated. what exactly is noise? what does it do/what would i use it with?
This plugin is designed to generate random loooking patterns, one to four dimensions.

Unlike java.util.Random You can fetch any sample from any cordinate. For example You need first, then 116.8th, then -19th sample.

With java.util.Random share a trait that if You initialize two generators with the same seed (server/client), You will get exactly the same data.

For what purpose: Random movement of enemies/animals. Random plant growing. Random loot. all of this can be made cheat free. Terrain/map generation is second big deal.

For me biggest deal is texture generation. Procedural noise can be 3d, with proper shaders&baking, You can ridge uv maps and just carve shapes in material. Most of materials in this site http://matrep.parastudios.de/index.php?p=7 is procedural. Studio will be useful for baking textures, but don’t expect user friendliness before 0.8.

Actual version almost 0.4 is still very limited, but i already can generate very nice marble. Now i’m experimenting with color mapping/ramping.
fractal01

More fancy&useful stuff will come.

I’m too busy to make release, but as I sad, MonkeyEntropy licensed under MIT.
MonkeyEntropy on GitHub

4 Likes

Yay, MIT Licensed, much better :slight_smile:

Dunno what the deal is with the ad-powered link though.

@SQLek said: I'm too busy to make release, but as I sad, MonkeyEntropy licensed under MIT. MonkeyEntropy on GitHub
Good decision!