Asset Guidelines

From Project Tamriel Wiki
Revision as of 16:19, 9 November 2024 by Toma400 (talk | contribs) (→‎Icons: Updated guidelines for .dds compression)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Asset development includes the creation of models, with their accompanying textures and sometimes animations. These assets for all projects will end up in our shared Tamriel_Data.

Unlike those developers that deal with Construction Set, asset developers don't need to pass a showcase in order to contribute to Tamriel Rebuilt or Project Tamriel – you can just start working on a needed asset.

There are innumerable tricks discovered to make development of various TES III asset easier. We aim to list some of the them in the sections below.

Good information on Morrowind asset creation, often more up-to-date, can also be found on the Morrowind Modding Community Discord server.

Nota bene: Asset developers for our projects must familiarize themselves with our copyright expectations!

Workflow

Although asset development can be very diverse, there are some commonalities to our workflow. For one, all asset work happens through our asset browser. Otherwise, below is a recommended workflow:

  1. An exterior, interior, or quest developer that has a need for an asset can create a new asset page on the browser. Alternatively, nice-to-have items from TES III-era lore or other good ideas can be made into asset pages, too. It is best to first discuss such ideas on Discord (Tamriel Rebuilt, Project Tamriel).
  2. If concept art is needed, a request is made on the respective Discord channel and a note to that effect is also left on the asset page or a comment underneath. Once an artist makes a useful concept, this is uploaded as an image on the asset page.
  3. You, a prospective modeler, or sound or texture artist, depending on the asset, search the asset browser for an asset you want to work on. These would generally be the ones marked "proposed" or "requires work", but you can always ask on Discord to work on assets that are marked "in development", but haven't received progress in a while – unfortunately, these tags usually go out of date.
  4. Once you've found the asset you want to work on, make it known by clicking the "Develop this asset" button and, optionally, leaving a comment underneath the asset page and on Discord. Also, change the status to "in development".
    • As you develop the asset, you can follow the concept to a tee, but you can also suggest and make changes. Make sure to discuss any significant departures on Discord, however.
  5. As you work on the asset, make sure to post periodic WIP files throughout the progress. Attach these to the claim and update the progress completion percentage. This is very important – you wouldn't believe the amount of otherwise wonderful, 90%-complete assets that we've never recovered due to a bad hard drive or the developer simply losing interest prior to their completion.
  6. Once the asset is done, you can upload it on the mod page, set progress to 100%, and press the button for "put up for review".
    • Always post a screenshot of your finalized asset in the images!
    • If you were working on an asset that someone else had previously worked on, upload your own files alongside them, at the bottom of the list, and clearly mark them as the version meant for review. Never delete other peoples' old files!
    • You don't need to finalize your asset. If you don't know or want to take some steps required for finalizing the asset or don't have time any longer, feel free to upload your latest WIP and let us know that you won't work on it any longer.
  7. The completed asset is then reviewed by an experienced asset developer prior to being merged into our in-progress Tamriel_Data addon.
    • Sometimes, the asset will be sent back for additional fixes, if issues are too big to be addressed as part of the review. You can make the fixes and put the asset up for review again.
  8. Once completed, assets are still open to suggestions, comments, and improvements. If you notice a bug or issues with an existing asset already included in the game, post your bug report on the Github page of the in-progress Data addon.

If you have already made new assets you'd like to offer to us, you can skip up to step 4 and post the model on the respective asset page for review (if such a page doesn't yet exist, create it).

Modder’s resources (that is, meshes and/or textures that someone else has created) can be proposed with a link to their origin if they are free to use and redistribute. Bear in mind that prior to review and inclusion in Tamriel_Data, they will need to be renamed and ID-d to conform with our ID guidelines.

Audio

For guidelines on audio assets (ambient sound, music, creature noises, generic NPC greetings, or the rare voice-over) please see the dedicated article.

Meshes

To make meshes, you do not necessarily need to be able to make textures, if its possible to reuse vanilla or Tamriel_Data textures or if you find a texture artist to collaborate with you. You do, however, need to be able to make UV maps.

Models for Morrowind use the NIF format v 3.3.1 to 4.0.0.2. The only reasonable choice to convert to this format is via the Blender plugin for Morrowind.

