Skip to content

Asterisk's Plugin Features

AsteriskAmpersand edited this page May 25, 2019 · 4 revisions

For some of the features listed here, it's necessary to understand the documentation notes as some features deal with controlling the "special" behaviour of some aspects of mod3.

Property Transference

To transfer properties between meshes make a copy of the mesh who's properties you wish to copy. Delete the vertices in the copy (Select Mode Vertices > A > Del). Join the mesh you want to receive the properties with the empty mesh (Click on the Target Mesh in the explorer sidebar > Shift click on the Empty Mesh on the explorer sidebar Control+J).

Skeleton Editing

Skeletons can be freely editing, moving the nodes as necessary. It's possible to add bones by using the "Parent To" command. It's possible to establish a symmetry relationship between bones on two sides of an axis of symmetry by creating a modifier "CHILD_OF" and setting it to the desired opposite end as target. Bones should only have a single "CHILD_OF" constraint as the mod3 format allows only one symmetric pair.

Split Weight and Split Slash Notation

Mod3 allows a vertex to have the same bone multiple times on it's weight array, functionally splitting a weight. It's unknown why it allows this. It's possible to label groups as BONE_NAME(BONE_INDEX,WEIGHT_REPETITION) so that one can have for example Bone.(001,0), Bone.(001,1), Bone.(001,2) this will all be read by the exporter as Bone.001 but kept separate when writing. This notation works by concatenating so Bone.001(,0) is identical to Bone.(001,0), and it's possible to use it even when renaming bones. LArm002(,0) and LArm00(2,0) and LArm(002,0) will all be tied to the bone named Arm002, and kept split.

Explicit Negatives

Additionally the mod3 format doesn't store the last vertex (of 4 it only stores 3, of 8 it stores 7), the last weight is calculated as 1-sum(weights). This means the last weight is "special". Split weight notation allows assigning a bone specifically to this position by using a WEIGHT_REPETITION value of -1. As there can only be 1 negative weight per vertex, only 1 of a vertex's weights can be from a group with explicit negative. LArm002(,-1) for example would be the vertex weight group that if found on a vertex assigns it to it's last weight.

Split Slash Notation

Additionally, with the discovery of non-final weights ordering being relevant to animation, Split Weight Notation can be extended into Split Slash Notation, under this scheme the last entry on the parenthetical section can be expanded with a slash to indicate the priority of the weight on the vertices internal ordering of the weight. For example Bone.(001,0/0), Bone.(002,1/2), Bone.(004,2/1) would ensure that the vertex's weight groups result in the exact ordering of [001,004,002]. Explicit negatives take precedence over Split Slash indexes however (the import will however always assign the negative index to the correct position, but it's not necessary to do this, the negative value will override the explicit slash index).

Split Normal Editing

By default the exporter will export split normals which can be edit through tools like Blend4Web and Y.A.V.N.E.. If the option is unset it will use blender's autonormals.

Material Editing

Simply writing the material on the meshpart's custom property ensures that it's added to the file's header and correctly indexed at mesh level.

General Tutorials

General Tutorials

Animation Tutorials

Animation Tutorials

Audio Tutorials:

Audio Tutorials

IDs:

File & In Game IDs

Model Tutorials:

Model Tutorials

Effects Tutorials:

EFX Tutorials

FSM Tutorials

FSM Editing

MRL3 Tutorials:

MRL3 Tutorials

NPC Editing:

NPC Editing

Map Editing:

Map Editing

Plugins and Memory Editing:

Plugins and Memory Editing

Quest Editing:

Quest Editing

Monster AI Editing:

Monster AI Editing

Texture Tutorials:

General Texture Tutorials
Specific Texture Tutorials

TIML Editing

TIML Editing

Asterisk's Plugin Notes:

Asterisk's Plugin Notes

Miscellaneous Tutorials:

Miscellaneous Tutorials

Outdated Tutorials:

Outdated Tutorials
Clone this wiki locally