Development Log - VR Archaeology

polycounter lvl 2
Offline / Send Message
cjwidd polycounter lvl 2
DISCLAIMER

This is a development blog to document and record progress as a part for an ongoing research program. However, please feel free to provide comments, criticisms, tips / tricks, and other relevant insights - I appreciate any advice you can offer. Thanks!
_______________________________________________________________________________________________________________________

Objective: create game ready VR environment to support a variety of archaeological tasks
Deadline: September, 2018






  • Quick Zbrush sculpt of primary play space
  • Added dirt / piles
  • Test proportions 


  • Retopologize high poly mesh to low poly variant


  • Bake mesh maps in Substance Painter
  • Check for artifacts; looks OK



  • Material renders for candidate surfaces; displacement maps seem fine; good color

Replies

  • cjwidd
    Offline / Send Message
    cjwidd polycounter lvl 2
    Objective: Begin work in UE4



    *experiments include displacement blend materials by Lincoln Hughes

    Notes:
    I heard tessellation was an issue in UE4, but coming face to face with it was another thing. The implementation clearly works, and I'm sure there are settings that could be managed to produce a usable end result, but I'm questioning whether it is worth it.

    Alternatives might include static tessellation instead of dynamic (camera based). In doing so, a spherical mask could be defined based on a static coordinate, and then just tessellate the ground plane that way. It seems the engine is happier when the tessellation doesn't have to update constantly (of course), however, I have not seen any realtime projects for game-ready environments that are using it successfully - that's not to say they don't exist, I just haven't seen them personally.

    Cons:
    • Texture popping, camera stutter
    • Seams on modular pieces
    • Extra shader complexity to manage subdivision levels
    Pros:
    • Project probably would not benefit from a modular kit
    • Managing geometry inside the Editor
    • Managing texturing inside the Editor with World Space UVs
    Question
    • To tessellate, or not?

  • cjwidd
    Offline / Send Message
    cjwidd polycounter lvl 2
    Objective: average displacement to +/- range, rather than + only (*tip from Jan Kaluza)









    Notes:
    • Using a .jpg map in the height channel produced obvious displacement artifacts and created an offset into the -z axis, creating a gap between the user's feet and the ground plane. Using an .exr version of the same map produced no artifacts, and no gap either. But why? 
    • I assume it is related to differences in bit depth or dynamic range of the images.
  • cjwidd
    Offline / Send Message
    cjwidd polycounter lvl 2
    Objective: vertex paint on tessellated static mesh



    • Testing vertex paint utilities in Editor on subdivided base mesh (~8k verts). On a highly subdivided mesh, there are sufficient vertices to support detail vertex painting in the editor.
    • However, when testing on a low poly model that was tessellated in the shader, the vertex painting utilities fail. Apparently, vertex painting only respects base mesh vertices, but not tessellated vertices. Presumably this has to do with dynamic tessellation options which constantly update the subdivision levels based on camera position, etc.



    • Applying same material to scaled landscape actor. 
    • After clamping LOD system, tessellation occurs in predicted location, but efficiency of subdivision fails (see above)

    *Thanks to @radiancef0rge for input
  • cjwidd
    Offline / Send Message
    cjwidd polycounter lvl 2






    • This is a terrain shader (see first image) with a variety of features
    • In the second image, (on the right) you can see several global features and the contents of one layer - there are two more layers.
    • Each layer includes a texture sampler for albedo (diffuse), normal, roughness, height (displacement), and roughness
    • There are parameters to control roughness contrast, and a multiplier to adjust roughness based on that contrast
    • There are parameters to control the intensity of displacement for each height channel; the shader will accept either greyscale displacement maps, or channel packed (red) displacement maps - Megascans exports some displacement in the red channel
    • The entire shader makes use of world space UVs and has parameters to control tiling and UV rotation per layer (*thanks @lincolnhughes). The shader will support vertical or horizontal tiling. The benefit of world space UVs is that regardless of how the terrain object is moved around in world space, the textures will always be projected to a unique position in world space, e.g. easier to modify terrain without having to worry about UVs.
    • There is a unique tessellation modifier appended at the end to control a point of origin for tessellation and a mask. After doing some experiments, from a view height of about 1.8m, it's difficult to ascertain any benefits of added tessellation for objects after about 18m, and that is with a very critical eye - in VR it will probably be even shorter. 
    • The radius / hardness of the tessellation mask can be modified, and the tessellation intensity as well. Currently the tessellation mask is defined by a static point in space, but that point can be modified freely; the reason for this is because I was experiencing hiccups on my machine (single frame drops) using dynamic tessellation.
    • The shader supports 3-layer blends (weight-blends) based on vertex color. In this way, we can make use of UE4's terrain painting tools to texture the landscape without ever jumping into a 3rd party texturing software; provided there are sufficient vertices to paint on.
    • You can see an example of this weight-blending occurring on the terrain (see third image). Even with very dissimilar texture (tile vs. sand / rock), a smooth blend can be achieved.

  • cjwidd
    Offline / Send Message
    cjwidd polycounter lvl 2


    • quick photogrammetry scan based on dirt pile in the local area
  • cjwidd
    Offline / Send Message
    cjwidd polycounter lvl 2




    • Getting started in World Machine
    • Testing proportions and build quality
    • Testing composition for tiled heightfields

  • cjwidd
    Offline / Send Message
    cjwidd polycounter lvl 2



    • World Machine -> Substance Designer -> Zbrush
    • Projection with Polypaint 

    *debug textures applied
  • cjwidd
    Offline / Send Message
    cjwidd polycounter lvl 2


    • blockout - test
  • cjwidd
    Offline / Send Message
    cjwidd polycounter lvl 2




    • photogrammetry - dirt_test2
  • cjwidd
    Offline / Send Message
    cjwidd polycounter lvl 2






    • PI offers different direction for environment design, emphasis on cave environment
    • Begin modifications to Soul: Cave by Epic Games
Sign In or Register to comment.