Lunosi Asset Guide

Authoring Lunosi assets in Blender / Import

{{0xc000cba320 0xc000cba320 image-13.png  alt text alt text 0xc000a82660} 0 false}

General Pipeline


Blender > Modeling > Assign “Lunosi” mat > Assign vertex colors > Refine UV > (Optional) Animate > Export

Modeling


NOTE: Lunosi art is still a work in progress, so we should update this doc as we come up with new keystones! I’ll just list a few of the best practices I’ve seen so far. Lunosi stuff generally stands alone and is not modular. They have large discrete elements that form a kit, but do not perfectly fit together. Bashing is your friend for placement, as well as modeling!

The copper sections in particular have a mix of hard and smooth normals, especially on low poly beveled surfaces. Mess with auto smooth settings or manually assign creases!

{{0xc000cba320 0xc000cba320 image-6.png  alt text alt text 0xc00075c900} 1 false}

{{0xc000cba320 0xc000cba320 image-5.png I've elected to embrace this seam instead of trying to fix it. Easy! alt text alt text 0xc00075d0e0} 2 false}

I’ve elected to embrace this seam instead of trying to fix it. Easy!

Material separations generally come with geo separations - Use geo trims when needed.

Material Preview


I’ve set up a preview material in Blender you can use to check UVs and especially normals on the copper.

Setup Library Path:

  • Go to Edit > Preferences > File Paths.
  • Under Asset Libraries, click the + button then add \ArtSource\Architecture\Materials\ under path
  • Click Save Preferences.

This adds the Lunosi Materials into the asset browser for all Blender projects (for that version of Blender). The materials were made in v5.0.1, but should work in any recent version? Untested.

Any future updates should automatically backport to projects if we make changes.

You’ll need to set the viewport to use the Material Preview mode, IE the third checked looking circle in the top right.

{{0xc000cba320 0xc000cba320 image-7.png  alt text alt text 0xc000a301e0} 3 false}

It may show us as just a blue blob - that is because you’ll need to set up vertex colors:

Vertex Colors


The three materials are separated via vertex color.

Color Material
Red Copper
Green Stone
Blue Glow / Teal Stone
Alpha Hover effect (check VAT Section)
  • In edit mode, select the faces you want to paint.
  • Switch to Vertex Paint mode. Make sure the face selection button is checked!
  • Using the leftmost color display set it to the desired color, EG for copper R1 G0 B0
  • Press Ctrl + x to fill the selection
  • Repeat for the other colors as needed!

You can actually modulate the brightness of materials by setting their color value between 0.2 and 0.9. Any values above 0.5 will be brighter (up to double), and any below will be darker. Values at 1 remain untouched (base value) and values must be above 0.2 to be considered masked (part of that material)

{{0xc000cba320 0xc000cba320 image-10.png This gradient is how vertex color intensity affects brightness - notice the notch at the top clamping the value back to 'normal' alt text alt text 0xc000a308a0} 4 false}

This gradient is how vertex color intensity affects brightness - notice the notch at the top clamping the value back to ’normal'

{{0xc000cba320 0xc000cba320 image-11.png Different values darken and brighten the glow parts. alt text alt text 0xc000a311a0} 5 false}

Different values darken and brighten the glow parts.

You can also use “Enhanced Vertex Color Tool” (Tarmunds Addon) to set the whole object’s vertex color - useful if you’ve modeled your mesh as separate objects.

If you have set the material preview, you should immediately see the results on your mesh!

UV


All three “material” types need UVs to look their best. These can (and probably should!) be overlapping.

For stone, skewing the UV can be a nice way to break up columns without seams.

First, wrap your cylinder. You can check Constrain to Image Bounds and transform to stretch it perfectly to the seam.

{{0xc000cba320 0xc000cba320 image.png  alt text alt text 0xc0009b2420} 6 false}
{{0xc000cba320 0xc000cba320 image-1.png  alt text alt text 0xc000a82900} 7 false}
Next, uncheck Constrain to Image Bounds, and with everything selected, hit hift + Ctrl + Alt + S to skew the UV.
{{0xc000cba320 0xc000cba320 image-3.png  alt text alt text 0xc0009b2ae0} 8 false}
{{0xc000cba320 0xc000cba320 image-2.png  alt text alt text 0xc000a820c0} 9 false}

Copper is generally more forgiving as it doesn’t have as recognizable of a pattern, but try to get the scale relatively consistent. There arn’t any hard texel density rule but use your best judgement.

{{0xc000cba320 0xc000cba320 image-4.png If you use a solidify modifier remember the UVS will be stretched - not the worst look depending on the situation! alt text alt text 0xc0007e00c0} 10 false}

If you use a solidify modifier remember the UVS will be stretched - not the worst look depending on the situation!

The “Glow” material is based on a circular gradient. The effect (in game) pans outwards from the center of the gradient (UV 0.5,0.5) outwards. The preview material displays a simple circular gradient in which you line up your effect. In general, if the gradient looks good in Blender it should look good in UE.

{{0xc000cba320 0xc000cba320 image-8.png  alt text alt text 0xc00075c060} 11 false}

Animate


Lunosi objects support the full VAT workflow that plants use - take a look at the doc for instructions.

There are a few things to consider - VAT does NOT respect hard / split normals and will render everything as smooth. There are a few ways around this:

  1. You can use very sharp bevels or simply double your geo on edges and split (this is what happens under the hood for split normals anyways!). This is fine for small stuff, but keep in mind the 4k vert count limit on VAT.
  2. You can just not use VAT normals, IE only update offsets. The material in UE has an option for this. This will preserve the base mesh normals but of course won’t update with animations - stuff that just translates and never rotates, or barely rotates are good candidates here. Easy to give it a try.
  3. Use a tangent space normal map to bake the hard normals / bake from high poly. Obviously the most labor intensive approach, and currently the material doesn’t support this workflow but would be very easy to implement. We’ll see if we end up wanting to do zBrush stuff.
  4. Don’t use VAT and instead use full skeletal animation / morph targets. This is appropriate for larger more complex objects.

Currently VATs have limited animation support that will be added to as needed moving forward. BP_LunosiLightPost is an example of the workflow I’m thinking of using for Lunosi things.

While theoretically possible I don’t think having “stages” of animation through VAT is practical, in the sense that while transitioning from start to loop then looping is possible, doing it in reverse is not due to the lack of blending (I could theoretically run two vats then blend but now we are getting too complicated). That might be a fine approach if we never need to reverse, so I might add that feature in the future (also adding it to plants!)

Hover Anim


To help mitigate this restriction I added an optional procedural “Hover” effect that can be used standalone or in conjunction with VATs. This effect is a simple sine wave “hover” that moves up or down, with amplitude and frequency controls in the material instance.

Paint the sections you want to hover with alpha. Any values over 0.1 are considered hovering and will animate. You can offset the hover by assigning random values between .15 and 1 to make individual pieces look a bit more natural.

NOTE: Blender doesn’t really like the alpha channel of vertex colors. As far as I know you can’t actually paint alpha directly with the vertex paint mode. However, you can use “Enhanced Vertex Color Tool” (Tarmunds Addon) and set use Fill Alpha Channel to set an entire element’s alpha, which should work for separated assets. Alternatively, you can paint them in Unreal’s modeling mode, which has a decent flood fill option.

Export


The standard export FBX method works just fine here - just make sure Unreal’s importer is importing vertex colors and not mangling normals. If using VAT, be sure to follow that export process instead.

{{0xc000cba320 0xc000cba320 image-9.png Asset in Blender alt text alt text 0xc0009b2f00} 12 false}

Asset in Blender

Unreal


I could automate some of this, but I have a feeling having a bit of manual control in this step is fine. Lemmie know if this is a pain point!

Import your asset, then create a new (or copy) material instance. Set the parent to /Game/Lunos/MaterialLibrary/Lunosi/M_Lunosi

  • You can enable VAT and Hover stuff here. The alphas for these effects can be driven by custom primitive data in blueprints.
  • “LunosiGlow” can be converted to bGlass for a glossier look, intended for glowey orb guys.

{{0xc000cba320 0xc000cba320 image-12.png You can also set `bYseFresnelBasedGradient` to have it have the sine wave glowey pattern be based on fresnel gradient IE rim. Looks good on spheres. alt text alt text 0xc000a30180} 13 false}

You can also set bYseFresnelBasedGradient to have it have the sine wave glowey pattern be based on fresnel gradient IE rim. Looks good on spheres.

{{0xc000cba320 0xc000cba320 image-14.png The end result! alt text alt text 0xc00075d440} 14 false}

The end result!