Jump to content
  • entries
    13
  • comments
    55
  • views
    20809

B-rep displacement mapping

Sign in to follow this  
eppo

1076 views

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.
Sign in to follow this  


3 Comments


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):

 

 

render023_mapped.png

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.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!