How to model

GEOMETRY

AC uses meters as unit. So in your 3D package be sure to model with this consideration.
No scales or other transformation will recovered from 3d models.
Objects must be modeled at its proper size and orientation in local space.

  • Vertex normals
    AC supports custom normals, so feel free to edit them to improve the look of your models as needed: http://wiki.polycount.com/wiki/Foliage

  • Vertex color Information
    AC supports 4 channels of vertex color that can hold several types of information
    Vertex color information are distributed in packs of RGB and A
    RGB can store one of these:

    COLOR - Vertex color information.
    WIND - Structure information for wind effect as specified here: https://minifloppy.it/tutorials/udk-wind-vertex-shader/

    A can store one of these:

    AO - Per vertex backed ambient occlusion
    SPLIT - Used for objects composed of several small elements that need to be added or removed one by one, like fruits in a tree, or trunks in a pile.
    A value per element is stored that allows us to add or remove those elements even if they are part of the same object.
    These gray values should be as homogeneously distributed as possible. Elements with brighter values will appear first while dark elements will appear later.
    First value should be 254 ( 255 -white- items will be always visible ) and last value should be 0 -black-.

    For instance, if we have a model of the fruits of a tree, with 3 elements when it is full of fruits, 1th fruit will be 254, second fruit will be 127 and 3th fruit will be 0.
    Even it technically up to 254 different elements are supported we usually use up to 20 or 30 elements in extreme cases.

    Vertex alpha information for a stack of fish with 17 elements that can be added or removed by the game engine using vertex SPLIT:

Note that in piles using vertex SPLIT, because there is only 1 object for all stored quantities

TEXTURES

AC Supports this textures:

  • C   RGBA - Albedo + Mask
    For efficiency in AC most objects are rendered as opaque objects, so the alpha channel usually represents a mask that will be cut with an alpha limit value.
    This is exploited in some cases by animating the limit value to discard some parts of the texture ( Foliage leaves are removed in autumn and winter this way ), similar to the SPLIT mode on vertex color.
  • N   RGBA - Tangent Normal (OpenGL style) + Glossiness
  • T   R - Thickness, mainly used for translucency effects
  • O   R - Ambient occlusion

Textures should be provided in tga format and power of 2 ( they will be compressed to more efficient formats internally )
1024x1024 texture sizes are recommended, but any power of 2 will work. In low settings modes textures are reduced in size automatically.

NOTES

Ambient occlusion can be provided as vertex color information and/or texture information.
When both are provided the darkest value per pixel is used in the shader combining both information with Screen space AO like this: finalAO = min( SSAO, min( TextureAO, VertexAO ) );

Snow is added by the game engine and should not be present in the assets.

EXPORT

AC elements should be exported as FBX with parameters:

  • Animations should be backed.
  • Geometries mus be triangulated
  • Smoothing groups activated
  • Up axis: Y-up
  • Type: Binary
7 Likes