Letzte Worte VR

Hi

My team and I have recently released our VR experience Letzte Worte for Oculus Rift and HTC Vive on Steam. It is a non commercial game we created for our master degree.  Trapped in a strange shattered world lost in fog, you take a trip down memory lane. The past not only hides memories of your relationship between you and your brother, but also the suppressed event that may has led to his death. Face your deepest fear in this built-for-VR adventure.


I am still working on improving the visual quality, mainly for my portfolio but eventually also to include it in a future release. Comments and critiques on the atmosphere, look and feeling are highly appreciated!

The game was built in UE4 and the assets are all made or modified in blender. If you are interested into further details on how we created the locations, let me now. I have tons of lessons learned to share with you.

Steam: https://store.steampowered.com/app/932800/Letzte_Worte_VR/

Replies

  • matthiasPat

    Breakdown Interior Assets

    In this post I will give a short breakdown on how the creation of an interior Asset was done for this project.

    image

    First, environment assets are split into different areas, areas that use material layering for texturing and areas that don’t. For the door below, the blue areas are shaded by using texture layering.

    In this case, I don’t use object specific normal maps. I don’t use them for most inorganic, hard surface assets like this door. Instead I use bevels in combination with face weighted normals. This is easily possible using the Y.A.V.N.E addon (https://github.com/fedackb/yavne 8). If you are interested in game art and don’t know what it is, you should check it out. By using this method, I achieved nice shaded, flat surfaces without using object specific normal maps. This represents a dramatic decrease in texture memory.

    To add further detail, I decided to use a 2. UV set. The first regular, clean UV set is used for the masks and ambient occlusion map and the second as a trim UV Map.

    **UV1:**This UV Map is used for the object specific masks and ambient occlusion maps. It is also used to generate the lightmaps in UE4. This UV maps shows different assets combined into a single texture atlas.

    UV2: This UV is only used to project the trim detail onto the mesh. The UV layout does not need to be clean. The overlapping of different UV islands does not matter.

    To generate the trim sheet I sculpted different tillable detail strips in zBrush. zBrush offers different tools that allow tillable sculpting. The result is afterwards baked onto a plane. Later I generated this kind of trim sheets directly from Substance Designer without any manual sculpting.

    image

    To create the masks, I use Substance Painter. I import the low Poly mesh and generate the different baked maps (curvature, object normal, thickness, position). All maps except the ambient occlusion maps are only generated to help creating the masks. The masks are then combined into a single texture using channel packing. I have created a custom export present in Substance Painter. to automatically pack them together. I also use custom channels within substance painter to create the masks. This way I can still display the result in the regular Base Color channel. How you get the masks out of substance painter is not so important. Therefore, I won’t go into further detail here.

    In UE4 I used a custom material layering material, similar to the one from Substance Share (https://share.allegorithmic.com/libraries/2125). In UE4 I use a library of different reusable base materials. All of them were created or adjusted by using the Substance Designer. These base materials can be reused across different assets. All these assets below share one small mask texture (I think it is 512x512 in the final game) and the same base materials. By tiling the base materials, it is easy to achieve high Texel densities without tiny textures. By using texture layering for the big surface areas, I reduced the texture resolution tremendously. All these assets are combined into the same texture atlas. The masks can be really low res. As they are only used to blend the tillable base materials.


    The detail meshes

    The detail meshes use a more traditional workflow. They are sculpted in zBrush, textured in Substance Painter.


    I have put a lot of time and effort into getting this pipeline efficient and created several custom tools and scripts for blender.

  • matthiasPat

    Breakdown Interior Assets

    In this post I will give a short breakdown on how the creation of an interior Asset was done for this project.

    image

    First, environment assets are split into different areas, areas that use material layering for texturing and areas that don’t. For the door below, the blue areas are shaded by using texture layering.

    In this case, I don’t use object specific normal maps. I don’t use them for most inorganic, hard surface assets like this door. Instead I use bevels in combination with face weighted normals. This is easily possible using the Y.A.V.N.E addon (https://github.com/fedackb/yavne 8). If you are interested in game art and don’t know what it is, you should check it out. By using this method, I achieved nice shaded, flat surfaces without using object specific normal maps. This represents a dramatic decrease in texture memory.

    To add further detail, I decided to use a 2. UV set. The first regular, clean UV set is used for the masks and ambient occlusion map and the second as a trim UV Map.

    **UV1:**This UV Map is used for the object specific masks and ambient occlusion maps. It is also used to generate the lightmaps in UE4. This UV maps shows different assets combined into a single texture atlas.

    UV2: This UV is only used to project the trim detail onto the mesh. The UV layout does not need to be clean. The overlapping of different UV islands does not matter.

    To generate the trim sheet I sculpted different tillable detail strips in zBrush. zBrush offers different tools that allow tillable sculpting. The result is afterwards baked onto a plane. Later I generated this kind of trim sheets directly from Substance Designer without any manual sculpting.

    image

    To create the masks, I use Substance Painter. I import the low Poly mesh and generate the different baked maps (curvature, object normal, thickness, position). All maps except the ambient occlusion maps are only generated to help creating the masks. The masks are then combined into a single texture using channel packing. I have created a custom export present in Substance Painter. to automatically pack them together. I also use custom channels within substance painter to create the masks. This way I can still display the result in the regular Base Color channel. How you get the masks out of substance painter is not so important. Therefore, I won’t go into further detail here.

    In UE4 I used a custom material layering material, similar to the one from Substance Share (https://share.allegorithmic.com/libraries/2125). In UE4 I use a library of different reusable base materials. All of them were created or adjusted by using the Substance Designer. These base materials can be reused across different assets. All these assets below share one small mask texture (I think it is 512x512 in the final game) and the same base materials. By tiling the base materials, it is easy to achieve high Texel densities without tiny textures. By using texture layering for the big surface areas, I reduced the texture resolution tremendously. All these assets are combined into the same texture atlas. The masks can be really low res. As they are only used to blend the tillable base materials.


    The detail meshes

    The detail meshes use a more traditional workflow. They are sculpted in zBrush, textured in Substance Painter.


    I have put a lot of time and effort into getting this pipeline efficient and created several custom tools and scripts for blender.

Sign In or Register to comment.