TRISECT – GFX Pipeline – Overview

Trisect – GFX Pipeline – Overview

Tools

  • Modelling: Blender.

  • Game engine: Unreal Engine 4 (in the successive progression of the version to 4.17 z VXGI).

  • Texturing: Blender, 2D Vector/Raster software.

Style

The choice of style resulted from several original assumptions, challenges and limitations. The limitation was a small graphics team (one person, plus later another to speed up the production of props). The challenge was to create a stylistically coherent and diverse design covering the environment, props as well as characters and visual effects. The premise was a unique, pleasant to the eye, comic but technical style. The production had to be planned as efficiently as possible (maximum variety of assets), using a minimum of resources (modeling, texturing and the time needed for it).

Environment

Premise

The action takes place in an isolated industrial and scientific complex in Antarctica. CTM Trisect base consists of 5 sectors: X – industrial (receiving, sorting and processing of raw materials, production halls, warehouses), Y – residential (accommodation, recreation, hospital, library, cinema, parks, gym, radio station), Z – scientific (laboratories, warehouses, particle accelerator, etc.), G – underground sector connecting XYZ sectors and having its own structure (nuclear reactors, borehole through the earth’s crust, teleporter core and related infrastructure), T – administrative sector (offices, archives, rooms, conference rooms, apartments). A communication tunnel (railway, road, communications) leads to each sector and ends at the terminal. In addition to the XYZGT sectors, there are ancillary buildings and adequate infrastructure on and around the roof of the base (solar panels, ventilation outlets, landing pads for flying machines, gates, base maintenance devices from the outside and the like). The whole structure is crowned with the teleporter’s shaft outlet.

Base grid

The base grid represents a combination of square and triangular segments. The problem was to properly adjust the scale to minimize the places of inaccurate connections between the square and triangular grid. The problem is solved by several iterations of scale adjustments.

Having a full base grid, we can start building any rooms. The basic unit of measure in a square grid is 1 m (the base map block is 4 m + 1 m for a wall / column, or ceiling / floor). The basic unit of measure in a triangular grid is 1 m.

Modelling

Based on the base grid, a fairly complete template of the internal rooms of the entire building was made, according to which we can easily build the various levels of the game.

Levels are initially modeled as one object, which is then divided into smaller parts depending on the needs.

The main rule is the division into „inner” and „outer” edges in divided rooms. For example, we have 2 rooms connected by a corridor, so we divide it into 2 objects. The first contains 2 rooms, the second corridor („outer” edges of the original object are divided into 2 different objects containing only „inner” edges).

Collisions

Collisions are built on a dependent copy of the original object with the „Solidify” modifier with the same name as the level object and the prefix „UCX_”.

Textures and materials (Blender)

The UV projection for textures for each of the constructor types is done using the „Project UV” modifier. We use 6 projectors for a square type constructor. We use 8 projectors for the triangular constructor. We use 1 UV channel for texturing the environment.

Each model is divided into the necessary (as small as possible) amount of materials. Each of these materials supports 3 divisions into 3 Vertex Color (RGB) channels, plus an additional (fourth) „Alpha” channel for mixing „ambient dirt” through this channel with the rest of the textures from the other channels. All this becomes input to the materials in the game engine. So for 1 object we have X slots and 3 channels per slot, which gives us X * 3 variations per environment object.

Vertex Color divides materials into 3 sections. R – dark non-metallic surfaces, e.g. rubber. G – bright non-metallic surfaces, e.g. concrete, ceramic panels, brighter elements of the environment. B – metal in any form. And the „Alpha” channel as a dirt channel for other channels painted with „Vertex Color AO” or manually in the B / W range.

Of course, the assumptions can be freely changed depending on the needs, but initially we take this color scheme for sub-materials.

