{"id":782,"date":"2024-02-13T15:11:55","date_gmt":"2024-02-13T23:11:55","guid":{"rendered":"http:\/\/fx-td.com\/houdiniandchill\/?p=782"},"modified":"2024-02-13T15:42:30","modified_gmt":"2024-02-13T23:42:30","slug":"archived-post-by-mattiasmalmer-16","status":"publish","type":"post","link":"http:\/\/fx-td.com\/houdiniandchill\/2024\/02\/13\/archived-post-by-mattiasmalmer-16\/","title":{"rendered":"Archived post by mattiasmalmer"},"content":{"rendered":"<div class=\"postie-post\">\n<p class=\"\">I just inject a little extra height on each frame where the sand is supposed to fall. A simple distance to point.<br \/>\nThen the erosion solver tries to erase and spread it around. So thats nice.<br \/>\nI use the heightfield to scatter one layer of just dumb particles to get the general terrain.<br \/>\nNext i made a simple solver that just generates a few thousand points per frame and sctters them  using the difference between two frames of heightfield as a density map. This way i get particles where there is movement. I then perturb them per frame using the heightfield gradient. These points die off after a while so that they stay roughly constant as new ones are spawned.<br \/>\nIt works surprisingly well for what I need it for.<br \/>\nThe system updates at \u201dInteractive rates\u201d \ud83d\ude42<\/p>\n<p class=\"\">A nice bonus is that it is just a shell of points so rendering is not insane.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>I just inject a little extra height on each frame where the sand is supposed to fall. A simple distance to point. Then the erosion solver tries to erase and spread it around. So thats nice. I use the heightfield to scatter one layer of just dumb particles to get the general terrain. Next i &hellip; <a href=\"http:\/\/fx-td.com\/houdiniandchill\/2024\/02\/13\/archived-post-by-mattiasmalmer-16\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Archived post by mattiasmalmer<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[10],"tags":[],"_links":{"self":[{"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/posts\/782"}],"collection":[{"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/comments?post=782"}],"version-history":[{"count":0,"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/posts\/782\/revisions"}],"wp:attachment":[{"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/media?parent=782"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/categories?post=782"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/tags?post=782"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}