Home Unreal Engine

UDK --> tessellation

polycounter lvl 10
Offline / Send Message
r4ptur3 polycounter lvl 10
Hey guys!

I was wondering if anyone has had any success with the new DX11 tessellation features? I was playing around to try and turn a low res cylinder into a smooth beveled cylinder. The sides came out awesome but I was having some trouble getting the top and bottom edges to bevel.

I tried both methods of tessellation which yielded some pretty different results. I also tried epic's suggested shader hookup as well as an alternative I found.

http://udn.epicgames.com/Three/TessellationDX11.html
http://www.mypicx.com/uploadimg/1396652404_03122011_1.png

Areas of note I found while experimenting:

how do soft/hard normals effect tessellation?
what is the "real" way to hook up maps so meshes tessellate correctly?
should meshes be more parametric so the tessellation is more evenly spread?
what are common ways to avoid seam displacement?


I'll continue to explore and post results -- community input would be awesome!

Replies

  • Oniram
    Options
    Offline / Send Message
    Oniram polycounter lvl 16
  • r4ptur3
    Options
    Offline / Send Message
    r4ptur3 polycounter lvl 10
    thanks Oniram!

    I gave myself a new personal project last night to try and go deeper. Your post looks super promising! Using the heights from a Normal Map seemed to produce better results for me as well. Thanks again!
  • r4ptur3
    Options
    Offline / Send Message
    r4ptur3 polycounter lvl 10
    OK, messed with it some more tonite. I tried my lowres cylinder test again. It appears as though my Flat Tessellation is not deforming correctly. The object gets more triangles but fails to deform. As soon as I switch over to PN Triangle mode I can clearly see the tessellation but with poor results. The mesh deforms into some sort of hour glass looking object. I attempted to reenforce the seams with geometry to correct the problem, but it seems to me if I have to go through the trouble I might as well use a slightly higher res object and a nice normal map.

    So tonite's big question: are other people experiencing the weird Flat Tessellation problem? (the mesh gets tessellated, but fails to deform) Anyone have any ideas why this might be happening?

    I also noticed that unless I use completely smooth edges my mesh will have nasty displaced seams. Thoughts? Is there a science to how much I should be cranking the negative and positive vectors? It has to be based on something ... just checking how the mesh looks by eye seems pretty hit or miss.
  • Oniram
    Options
    Offline / Send Message
    Oniram polycounter lvl 16
    the seam splitting is still a WIP.

    can u post a screenshot of your mesh(with wireframe before/after tessellation) and material setup?

    (link may be broken right now but should be working shortly)
    http://udn.epicgames.com/Three/TessellationDX11.html
  • r4ptur3
    Options
    Offline / Send Message
    r4ptur3 polycounter lvl 10
    tessellation_a.jpg


    k, here she blows.

    Figure A shows my UV layout. I chose to detach the top and bottom of the cylinder for this test instead of attaching one of the edges.

    Figure B shows the highres object on the left, and the lowres on the right. My goal was to displace the lowres object so I would have nice beveled edges and a smooth circular center.

    Figure C shows the resulting normal map (generated from Xnormal) with smooth edges

    Figure D shows the resulting map with smooth and hard normals. The UV edges are hard and all other edges are soft.

    Figure E is my shader setup and the resulting displacement on the hard/soft combo. E.1 shows flat tessellation and E.2 shows PN. Notice how the bottom edges in E.1 do not seem to displace whereas the edges in E.2 seem to work fine (despite the bowing). I threw and edgeloop in the center of the cylinder in an attempt to get the bowing under control, but it turned into an hourglass.

    Figure F is the same setup but with the completely smooth edged object. There is significantly less seam tearing and the bevel starts to take form (although not 100% successful).

    Figure G shows an alternative method to the shader setup. I lose the ability to control push and pull but the resulting mesh looks nearly identical.


    I experimented with a brick wall texture with much nicer results. Was a cylinder a poor choice for my experiment? It would be awesome to do away with low res cylindrical objects and achieve true form on hard surface models.
  • LMP
    Options
    Offline / Send Message
    LMP polycounter lvl 13
    tessellation prefers square even sized polygons when possible
  • passerby
    Options
    Offline / Send Message
    passerby polycounter lvl 12
    LMP wrote: »
    tessellation prefers square even sized polygons when possible

    even sized tris will work just as good, since directx works olny in tris
  • r4ptur3
    Options
    Offline / Send Message
    r4ptur3 polycounter lvl 10
    thanks! I'm working on an organic project to try and get some nice results. I'll post it up when I'm done :)
  • sbfhhh
    Options
    Offline / Send Message
    I have same problem!!
  • PhoenixWolf
    Options
    Offline / Send Message
    PhoenixWolf polycounter lvl 9
  • Obscura
    Options
    Offline / Send Message
    Obscura grand marshal polycounter
    You departed at a good way.With smoothing groups.Also, try to add a few horizontal edge to your cylinder, and try to using heightmap (displacement map).Maybe this will works
  • r4ptur3
    Options
    Offline / Send Message
    r4ptur3 polycounter lvl 10
    Woah, resurrected thread! I have made a ton of progress since then.

    Looks like tessellation and displacement mapping are not the "make it look pretty" buttons I thought they were going to be. You have to be extremely careful with texture stretching. Another huge pitfall are mesh seams. These will happen on UV shells when the displacement scale is too high or the bias is set incorrectly.

    The general thought process for now is that displacement should be a cherry on top. The base form of the shape should be described as much as possible before applying displacement. It is extremely important to describe undercuts as they need UV space.

    UDK's catmull clark tessellation method produces massive bowing. Although this may become the standard in the future I find it to be an overkill process that yields poor results.

    The most important thing I found was to make sure the pixels on UV seams match on each side. If the pixels do not line up perfectly you will get a mesh seam. The easiest way to do this is to stay clear of UV shell borders in your texture map. Shell interiors are fair game to paint on, but mesh borders are hyper sensitive.
Sign In or Register to comment.