Jump to content
  • Advertisement
  • entries
  • comments
  • views

B-rep displacement mapping

Sign in to follow this  


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:


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:


After displacing the three individual pieces and then combining them:


Unlike the earlier method, the relief mesh adapts to stretches/scaling in the base mesh' uv map and properly curves along its surface.
Sign in to follow this  


Recommended Comments

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




Share this comment

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!