Recommended software

  • Blender 3.3 or later
  • Greatness7's Blender plugin for Morrowind
  • Hemaris' .blend presets file. This is a good starting point for Blender UI preferences, as it hides many panels which are irrelevant to TES III modding. You can use it by opening the file and then selecting from the menu: File > Defaults > Save startup file.

Alternatives

It is possible to use any of the programs below to create new models, but you will have to later import them into Blender in order to export as .nif (with the exception of NifSkope).

  • NifSkope – an easier-to-start-with program for working specifically with Elder Scrolls meshes in the .nif file format. This program is not meant for making new meshes from scratch; however, there are some aspects of TES III models, such as some particle effects, which can only be added through Nifskope. See the dedicated article.

Tutorials

Vanilla Files

TES III meshes need to be extracted from its .bsa files. You can use, for example, the BSA Unpacker MW from Timeslip.

For visual overview of models from Vanilla, see:

When basing your meshes on Vanilla models, you should always check if there are improved variants available in Morrowind Optimization Patch or Project Atlas.

UV Unwrapping

UV coordinates tell the game which part of the texture to draw on which part of the model.

Hemaris made a tutorial video on the process:

UV Unwrapping Tutorial

Marking edges as seams is also useful for making "cuts" in the texture wrap, so that it can all "unfold" nicely, like disassembling a cardboard box back into a flat sheet of cardboard with cuts and creases in it. The above video demonstrated where to put the seams on a model. It uses Blender's UV Editing workspace, which shows you a 3D view of the model on the right, and a 2D view of the active object's texture on the left. When you select a face/polygon on the right, its corresponding UV shape appears on the left, so you can see which part of the texture is being applied to that face. You can scale and move things on the left to change how the model looks, and (if you switch to a textured viewing mode in the window on the right) it will show you the changes in real time.

Technical Requirements

These guidelines are for use when you are making or reviewing a model. Models must:

  • Have enough faces to look good, but not excessive faces. The exact number varies with the object you’re making, but compare it to similar objects in the Vanilla game. Consider if a detail on the model can be faked with a texture instead of additional faces.
  • Be properly scaled sized/scaled. Test it in the Construction Set to be sure.
  • Have been cleaned of duplicate vertices, edges, and faces.
  • Have UV maps that are efficient, have minimal stretching, and have the same texel size across the whole model.
  • Have collision if needed. If it does not have collision, the NCO-flag (non-collision-object flag) should be enabled.
  • "Sit” properly; i.e., that it equips or can be “f”-d into place properly in the Construction Set.
  • Have appropriate vertex shading, especially for static objects, to assist with the appearance of shadows. Pay attention to the local polycount and shade subtly.
  • Have Alpha only on shapes that require it; it must be set to 1 for all shapes with no transparency.
  • Have Ambient Color and Diffuse Color settings of #ffffff, Specular Color and Emissive Color at #000000, and Glossiness at 0.
  • Be Morrowind-compatible .nif files.
  • Be named and have appropriate texture paths as stated below.
  • (When ready for merging) have an associated .esp file to be used to merge into Tamriel_Data, which incorporates it correctly using the Tamriel_Data ID Guidelines.

Folder and Name

If you are making a model, please make sure to follow our current structure. Renaming assets is a pain in the butt, so make sure you name it properly from the beginning.

NOTE! This is for the naming of the assets themselves. Please ensure the Construction Set IDs conform to the Tamriel Data ID Guidelines.

All models are stored in the Morrowind/Data Files/meshes/[project abbrev]/ folder. Every model, with very few exceptions, is stored in a subfolder, sorted as follows:

  • a – armor
  • b – bodies (body parts, heads, and hairs for playable races)
  • c – clothing
  • cr – creatures and their animations
  • d – doors
  • f – activators, static flora, furniture, and any associated animations
  • i – interior tileset pieces, misc interior statics
  • l – lights
  • m – misc (books, potions, plates, clutter etc)
  • n – ingredients
  • o – containers (alchemy flora, boxes, cabinets)
  • w – weapons
  • x – exterior tileset pieces, terrain statics, misc exterior statics

