B-rep displacement mapping

Published January 20, 2015
Advertisement
In an earlier post I was considering how to add surface detail to meshes generated by the boolean tool. Back then I ran a union operation on a base mesh and a series of smaller objects replicated over its surface, but it's difficult to create a believable, continuous looking surface simply by glueing multiple rigid objects together without any obvious cracks and bits sticking out (especially with curved surfaces).

Displacement mapping seemed more practical, but I wanted to do it all offline (earlier in the pipeline - allowing auto uv-ing and collision system etc. to pick up on it) and you can't really bring out all the detail in a map unless you adaptively refine/subdivide to the pixel level, which is something you would do at run-time.

A way to solve this would be not to use bitmap data for displacement, but some actual geometry:

render023_relief.png

That's a 1x1 (tileable) piece of geometry that's, just like an image map, treated as if it exists in UV(W) space. As a standard boundary represented chunk of mesh it has well-defined edges and applying it as a displacement (which is in itself also a boolean operation (in UV space)) is much more conservative when it comes to the additional vertices needed to express its union with some underlying surface.

So using this as the base mesh:

render023_base.png


After displacing the three individual pieces and then combining them:

render023.png


Unlike the earlier method, the relief mesh adapts to stretches/scaling in the base mesh' uv map and properly curves along its surface.
11 likes 3 comments

Comments

dsm1891

apparently this is shit... and I have to rep it up

(looks nice though)

January 20, 2015 02:56 PM
TheChubu

Displace all the things!

January 25, 2015 06:05 AM
eppo

This one has a texture that lines up with the geometry (similar to a hi-res version that's baked into a normal map):

render023_mapped.png

January 27, 2015 02:59 PM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Profile
Author
Advertisement
Advertisement