In the material we use 2 mesh textures – the main mesh texture and an auxiliary one to determine the internal texture division, fill texture and texture of „ambient dirt”. UV projection for textures for each type of constructor is made using the „Project UV” modifier. We use 6 projectors for a square type constructor. We use 8 projectors for the triangular constructor. We use 1 UV channel for texturing the environment.

Each model is divided into the necessary (as small as possible) amount of materials. Each of these materials supports 3 divisions into 3 Vertex Color (RGB) channels, plus an additional (fourth) „Alpha” channel for mixing „ambient dirt” through this channel with the rest of the textures from the other channels. All this becomes input to the materials in the game engine. So for 1 object we have X slots and 3 channels per slot, which gives us X * 3 variations per ambient object.

Vertex Color divides materials into 3 sections. R – dark non-metallic surfaces, e.g. rubber. G – bright non-metallic surfaces, e.g. concrete, ceramic panels, brighter elements of the environment. B – metal in any form. And the „Alpha” channel as a dirt channel for other channels painted with „Vertex Color AO” or manually in the B / W range.

Of course, the assumptions can be freely changed depending on the needs, but initially we adopt this color scheme for sub-materials.

We use 2 grid textures in the material – the main grid texture and the auxiliary texture to determine the internal texture division, filling texture and texture of „ambient dirt”.

Export to FBX

Blender fbx exporter, modified by „Enzyme42”, was used for export, adding the option to save the Vertex Color channel 4 as „Apha” to fbx and a script for automating export „UNREAL TOOLS v1.01 by NIKHIL JEEWA 2014”.

Props

Modelling

Modeling props is closely connected with texturing. Therefore, you should always keep in mind where you want to draw texture lines on the object and adjust the object model mesh accordingly.

Texturing

We use 2 UV channels and 2 Vertex Color channels for texturing props. The first UV channel is responsible for the texture of the filling (here you should pay attention to the appropriate looping of the texture on the cylinders and hiding the texture seams under the lines). The second UV channel is responsible for lines on the object, and „stickers” of details such as rivets (all objects use only one texture of lines / stickers, except for the rule here may be additional textures of perforations, belts in conveyor belts, grids, electronic constructor, etc, which are applied as an alternative or separate material)

Vertex Color channels are used in the same way as in the case of the environment – RGB for the division of sub-materials, „Alpha” for dirt.

Materials

The Blender linked libraries technique was used to control the materials. The types of materials are as follows:

  • M_Base – basic material with general line texture or special additional textures (perforations, line grids).

  • M_Emit – the same as M_Base, intended for glowing parts of objects.

  • M_Glass – the same as M_Base, intended for transparent objects.

  • M_Masked – material for fences, meshes, foliage and everything like that.

  • M_Labels – material for all kinds of information boards, stickers, book covers and the like.

  • M_VC – temporary material using only Vertex Color channels, e.g. for rapid prototyping of objects and characters.

Appropriate instances with different textures and material settings are created for each type of material.



Characters

Premise

The largest possible variety of characters due to the large CTM Trisect employee population. Full characters and their miniature caricature counterparts. Male and female characters. Simple comics style.

Modelling

Full characters – about 20k tris. Miniature caricature counterparts – about 4k tris.

To provide a variety of characters to the character base, sets of hair, eyebrows, eyes and various clothes were created.

Texturing

In the case of characters, texturing is limited to only 2 Vertex Color channels. The first is the RGB base color, the second is the „Alpha” AO to darken / stain the base color. A light stroke effect is added to the character in the game engine in the post process.

Skeleton / Rig

Male and female skeletons are slightly different, although this does not prevent sharing the main animations. The pelvic bone is inverted. An IK control skeleton is added to the skeleton control. There are extra bones for handling clothes. The face is also controlled by the skeleton, not by Shape Keys.

Animation

Animations are made with classic animation and possibly shared between characters. Player character animations are much more extensive than NPC animations – 3 step grids were created for each of the modes of movement: walking, running, crouching to get rid of character sliding and achieve the most accurate movement possible.