Models are named with [project abbrev]_ as a prefix, then a short indicator of their type, and then their main name. The entire model path and name must be 32 characters or less: tr/a/tr_a_dreugh_boots_gnd.nif is 30 characters. Here are some examples of how models are named using Tamriel Rebuilt's IDs. Your model should conform to this as closely as is reasonable, but due to space considerations you may need to omit or compress some fields. Do not include a “maker’s mark” in there (such as using tr_KZ_blueflower if “Kaziem” made the blue flower).

  • Armors: tr_a_Type_Part_subpart_numtr_a_dreugh_boots_a_01.nif
  • Body parts: tr_b_race_m/f_part_numtr_b_nord_m_head_02.nif
  • Clothing: tr_c_part_grade_subpart_numtr_c_shirt_exp_ind_01.nif
  • Creature: tr_cr_creaturename_part_numtr_cr_muckleech_01.nif
  • Door: tr_in/ex_tileset_name_numtr_ex_imp_gatebig_01.nif
  • Activator: tr_act_name_numtr_act_ind_mark_mer_01.nif
  • Furniture: tr_furn_grade_name_numtr_furn_ind_gong_stand_01.nif
  • Hangings: tr_banner/tapestry_name_numtr_banner_tel_oren_01.nif
  • Flora: tr_f_region_name_numtr_f_aj_root_04.nif
  • Interior Tileset Pieces: tr_in_tileset_name_numtr_in_dwrv_floor_01.nif
  • Misc: tr_misc_name_numtr_misc_bottle_02.nif
  • Ingredients: tr_ing_name_numtr_ing_cookie_01.nif
  • Containers (not flora or furniture): tr_cont_name_numtr_cont_rock_iron_01.nif
  • Weapons: tr_w_material_type_part_numtr_w_glass_spear_01.nif
  • Exterior Tileset Pieces: tr_ex_tileset_name_numtr_ex_imp_dock_03.nif

Project abbreviations:

  • Tamriel Rebuilt: tr
  • Province: Cyrodiil: pc
  • Skyrim: Home of the Nords: sky
  • High Rock: 427: hr
  • Project Hammerfell: hf
  • Elsweyr: els
  • Summerset: sum
  • Valenwood: va

Icons

Icons have their own folder structure and should always be saved as a .dds file with transparency, with no compression (A8R8G8B8) and no mipmaps. Files with .tga format can also be used, in this case use no compression and origin from top left. Icons should be stored as follows:

  • a – armor
  • c – clothing
  • m – misc, clutter, books, etc
  • n – ingredients
  • w – weapons

Icons should always have the same name as either the model they apply to or the main texture used for the model they apply to.

Textures

Once a mesh is created, it will need to be textured. For most meshes, this is the final step of the development process and is separate from the modeling. You do not need to be able to do both.

Before creating custom textures, check the Vanilla texture catalog to see if existing textures fill the need.

Note: Your textures cannot contain stolen images! If you use images taken from the internet, please make sure they are royalty-free and that there are no copyright issues. Just because you found it does not automatically make it to okay to use it.

Recommended software

  • Adobe Photoshop
  • The free Solidify C plugin by Flaming Pear Software. Download links: Mac, Windows (archive.org download mirrors: Mac, Windows).
  • The image-sdf command line utility (GitHub repository, Archive.org backup). Image-sdf requires Node.js and can be installed from the command line with the prompt npm install image-sdf.
  • GIMP, version 2.10 or later, primarily to use its .dds file format support.
    • While Photoshop also includes .dds plugins, GIMP's built-in .dds exporter on a layer-masked .psd file seems to be the only reliable method of preserving color information at the edges of alpha-tested textures' mipmaps.
  • 7zip can help you packaging the files into single .7z file
    • If you would need to compress files into much smaller size, this terminal/CLI command can be very useful: 7z a -t7z -mx=9 -mfb=273 -ms -md=31 -myx=9 -mtm=- -mmt -mmtf -md=1536m -mmf=bt3 -mmc=10000 -mpb=0 -mlc=0 file.7z path

Tutorials

Vanilla Files

As with meshes, TES III textures need to be extracted from the .bsa. You can use, for example, the BSA Unpacker MW from Timeslip.

For original textures, better quality files may exist on the TES III: Morrowind CD, as loose data files in the GOG version, or on these links: [Nexus], [MediaFire].

A visual index of Morrowind textures is also available as a PDF.

