I.7 : What is OpenSimplex Noise?
Вставка
- Опубліковано 3 бер 2019
- Simplex Noise (2001) is an improvement on "classic" Perlin noise (1983). I discuss a bit of the history of noise algorithms and show how to use the Java source code for Open Simplex Noise in Processing.
🎥Next Video: Random Walker Coding Challenge: • Random Walker in p5.js...
Links discussed in this video:
🔗 Perlin Noise: en.wikipedia.org/wiki/Perlin_...
🔗 web.archive.org/web/2016053012...
🔗 Gradient Noise: en.wikipedia.org/wiki/Gradien...
🔗 Simplex Noise: en.wikipedia.org/wiki/Simplex...
🔗 Stefan Gustavson: staffwww.itn.liu.se/~stegu/
🔗 Simplex noise demystified: staffwww.itn.liu.se/~stegu/sim...
🔗 OpenSimplexNoise.java by KdotJPG: gist.github.com/KdotJPG/b1270...
🔗 Etienne Jacob: / necessary-disorder
🚂Website: thecodingtrain.com/
💡Github: github.com/CodingTrain
💬Discord: / discord
💖Membership: ua-cam.com/users/thecodingtrainjoin
🛒Store: standard.tv/collections/the-c...
📚Books: www.amazon.com/shop/thecoding...
🖋️Twitter: / thecodingtrain
🎥 More Perlin Noise: • 13: What is Perlin Noise?
🎥Coding Challenges: • Coding Challenges
🎥Intro to Programming using p5.js: • Start learning here!
📄 Code of Conduct: github.com/CodingTrain/Code-o...
🌐Help us caption and translate: ua-cam.com/users/timedtext_cs_p...
🚩Suggest Topics: github.com/CodingTrain/Rainbo...
👾Share your contribution: thecodingtrain.com/Guides/com...
🔗 p5.js: p5js.org
🔗 Processing: processing.org
Who in the world even dislikes such a interesting video
The patented noise method? ;-p
I like mysteries, but not these mysteries
Watching you makes me realize how many of aspects of computer science exists apart from frontend and backend
Thanks now I can have moving gray with Java.
I reaaly love the way you taught the code. Although some lessons are complicated and difficult to understand, I still want to learn from you. Thank you so much delivering such a good souce of knowledge for me. I am a small, develoing country and have an opportunity to study with from learnin resources on UA-cam. It is worth. Wish you!!!
When I watch you, I get happy, just because you have such a wunderfull and sunny way of presentation.
Just watch The coding Train when beeing depressed and all problems are gone :)
I get happy from seeing him teach, and then depressed trying to understand the content of his teachings
@@itaysror6591 Just start coding and it will come over time.
OMG! Noise-animated flies look SO real ...
I'm taking their X and Y changes from their X,Y position into a 2D slice of gradient noise, with a tiny (unique) X,Y offset per fly. They fly around, but when they get close they chase each other for a brief moment. To spice up their movement I multiply their changes by a 'speed' looked up as their position in the noise, and they dart about playfully. The sudden speed changes look pretty good and keeps them interesting to watch.
But here's the cool thing...
When flies in a close pair are chasing each other - each looks up it's position in the 2D slice, the result they get is usually quite similar - but soon their offsets land them on different sides of a gradient peak, and they fly apart again.
It's absolutely mesmerising to watch : ))))))
Conversely, when each fly in a close pair are in a gradient valley, one will fly off ... but the other tries to head away but get redirected in a loop by the gradient. This causes one fly in the pair to suddenly fly off along a path... while the other hops about and then suddenly chases its partner! It's absolute genius!!!
I'm changing the 2D slice with time, using a counter variable, so that their flight paths are not static.
Of course, two flies at the same place, will end up synchronised forever, so ...
I add a tiny little slowly oscillating offset (unique to each fly) into the Eval lookup, it stops them getting into lockstep... they'll then synchronise and desynchronise, performing some quite beautiful aerobatic chases, like real flies : )))) But they're never quite looking up in the same place, so they chase each other approximately, till the offset desynchronises them and they peel off from the chase.
(I think incrementing anim by a tiny amount per fly would probably do the same thing but with less code)
Anyway, it looks EXACTLY like real flies, occasionally playing 'chase'. I can't believe I've been playing with these new pets for an hour !
Useless... sure, but stunningly organic.
*EDIT: Writing this got me thinking...*
Next I think I'll code them so that if they get slower than some low threshold, they'll set set a boolean 'isWalking' and stop multiplying by speed (and start ignoring any deltas less than abs 0.6). This should make them look like they've landed and are just casually walking about intermittently like flies do. Then... I'm going to use mouse proximity to get them to 'fly' again. Wait for them to settle one by one, and then 'annoy' them again ... ; )
Also, I suppose a fast fly within proximity of a walking one, should also cause the walking one to switch back into flying mode too... causing the group to 'self aggitate'. So, I'll probably add that too.
... and finally, to keep it interesting, I might add a small random chance that a 'walking' fly will just switch into flying mode for no apparent reason, and upset it's neighbours.
Oh... endless fun XD
I love your videos, you'r my inspiration and overall quality is better with every film. 👌🏼👌🏼
I watch your videos on Perlin noise and in general i must say you rock. You have this awesome energy and just wanted to say your making a great contribution to the world. Great enthusiasm and way to inspire! You are making a difference in the world.
Cool! Thanks for the update!🙂😃
You are a very good teacher!
Thank sir, I've waited it for a long time
this absolute legend allowed me to fix my broken noise function, thanks for the video!
Appreciate all these lessons and explanations 😊
seventeen minutes of a juicy piece explaining a coding technique in P3 with some pearls of small informational bits is so nice to absorb
Wow, Worley noise looks cool! I will look into it!
Thank you so much for this video!
I was wondering why it's pulsating and I thought I'm doing something wrong
Now I know how to fix it :)
Could you Please do the 3d terrain in this method
Coming soon!
@@TheCodingTrain can you use 3d perlin (or simplex) noise to create a 3d terrain with caves and stuff
@@kushagra64 2d noise with perlin worms would be better, cause 3d perlin noise would give you very weird terrain
Hey Dan, could you post a video of your lecture someday? Im really interested to see you in 'action' and hopefully someday I might even take a class from you!
That's basically what these videos are!
The noise video are great! Really been enjoying them alot
Great video once more
You're the man, Dan
I think it's also important to note that processing's built in noise function is really using fractal brownian motion to make the noise look more realistic. It layers together multiple layers of noise which is why it may look a bit grainier/bit more realistic than the smooth open simplex noise.
A soma proporcional de vários valores aleatórios torna menos aleatório e mais 'natural' a medida que captura o universo da soma. E passamos a observar consequências de um mundo maior. Isso é bacana. Mas o desafio das diversas versões de algoritmos de noises é tentar capturar o máximo possível das dimensões fractais em tempo real, sem termos que gerar grandes massas de dados para representar cada pequena porção de uma coisa que tem seu significado num fenômeno maior.
Isso gera discussões tão legais né? Eu li o livro do Mandelbrot em que ele começa falando do movimento browniano e confesso que desde que ele foi escrito já reli várias e várias vezes até essas ideias entrarem na cabeça. A coisa vai ter entrado de fato quando eu conseguir elaborar boas respostas pra justificar pras pessoas que os noises precisam ter uma lógica pra serem interpretadas pelo nosso cerebro como coisas 'naturais'. Até lá, ficarei usando 'natural' com aspas.
Using the year to select the noise mode is a great idea. It's like an automatic history lesson while hackin some noise 😁
I loved that happy accident at 15:12! I went "woah!" as well :P Reminded me of Rorschach :P
What other similar effects could you made from that? Could you make banded contours by clipping the values to say black white and two shades of grey? Maybe an RGB spectrum of six colours?
You can literally do anything
Thank you for making these videos! My downloads page is full of your videos cuz they are really good xD
would you consider to have a series of episodes devoted to the ways of integration of processing with photoshop?
i love them both but sadly they feel like two seperate worlds for me right now.
if i were to see you do a project in them both though, this would be a true game changer for me.
Can you show us how to implement the marching squares or marching cubes algorithm?
Yes I want to do this one! Vote/suggest here: github.com/CodingTrain/Rainbow-Topics/issues
The video on marching squares is now live.
did anyone else notice or feel and odd connection to Dan saying 1983 a lot? it caught my attention because it reminded of the 1984 Apple Macintosh commercial. it just interest me that year after Perlin noise came out, Apple releases a commercial in reference to the book 1984. there is probably no correlation between these two events, yet it's still pretty interesting
I aspire to be as happy as you look doing this.
I wish this guy was my neighbor along with all the other smart people I want as my neighbors. It'd be like a super community of problem solvers and inventors. Every day would be exciting!
Oh good, I was actually looking into this recently when i noticed the weird behavior of 3d Perlin noise.
So how come they can’t add a simplexnoise class or function in processing, it wouldn’t interfere with old stuff and would allow the option for new stuff (and they can warn people of the normal noise being deprecated, but still usable).
Can u make the library of Babel? Shown by VSAUCE
Please do a video on worley noise It looks so cool
Wonderful! 😍
Can you create tutorials about fluid simulation and how to display liquid on the screen please?
You can check out this video thecodingtrain.com/CodingChallenges/132-fluid-simulation.html
Any idea why pixelDensity(2); makes this not work on a high-res display? It scales it as half height, and doubles the entire sketch next to itself.
Can you explain Q-learning in processing please?
Did you ever do that 2D Noise loop using 4 Dimensions? I couldn't find it if you did.
Can you do interpolations using the sinkhorn distance?
you are awesome
Love from Italy!!!! ❤️❤️❤️❤️ 🇮🇹 #LoveFromItaly10
The method explained in the archive link actually is "value noise", not perlin noise.
só pra constar: perlin noise é o que está por trás de melhorias de coisas como particles, que talvez vcs se interessem. (vcs que buscam por design de jogos ou performance em games com grandes quantidades de efeitos "realísticos")
Dado que com particles a gente calcula a posição de um determinado conjunto de coisas muito pequenas, como poeira, partículas de fumaça ou mesmo o comportamento de cada indivíduo de uma multidão vista de longe, definindo características em comum a objetos em contextos variáveis
Com algoritmos COMO perlin noise fazemos isso em blocos. calculando grandes massas de valores a partir do que eles tem em comum. O que chamamos de 'naturalidade' é justamente aquele comportamento que a massa de dados tem que ter para parecer terem sido geradas pelo mesmo fenômeno como ser movida pelo mesmo vento, ter batido na mesma pedra, ser iluminado pelo mesmo sol etc
Hi Dan im an 14 y/o boy from germany and im programming since im 11. I can only thank you a lot allready because you taught me almost all I know about programming with your videos.
And right now im trying to programm rock paper scissors in processing an so far it looks good. The basic idea behind it works but im stuck with the score element wich I want to increase every time the player has won a game. In theory it looks something like this :
if (playerWon){
score++;
}
and after that i display the score on the screen. But the score doesnt only increase by one because its in a loop... Do you have any advice for me??
I would be soo thankfull if you could answer my question. Keep up the great work man I love your vids.
We would need to see a bit more of the code - like what the loop does and when is "playerWon" set to true.
have you maybe forgotten to reset that variable to false afterwards?
@@ABaumstumpf Yes I did thank you very much ;)
Challenge where you make the whispy sphere thing?
I hope the developers of Processing listen to Dan's thoughts and they add various types of noises to noiseType function
Would be great.
And also they should update the description in the reference - cause it is not using perlin noise.
I think it would make sense to maybe try the idea out in a separate library first? We could make this a community project. Too many things to do, but I'd love to work on this!
@@TheCodingTrain There already is "noiseDetail" - adding another "noiseType" would be simple, as argument it gets an enum specifying what type of noise to produces.
That way you could easily use different types of noise and use them in existing codebase.
This doesn't have the same appearance as the native Processing noise because there is no octave summing taking place.
See cmaher.github.io/posts/working-with-simplex-noise/
The example is written for Mr Perlin's version but is easily modified for OpenSimplex noise and produces a result that is to all intents and purposes indistinguishable from the Processing version apart from the lack of repeating artefacts.
Did you ever do anything with Worley noise?
It’s 2022 now. I’m wondering if the Simplex noise patent still holds or can it be used freely now.
Is it possible to make it a screensaver? I mean, save the program to use as screen saver on Linux.
What are some real-world use-cases for simplex noise and Perlin noise?
I can't possibly get this to work. My Java knowledge is far too short to understand how to call the newer OpenSimplex2S library and how to get the noise values.. Please.. HELP!!
Does anyone know which algorithm the 'fractal noise' effect in after effects uses?
No idea what you refer to, but generally fractal noise or fractional brownian motion is a loop in which noises are stacked at different frequencies and amplitudes.
Is there a Daniel Shiffman for openFrameworks?
“ComputTORR!” 5:31
Couldn't they keep the original noise method and additionally implement a simplex noise method in processing/p5js?
In other words: why not both?
"Stefan *Gustaffson* "
*Linkoping University, Sweden.*
This reminds me of something....
if i'm not mistaken, it's impossible to patent an algorithm, rather only the implementation. so surely using the algorithm to create an alternative yet identical implementation is perfectly legal?
Were i found a simple noise generetor? Like your
Hi!
i'm making a litlle game in processing...But i got a problem that is i dont know how to set the coordinates to be the same on every monitor type using fullscreen...like in a 1920x1080 the coordinates are different from a 1600 x 900.
Can anyone help?
Maybe you could make it work using translate(width / 2, height / 2) so that (0, 0) is always the center of the screen
You could translate to a variable point, like width/2, height/2 and base your coordinates from that point
You might get some great help at stackoverflow.
@@Derbucher I'm going to check that
2:24 damn i thought you were gonna craft something
"wtf is the recipe for a piston"
In one day this man gets 500 likes
You should make a Minecraft-like terrain using the Perlin Noise function
I am having trouble with block to block detection in processing I watched the video and it didn’t help me😢
The mistake at the 15:12 mark reminds me of Rorschach's mask
Please make tutorial how you implement p5 project into react
Well, this may ultimately disappoint you but... ua-cam.com/video/OvpbTeAYQEU/v-deo.html
Looks like the surface of the Sun, bubbley mess. Nice.
Just add a simplex() function in Processing for simplex noise.
Btw Ken Perlin’s Patent for simplex noise has expired now !
🤯
Your videos are also kinda 1983 xD (just a joke not saying that the vids are bad, they are great !)
I could not agree more!
Yup, that's one of the best things about the channel! :P
How long does patents usually last? 🤔 it's been past 10 years, I feel like simplex should be public.
He shows it on screen around 5:50 or so, it's expiring next January
So I implemented perlin noise in assembly now I should implement OpenSimplex noise in assembly
Ouch, assembly. That must be painful to code in
You could use this to make a cow skin graphic! Just round everything less than 0 to 0 and everything else to 1
omg worley noise is phenominal
Can you look into Cuda or OpenCL?
I recently saw a video on how water erodes the surface of a mountain/terrain. It was a real incredible video, and would love for YOU to make a video on it. I think it's really doable in p5. Here's the original video ua-cam.com/video/eaXk97ujbPQ/v-deo.html
we stared of with 1D perlin noise. Then went to 2D. I wonder can we generate n dimensional Perlin noise.
4:21 i guess its possible
muaah
Why dont you implement atleast a new function called simplex? that way those that have projects made with noise can choose to upgrade to using simplex or not
Was the classic Perlin noise not patented?
Hi Jack! I don't believe it was.
Is anyone else having an issue where the seed is always the same?
it looks like a tv program on old TV which didnt work because of your location
Hahaa hello 💙💛💜💚❤💙💛💜💚❤😜 🌈
Beard game is strong af
my noise is not moving...help?
did you ever sort this out?
Today is screwed
. Have a nice day
Has anyone ever seen Daniel and Babish at the same time?
Daniel looks like Babish put on a wig and glasses. Coding with Babish.
13:50 PRECISION
anyone came here for the flow field but didn't find it?
Reminds me of the skyrim cut scene
I love coding, I LOVE using processing, but for some reason noise just doesn't resonate with my brain waves. Dan is my lord and saviour for all things Processing.
Worley noise looks creepy
First?
Edit: OMG! I am....
Gimme a heart....
27,972th?
OMG! I am...
Gimme a heart...
Third
what was that all about ? I don't get it..
Talks about a free version of an algorithm that is used to create special effects in movies.
dude just took a dump on ken when releasing opensimplex
The website of a computer graphics researcher is a plain HTML.
Irony? 😂😂
PHP is lava
noiseMode(1983) lmaoo
I just realized I am not a very happy person.
wow you look like you are in you're mid 20's