Latest Articles

What is a non-manifold mesh and how to fix it

In your jour­ney through the world of CGI, you have prob­a­bly come across the word non-man­i­­fold once or twice. Maybe you got slapped with a “mesh is non-man­i­­fold” error too and won­dered how your mesh became non-some­thing. Surely hav­ing a man­i­fold mesh is bet­ter. But what does it mean to be man­i­fold? A man­i­fold is a mathematical 

This week(s) in Mirage #7

Welcome to anoth­er pro­duc­tive week for Mirage! This time I focused on fix­ing seam­less ter­rains. Seamless ter­rains have match­ing edges and can be tiled and repeat­ed.  I had this work­ing a while ago at the noise gen­er­a­tion lev­el. The Perlin func­tion I’m using is peri­od­ic, so it’s pos­si­ble to grab coor­di­nates out­side of the ter­rain and interpolate 

This week(s) in Mirage #6

Whoa, how long has it been? Wasn’t I sup­posed to do this every week? These last few weeks have been crazy with work, life, the release of Blender 2.80, Mirage 3.2 and Render+ 2. But that’s all done now. Time to get back on the horse! The good news is that I still man­aged to put some 

Render+ 2 released

After a long time Render+ 2 is final­ly out. I start­ed work­ing on this ver­sion on September last year, and went into beta around January until now. But the plan­ning for these changes goes back years. I’m real­ly hap­py with this release, the code base and the whole sys­tem have tak­en a leap for­ward in qual­i­ty. These changes pave 

Mirage 3.3 out for Blender 2.80

New Blender, new Mirage. Or so I’d like to say. This is bor­ing release actu­al­ly. The only news is com­pat­i­bil­i­ty with Blender 2.80. Note that from this point onward, Mirage will require at least Blender 2.80. All the new fea­tures I’ve been blog­ging about will come in the next ver­sion: 3.4. Join the mail­ing list 

Blender 2.80 released!

Blender 2.80 is out today after almost a year and a half in devel­op­ment. Time to cel­e­brate! This is one of the largest and most impor­tant releas­es of Blender. As big as 2.5 back in the day.  So, what’s the big deal? Don’t be fooled by the ver­sion num­ber. 2.80 isn’t just 0.01 bet­ter than 2.79, it’s 100x times 

This week in Mirage #5

Time for the usu­al week­ly devel­op­ment news. This week I worked some more on the water ero­sion mod­i­fi­er. I start­ed by fix­ing the ran­dom­ness of the rain. Every iter­a­tion 100 drops fall at ran­dom places in the ter­rain. The prob­lem was that I was­n’t keep­ing the seeds for the ran­dom val­ues around so every­time a set­ting changed it 

Passageway

Man it’s been a while since I post­ed any­thing art-relat­ed in this blog. I’ve recent­ly become inter­st­ed in vox­els. They look like an ele­gant solu­tion to the prob­lem of com­plex­i­ty creep in 3D. Of course we still don’t have the tech­nol­o­gy or raw pow­er to dri­ve as many mil­lions of vox­els as we do with pix­els. But 

This week(s) in Mirage #4

These last two weeks have been pret­ty busy, both in work/life and Mirage. On the mirage side, I port­ed the last mod­i­fi­er: flu­vial ero­sion. I spent the first week writ­ing the ini­tial imple­men­ta­tion and this week mak­ing it actu­al­ly work. Many moons ago I wrote a pure Python imple­men­ta­tion of the vir­tu­al pipes hydraulic ero­sion algo­rithm. It was crazy slow. 

This week in Mirage #3

Thermal ero­sion is now ful­ly port­ed! There isn’t a very notice­able dif­fer­ence this time around, I think it looks a bit bet­ter though (but maybe I’m biased!). I also changed the set­ting names to make them eas­i­er to under­stand: Repose Angle is now Threshold Iterations is now Time They are also short­er too, so they work nice­ly in 

This week in Mirage #2

This week went bet­ter than expect­ed in many ways. I end­ed up get­ting the mod­i­fi­er work done fair­ly quick­ly and man­aged to squeeze a small refac­tor, break­ing a ~1300 lines file into 3 files. I still have som­re more refac­tor­ing to do to make things more flex­i­ble. Hopefully I can get to that too in the fol­low­ing weeks.  Porting went smoothly 

This week in mirage

In this series of posts I’m going to talk about the new hot stuff I’m work­ing on for Mirage. This will be my first time doing a devlog, so bear with me 🙂 Our first stop is what I’ve doing for the past few months: the Rust port. Port to Rust Rust is a pro­gram­ming lan­guage focus­ing on safe­ty, per­for­mance and