If you want to make textures for HD data based on Vanilla assets, you can find AI-upscales of Vanilla textures in Intelligent Textures or Morrowind Enhanced Textures. Do make sure that the particular textures you use actually match the original aesthetic of the Vanilla variant – AI upscaling is by no means perfect.

Technical Requirements

General

  • Make sure you have the same texel size across the model.
  • Textures should be crisp and detailed, and should not require bump or other maps to shade correctly.
  • Textures should tile correctly, if needed, and not show seams.
  • Textures should show and enhance the contours of the model they apply to.

Format

DDS is the standard texture format for Morrowind. Exporting to .dds is built-in with GIMP version 2.10 or later. Use DXT1 compression if the texture has no alpha channels (has no transparency), use DXT5 compression if it has varying alpha channels. See this archived forum link about texture formats and optimisation.

Your textures will need to use mipmaps in almost all cases. Also called "pyramidal filtering" or "trilinear interpolation", mipmapping stores copies of the texture in levels a quarter the size of the prior level. While this will increase VRAM use by a factor of 1.3, it will significantly improve texture aliasing. (This happens for base textures only: detail maps, bump maps and others won't use the mipmaps.) Usually you shouldn't load mipmaps when importing into an image editor. However, when exporting from GIMP, always use Generate mipmaps. You can leave the Mipmap Options to default for Morrowind.

If you have textures with alpha testing similar to tree leaves, you can try to tick Preserve alpha test coverage while exporting from GIMP for better results.

As for other formats, TGA is supported (32 or 24 bits, not 16) but results in several times larger file sizes. Usually it is not preferred, but may be used for more precise alpha channels (where smooth alpha transitions are needed, like halo effects for magic spells) or greater image quality (images in books). BMP is supported but offers no advantages and shouldn't be used.

If several formats are available, the game will give priority to .dds, then .tga, then .bmp, regardless of the extension of the texture specified in .nif files and regardless of timestamps. If the same texture exists both in .bsa archives and in the textures folder, priority is by timestamp.

Resolution

Textures made for Tamriel Rebuilt or Project Tamriel must be sized equivalently to the vanilla Morrowind textures (SD) and times 4 for the HD version of Tamriel_Data. That is, if Morrowind uses a texture that is 128x128, you should provide a new texture at both that size and at 512x512. Check the Vanilla texture catalog or .bsa for appropriate texture sizes. Note that with atlasing (see below), you will have much larger texture sizes.

More generally, Morrowind accepts textures with a resolution in powers of 2, shaped square or rectangle (2x2, 4x4, 8x8, ..., 256x256, 512x512... or any rectangle combination, like 1024x256). Textures that have the same dimensions are more quickly interchanged by VRAM, so having a lot of textures with widely varying sizes defeats this. Aspect ratios over 8:1 can fragment VRAM and are not recommended. The exception to these rules is, again, atlasing.

Please keep your uncompressed source textures so you can export higher resolutions later or make needed modifications.

Atlasing

Meshes should use a single shape with a single texture for better performance. See Project Atlas:

A texture atlas (also called a sprite sheet) is an image containing a collection of smaller images, usually packed together to reduce the atlas size. Vanilla Morrowind has objects split into different shapes each using its own unique texture. This is bad for performance and is one of the game's primary FPS bottlenecks.

For compatibility with atlasing, individual trishape UVs should not tile in both horizontal and vertical directions. In an atlased texture, different parts should be separated by >4 pixels to avoid graphical issues with margins being blended in the downscaled mipmaps.

For more detailed information, see RubberMan's comments.

Additional Maps

If required by the model, include and use the correct alpha, glow maps, decals, and detail maps.

Adding glow maps to Morrowind is really simple in Nifskope – see Solidfire's tutorial or RubberMan's tutorial.

For detailed information on dark maps, detail maps, and decal maps, see the archived 4.0.0.2 Nif Documentation.

Note that parallax maps are not used in TES III. Gloss and Bump/Normal maps are also not supported in vanilla Morrowind; although possible to use with the Morrowind Code Patch (read more here) or OpenMW, we do not typically use them in Tamriel_Data.

Miscellaneous

Other techniques you can make use of:

  • Decals – to avoid Z-fighting or create easy texture variants, textures can be overlayed over surfaces in Decal slots. An example mesh in Tamriel_Data: tr\d\tr_in_impsmall_jail_tr.nif.
  • Transparency – this uses NiAlphaProperty flags, where usual values are 237 or 4845. Alpha blending parameters use a similar format to Oblivion and Skyrim; if you find resources for those, then some of the same tips apply. See also What is color blending?

Possible sources for textures are Archive textures and Spiral graphics (seamless).

Folder and Name

NOTE! This is for the naming of the assets themselves. Please ensure the Construction Set IDs conform to the Tamriel Data ID Guidelines.

Textures are named similarly to meshes, but because textures do not have the 32-character limit, their names and folder names are longer. All textures live in the Morrowind/Data Files/textures/[project abbrev] folder. Many are additionally put in a subfolder, according to this list:

  • no subfolder – misc items, flasks, clutter, barrels, furniture, ingredients, keys, anything that does not fit in one of the other folders
  • a – armors
  • arc – architectural objects, like tilesets, statues, windows, road markers, and other “man-made” things
  • b – body parts, heads, and hairs, for playable races
  • bk – books, scrolls, and notes
  • c – cloth things, including banners, tapestries, and clothing
  • cr – creatures
  • env – environmental items, such as rocks, flora, dirt, ice, etc
  • lnd – ground textures only: textures used in landscape painting
  • w – weapons

Textures should be named very similarly to the model they are being used for. If they are a more generic texture, they should have a more generic name.

Hash Map Collisions

Note that, like meshes, texture names that are too similar to each other will create hash map collision in a .bsa file. An object using the asset must be loaded and displayed in the current cell (or in preview mode in the Construction Set) for the engine to give the error: Hash map collision between two files, Collision between ....

You can check for these issues using a Java-based BSA hash checker.

See the BSA format document on its hash algorithms.

Replacing texture paths en masse

The PyFFI library can be used to replace texture paths in bulk. Note that the 2.2.3 version of the library appears to be broken for Morrowind assets. This can be circumvented by installing the 2.2.2 version:

pip3 install PyFFI==2.2.2

Once PyFFI is installed, the following script by Greatness7 can be tweaked to replace the desired textures in a directory and all of its subdirectories:

from pathlib import Path
from pyffi.formats.nif import NifFormat

path = Path("C:/Users/Admin/Games/Morrowind/Data Files/Meshes/g7/tests")

replacements = {
    b"tx_metal_iron_rusty01.dds" : b"pc_metal_iron_rusty01.dds",
    b"textures\\tx_metal_iron_rusty01.dds" : b"pc_metal_iron_rusty01.dds",
}

for file in path.rglob("*.nif"):

    with open(file, 'rb') as stream:
        data = NifFormat.Data()
        data.read(stream)

    modified = False
    for block in data.blocks:
        if type(block) is NifFormat.NiSourceTexture:
            name = block.file_name.lower()
            if name in replacements:
                block.file_name = replacements[name]
                modified = True

    if modified:
        print("Modified %s" % file)
        with open(file, 'wb') as stream:
            data.write(stream)

Where you'll want to replace "C:/Users/Admin/Games/Morrowind/Data Files/Meshes/g7/tests" with the path to the root directory of the meshes you want to replace. You'll also want to change the replacements map. This script will replace tx_metal_iron_rusty01.dds with pc_metal_iron_rusty01.dds.

Skinning

Skinning is the process of making objects move with the bones of a skeleton. Skinning is particularly relevant when making creatures or equipment.

Tutorials

Equipment

Vanilla Morrowind uses skinned meshes for equipment types that are deformed when the player moves, such as shirts, cuirasses, robes, skirts, and gloves. Other kinds of equipment, such as bracers, pauldrons, and boots do not need to be skinned. In the Construction Set, body parts and equipment can associate separate meshes to body slots (e.g. pants are segmented across Groin, Ankle, Leg and Knee).

To be visible when worn in the Vanilla engine, equipment needs:

  • to be a visible object type (not an amulet, ring or belt);
  • to take at least one visible equipment slot, which normally means making a body part invisible. E.g. open helms replace the "hair" slot, closed helms replace the "head" slot.

Generally, all equipment slots make their corresponding body part invisible and replace it with the equipment model. There are, however, a number of nuances and exceptions:

  • Pauldron slots do not make the corresponding body part invisible. Hence, old mods often used pauldrons as a hack to display objects like quivers on NPCs. Standard equipment in the game, however, uses both a pauldron slot and an upper arm slot for pauldrons, and sometimes forearm as well.
  • Some slots overwrite other slots:
    • skirt slot overwrites the groin and upper leg slots;
    • head slot overwrites the hair slot.
  • Some object types will hide body parts regardless of the slots they use:
    • robes always make knees, upper legs, groin, chest, upper arms and forearm body parts invisible;
    • skirts always make upper legs invisible, even if it itself includes body parts linked to the upper leg slots.
  • Other body parts can also be hidden by the same object by replacing their slots with nothing. For example, robes replace the chest part, and hide the ankle parts to avoid clipping.
  • Objects can use one visible slot and have part of the mesh be rigged to follow another body part entirely, by way of skinning:
    • robes follow the whole body using this trick;
    • replacing the "neck" with a scarf that also includes a mask on the face is practically the only way to create a headwear "helm" that doesn't hide hair in the Vanilla engine. However, there are priorities between object types for slots. In the same example, chest objects have priority over head objects for the neck slot; hence, if a chest object with a neck part like a scarf is worn together with a headwear object with a neck part, the headwear's neck part won't be displayed.

When making skinned meshes for other body parts, the body slot used by the "Body Part" object in the Construction Set matters. For example, to make skinned equipment based on the "neck" slot, the main node under Bip01 must be named Tri Neck, and each NiTriShape in it named Tri Neck 0, Tri Neck 1 and so forth, numbered starting from 0 and without skipping any numbers. When a mesh is skinned to Bip01, no shapes will be rendered outside of those that are parented to Bip01 and that follow the above name convention.

Equipment can only be skinned to bones found in the NPC's animation file. If equipment has bones of its own that the NPC doesn't have, meshes can be parented to them (segmented animation), but there can't be any skinning in the file or they won't be rendered.

In Blender, skinning is applied with the Weight Painting mode. Up-to-date versions of the Blender plugin will export skinned meshes correctly. Note that each vertex can have influence from no more than 4 bones.

Finally, note that equipment body parts with left and right sides only need a "right side" bodypart; the game mirrors the mesh to the left.

Creatures

When loading a rigged mesh, the engine automatically creates partitions of TriShapes so that each partition has influence from no more than 4 bones. When doing this, the engine doesn't detect if different vertices or edges share the same position, and may leave them with influences from different bones. Since shapes are split where there are UV seams (resulting in separate vertices that share the same position), the whole process can result in creatures with mesh seams where there are UV seams. The issue can be fixed with careful rigging, using Blender to clean insignificant weights, and using its weight painting option Normalize All with a limit of 4 or less.

Animations

See the dedicated article.

Particle Effects

See the dedicated article.

Techniques for Specific Asset Types

Flora

Below are some tutorials on how to create and fix up flora assets for Morrowind, many of them contributed by Hemaris.

Creating Trees Fast

Two tutorials are provided here.

Using Point To Pivot To Make a Grassy or Bushy Plant's Normals Project Outwards

Hemaris' video

If unsure about the best way to do a plant's normals, you can make a duplicate object, reset its normals/set from faces, add a Data Transfer from that copy back onto the edited-normals version, and then play with the slider in the modifier which controls how fully the transferred data replaces the original. [I forget the name but it's near the top. - Hemaris]

