Asterisk's Plugin Importer Settings - Ezekial711/MonsterHunterWorldModding GitHub Wiki

Import Settings

Recommended Settings and Suggestions

The default settings are designed to be ideal for most situations. There are however specific workflows that might simplify work or produce better fidelity of results. In most cases you shouldn't need to change the defaults outside of providing a chunk path for texture loading.

This are the default settings of the importer.

Clear scene Only high LOD Import Header Import Skeleton Import Meshparts Import UnknMeshProp Import Textures Weight Format
Standard

Editing a mesh to remove parts or perform minor destructive edits

Preserving split weights is only recommended when no new vertices are added and only destructive, repositioning or rescaling edits are performed.

Clear scene Only high LOD Import Header Import Skeleton Import Meshparts Import UnknMeshProp Import Textures Weight Format
Split Weight Notation

Editing Geralt's Mesh or if the above fails

Split-Slash notation is the result of the weight scheme being even worse than originally believed. As a result weight order is also relevant. For meshes where loading and saving with split weight notation breaks in-game results (at the time only Geralt's model, m/pl118 is known to suffer from this) split-slash notation is instead recommended as a fallback.

Clear scene Only high LOD Import Header Import Skeleton Import Meshparts Import UnknMeshProp Import Textures Weight Format
Split Slash Notation

Expanding an Skeleton with another model with different swag bones

Import the model whose skeleton you wish to extend.

Clear scene Only high LOD Import Header Import Skeleton Import Meshparts Import UnknMeshProp Import Textures Weight Format
Standard

Then import the model whose skeleton you wish to borrow parts from.

Clear scene Only high LOD Import Header Import Skeleton Import Meshparts Import UnknMeshProp Import Textures Weight Format
Standard

Use P to unparent the bones you want to borrow, select the target node and set the parenting as needed. Try to unparent one bone above the one you want to burrow. Bone ends frequently don't have rotations, when they have something following them they do, so if you are extending an armature it's ideally done by removing the entry point on the parent and grafting the entry point of the replacement.

Transfer meshpart custom properties

Clear scene Only high LOD Import Header Import Skeleton Import Meshparts Import UnknMeshProp Import Textures Weight Format
Standard

Delete all of the vertices in the meshpart whose properties you wish to transfer. Select the target mesh in object mode and shift select the meshpart with properties and merge with Control+J.

Most faithful import-export cycle

Clear scene Only high LOD Import Header Import Skeleton Import Meshparts Import UnknMeshProp Import Textures Weight Format
Split Slash Notation

This keeps the most amount of the original data (close to 100%). And the differences between file and editor will be normals which blender is unable to properly preserve fully sometimes forking them and tangents which blender doesn't allow overwriting manually.

Detailed Description

Clear scene before import

Removes all objects and scene properties from the scene. While it's recommended to use the blender's New command, this will also work. Specially useful if calling the importer from a script.

Maximize clipping distance

Maximizes blender's clipping distance as MHW models tend to be on the big side. May cause issues in orthographic projection and other non-perspective views.

Only import high LOD parts

Filters the mesh list to only those with LOD equal to 1 or 65535. For meshes exported with CrazyT's plugin it's recommended to leave this setting on as the file exported has abnormalities in meshparts that are not explicitly exported.

A more complete technical explanation

CrazyT's plugin is a port of Predator's MTFramework Model Plugin for 3dsmax. The plugin export function was the initial push into the mod3 format's research, and as such developed before much of the format's subtleties were understood. As a result the export function works by surgically editing the imported mod3. It will perform the least amounts of necessary operations possible by only modifying meshes modified.

This however leads to complications because of the structure of the mesh headers, in particular VertexBase, VertexSub interaction and Faces' indexing. The mod3 still holds unedited or "deleted" meshes, if "Import only highest LOD" is used this meshes are still present just not visible in normal game usage. However this meshes are not updated on the export process. As a result VertexSub and VertexBase have incorrect values in the Meshpart Headers. This in turn means that when reading the mod3 errors may occur and the importer report it as corrupted, alternatively it might crash blender if it's correctly read but blender attempts to import this meshes.

This can be avoided by leaving "Import only Highest LOD parts" checked, as the importer will not attempt to import this problematic meshparts to blender. Exporting after importing will fix this as Asterisk's importer doesn't edit the original mod3 but creates a clean one.

Import File Header

Import's the files header's to the blender scene. This includes a fair amount of unknown properties but is not necessary for correct functioning.

A more complete technical explanation

The properties imported are:

  • vertexIds - Unknown what it is. It's above and below vertex, edge and face counts constantly. It's not related to tristrips or anything that would make sense.
  • groupCount - The group count for the UnknGroupProperties section (Groups do not correspond to vertex groups).
  • boneMapCount - Not actually the boneMapCount. Might be an identifier for the BoneMapFunctions.
  • unkn1 - A float property block. Suspected to be related to LOD transition thresholds.
  • unkn2 - A byte property block.
  • materialNames - The list of material names. While each mesh stores their material name (instead of index), meshes without a material will default to the first material of the list. If there are none they will use the first material in any of the meshparts present. If no meshpart has a material and there is no materialNames the importer will refuse to export.
  • trailingData - Data at the end of the mod3. Unknown what it does.

While the unknown meshpart properties are also written to the scene's properties this are not part of this option but handled by it's own checkbox.

Import Skeleton

Imports the armature and embeds the respective L and A Matrices to each bone. Bone position comes from the armature section, unlike the CrazyT importer which uses the Matrices. Bone hierarchy is set based on bone parent, not on bone children field.

Additionally it imports Bone's Mod3 properties to each bone, this includes it's Bone Map function. Bone Map function determines what animations are applied to a bone.

A more complete technical explanation

  • boneFunction - Determines how the bone will animate.
  • Child - Contrary to it's name it's not quite the id of the bone's animation child or anything similar.
  • unkn2 - Unknown value

Import Meshparts

Imports meshparts and embeds their headers as properties.

A more complete technical explanation

  • blockLabel - The explicit blocktype the mesh uses. It can be changed to any other blocktype or deleted. The exporter has settings for recalculating the blockLabel if necessary and is recommended for most user exports.
  • boneremapid - Unknown what it does.
  • lod - Level of detail. Determines at what distances the mesh is visible.
  • material - The material's name. If a material is not on the header the exporter will add it automatically.
  • unkn - Unknown value.
  • unkn2 - Unknown value.
  • unkn3 - Unknown value.
  • unkn9 - Unknown list of values.
  • visibleCondition - Determines if a meshpart is visible depending on the object's condition. For example for weapons 1 corresponds to visible only when drawn and 2 to visible only when sheathed. 0 universally means always visible.

Import Unknown Mesh Properties

Imports a section of values of yet unknown purpose that are linked to the meshparts.

Import Textures

Imports textures for meshparts if an mrl3 file is in the same directory as the mod3 and also named just like the imported mod3. It assigns each mesh the albedo entry corresponding to the meshpart's material within the mrl3. The importer will first search through the folder path hierarchy on the texture path option and then look for the files on the current directory.

A more complete technical explanation

The mrl3 will return a relative path to the root of the chunk. The texture path should be the root of the chunk such that when concatenated with the mrl3 path it leads to the .tex files.

If the file is already in PNG format it loads that. Otherwise it looks for a DDS and converts it to PNG. Otherwise the importer will convert the TEX to DDS and the DDS to PNG to be able to load them into blender.

Override Default Mesh Properties

Allows overriding the addons' default fallthrough values with those of the first mesh in the file. This is considered bad praxis as custom mesh properties should be explicit, however, if you know what this implies in terms of results the option simplifies manual work. It's however NOT RECOMMENDED to use this unless you fully understand what mesh properties control and why it's handling is preferred to be explicit.

Weight Format

Standard

Sums all of the weights tied to a single bone for each vertex. This is the expected way 3d model formats should work.

Split-Weight Notation

When a vertex has repeated weights it creates a new vertex group for the repetitions. Additionally negative weights are kept as their own vertex groups.

Split-Slash Notation

As Split-Weight Notation but additionally keeps track of what position the weight was in within the bone id arrays. For specific model the order of the weights is relevant.

⚠️ **GitHub.com Fallback** ⚠️