Using a Data Transfer Modifier To Smooth the Connection Between a Leaf and a Stem

Hemaris' video

You can smooth the intersections between leaves and stems, without actually making them share vertices, by using a Data Transfer modifier. The above video is a demonstration:

  • Separate the leaf into its own object, and then separate the top and bottom sides of the leaf from each other. (This is temporary; we rejoin them at the end.)
  • Create a new Vertex Group for each leaf surface, containing just the vertices that are closest to the stem.
  • Add a Data Transfer modifier which targets the stem and influences only the new vertex groups.
  • For the underside of the leaf, transfer the vertex colors and the custom normals. For the topside of the leaf, only transfer the vertex colors, since the intersection between leaf and stem is a very acute angle and the normals ought to look sharp. But this is situational; sometimes it looks better to transfer both things for both sides of a leaf. Or you can use the Mix Factor slider in the Data Transfer modifier to change how strong its effect is (1.0 = completely replace the original data, 0.5 = halfway between the original and target values, 0.0 = no effect).
  • Select nearest face interpolated mode in the Data Transfer modifiers. The other modes are sometimes better, depending on the shapes involved. You can try different ones and see what looks best, but for this leaves-and-stems scenario it is usually nearest face interpolated.
  • Check how things look in different viewport modes, and wave around a point light to see how it will respond to different times of day. Once satisfied with how the modifiers make things look, use Ctrl+A with the cursor over the modifiers to apply them, then merge the leaf surfaces and stem with Ctrl+J.

Excluding Parts of a Mesh From a Data Transfer Modifier by Using Vertex Groups

Hemaris' video

This is helpful for adjusting the vertex normals of tree foliage when there's a subset of foliage which needs to be handled separately. In this case, one of the Skyrim trees, the leaf texture atlas also includes a wood rings area which is applied to some broken limbs. Those parts should keep their original normals, not have them projected like the leaves.

Refitting Alpha Foliage Which Is Already Two-sided

Hemaris' video

This is a workflow for quickly refitting alpha foliage planes to have less empty space at the edges. That's very good for performance – GPUs hate alpha testing, but we use it in TES III because it shifts a bunch of work from your bottlenecked CPU onto your mostly-idle GPU – and it also makes the foliage respond more accurately to light sources.

Note: At the end of this clip, Hemaris separates the adjusted leaf plane into its own object. That's only temporary; they are separated as they are finished, just to get them out of the way, so you don't have to keep track of which ones still need work when using Show/Hide to make lots of leaf groups appear and disappear. When they're all finished, the objects must be merged back together.

Cleaning Up a Plant Mesh That Someone Else Made

Hemaris' video

  • You need to only have one version of each material in order for merging shapes to work (Blender splits multi-material shapes on export). Something about the way the creator of the mesh in the video above (mothpot) duplicated the original leaf mesh had also created a bunch of duplicate materials.
  • The transforms still aren’t completely applied, so you can select everything, apply the transforms, and then press Ctrl+J to merge all the same-material objects together.
  • Best practice is to turn on Backface Culling in the main Settings dropdown of the material settings (not in Morrowind > Settings). This means you then also need to duplicate faces and flip normals. Also, you can do Normals > Set From Faces before duplicating.
  • You need to set a Threshold value when using Alpha Clip. It should always be set to 0.52.
  • Notice the use of the Flat / Attribute view settings in Viewport Shading. That’s the easiest way to quickly tell whether a mesh actually uses the Vertex Colors table created by its material settings.
  • In this case, the leaves have all-white vertex colors (i.e. they don't use them at all), so you can disable Vertex Colors in the material settings. This saves a lot of file size.
  • At the end, re-parent the merged trishapes back to the root node. Those extra Empties were added by the Blender exporter when it split up the multi-material Shapes in the original blend file. The empties don't need to be kept, as long as they aren't carrying any un-applied transforms, so you can delete them.

Rocks

Some video tutorials:

A file like the one used in Hemaris' video:

Windmills

Windmills can be made to be animated even in distant land LODs.

Nothing can be animated in distant land, with one exception: in OpenMW and MGE XE beta (the latter with extra constraints on the direction of rotation), you are allowed to use a node called NiUVAnimationNode. That node scales or slides the UV maps of a shape, like how the fake waterfalls work, but it can't rotate them. But even with just this one seemingly weak tool, you can actually fake some surprisingly 3D effects.

The performance implications are not clear. Apparently, OpenMW developers decided to allow distant UV animations because they are cheaper than other animation types in CPU terms, and Morrowind is generally CPU-bottlenecked rather than GPU-bottlenecked. Distant animated windmills are an extreme case for thinking about performance cost versus visual impact, since they're buildings which are almost always visible above other stuff by design. Hence, it can be noticeable when they're frozen in the distance and then only pop into motion when you get close. Even if this is an expensive technique, there will only ever be a couple of meshes using it on screen at a time, and it has a big benefit for how good those meshes look.

Armor

Helmets

While creating open helmets, it is recommended to use Tr help head 01.zip - the .nif included here contains all of the largest head meshes of all the playable races (at the time of its creation). It allows open-faced helmet meshes to be shaped as close to the head as possible while avoiding clipping.

Candle Lights

Tutorial by Aly, originally posted on Project Tamriel Discord server:

  • In blender place empty named CandleFlame Emitter or something easy to find and place it on wick where you want your particle system to be
    • You most likely want to also add empty named AttachLight in same place or slightly above - it's where game attaches light object
    • You want to have empty named BoneOffset as well but this thing will need specific adjustments dependent on how character is supposed to hold it when equipped
  • Export
  • Open existing candle nif, find NiBSParticleNode named CandleFlame, right mouse button on it, block → copy branch
  • In your custom candle, right mouse button on main node, block → paste branch
  • Find your candle flame emitter node, right mouse button, transform → copy, then right mouse button on CandleFlame, transform → paste
  • Expand your NiBSParticleNode, find NiRotatingParticleNiParticleSystemController
  • In particle controller's block details (F3 if you don't have it opened) find line Emitter and set its value to number your CandleFlame Emitter node has (so if it's 2 NiNode set it to 2 etc)

Propylon textures

Texture kit made by Hemaris, for making custom propylon textures.

Tapestries

Tutorial by MammaHyena, originally posted on Google Doc:


You will need the following:

1. A piece of original art preferably in vector graphics. Here is the example that we will use in this tutorial:

MH Tutorial 1.png

2. This texture made by me from vanilla tapestry textures:

MH Tutorial 2.png

Step one, setting up the document

Most tapestries are in a ratio of 512/1024 but in an effort to include finer detail & make the texturing work easier I tend to increase this size four times (2048/4096). Don’t worry, we will reduce the size when exporting the document. It’s important to keep the resolution at 300.

MH Tutorial 3.png

Layers and texturing

Start with placing the art layer in Layer 1 & correct its size. Do the same with the texture layer (beneath Layer 1 as shown in the illustration).

MH Tutorial 4.png

For now we will ignore the tapestry texture & focus on the art layer. Go to the filter tab, pick filter gallery.

MH Tutorial 5.png

Press the patchwork filter icon. Use the following ratio. (Square size 3, relief 3)

MH Tutorial 6.png

Go back to the filter gallery. Choose the texturizer filter with the “canvas” texture as shown below. Important to have light placed on “bottom”.

MH Tutorial 7.png

Repeat the texturizer filter again with the same setting but choose light from “bottom left” instead.

We are going to repeat the texturizer a couple of times. Use the following formulae:

  • Step 1: Patchwork, Square size 3, Relief 3
  • Step 2: Texturizer, canvas, scaling 100%, relief 5, light Bottom.
  • Step 3: Texturizer, canvas, scaling 100%, relief 5, light Bottom Left.
  • Step 4: Texturizer, canvas, scaling 100%, relief 3, light Left.
  • Step 5: Texturizer, canvas, scaling 100%, relief 3, light Top Left.
  • Step 6: Texturizer, canvas, scaling 50%, relief 3, light Top.
  • Step 7: Texturizer, canvas, scaling 50%, relief 3, light Top Right.
  • Step 8: Texturizer, canvas, scaling 50%, relief 1, light Right.
  • Step 9: Texturizer, canvas, scaling 50%, relief 1, light bottom Right.

In the end you will have result looking like this:

MH Tutorial 8.png

Not looking exactly vanilla worthy yet right? No worries, we will fix it with the next couple of steps.

Light, shadows & layer masks

Double click on Layer 1 until this window pops up. Choose “satin” with the following specifications:

MH Tutorial 9.png

This will add a shadow to your tapestry.

Do the same with the tapestry texture in layer 2 using the same specifications.

Now for the layer masks found just above the layers (preset is normal). Change to “soft light” with the Layer 1 selected.

MH Tutorial 10.png

Now the art layer & the texture layer have merged together creating something like this:

MH Tutorial 11.png

If you want to you may adjust saturation, contrast etc. In this case I think we don’t really need it. Make sure to export your work or save it as a DDS. Reduce the size to a more vanilla friendly ratio when exporting (in this case 512/1024).

Happy hunting. /MammaHyena