LV
4
this small audit of some tools i made before for top models.effect. weapons it helpful if you're willing to use ai agent to create your own tools
i won't share the tool itself as it contain some decrypt/encrypt method related to my files
[GUIDE] MindPower 3D Asset Formats, Engine Specs & Workflow Guide
Comprehensive technical documentation covering binary asset specifications, socket helpers, low-level engine quirks, and custom content creation workflows.
1. Supported Formats & Pipeline Philosophy
File Formats Overview:
Export & Import Rules:
2. Complete Dummy Helper & Socket Specifications
Dummy helpers (
2.1 Architectural Rules: Inverse Matrix Allocation
In the engine definitions (
2.2 Weapon Dummies (The 5-Dummy Standard)
Weapons (swords, daggers, bows, guns, staves, axes) support up to 5 dummy helpers:
2.3 Ground Item Drop Dummies
When an item model is dropped on the floor (
2.4 Character Skeleton Sockets (21-Dummy Humanoid Standard)
Humanoid character skeletons (
2.5 Visual Effect & Projectile Dummies (.par / .eff / .let)
For spell models and visual effect meshes (
3. Engine Technical Quirks & Code Handling
3.1 Coordinate Systems & Parity
Direct3D 9 is a Left-Handed (LH) coordinate system with Z-up. Modern software (like Blender) is Right-Handed (RH) with Z-up. Looking down -Y, negative X sits screen-left in DirectX, but screen-right in standard RH software.
3.2 Face Winding Order
Direct3D uses Clockwise (CW) winding for front faces; standard tools use Counter-Clockwise (CCW).
3.3 UV Inversion (V-Flip)
DirectX texture coordinates origin is top-left (V points down), whereas modern 3D tools use bottom-left (V points up). Invert the vertical axis:
3.4 Bind Pose & Bone Chains
In
Bone heads are positioned at
3.5 High-Performance Animation Streaming
Files with 5,000+ frames (e.g.
Using direct batch insertion streams raw F-Curve data directly into animation points without forcing interface updates, loading complex animations in fractions of a second.
3.6 Automatic Skinning & Modifier Assembly
Skinned
3.7 The Legacy 3ds Max "1.png" Demystified
In older MAXScript export scripts (
The script searched byte offset 340 (the second texture stage
Modern Export Solution:
Single meshes and standard models only need 1 material and 1 texture. When exporting with glow enabled, set the engine glow flag:
and populate
3.8 Real-Time Additive Transparency
Meshes with transparency types (
4. Standard Workflow Guide
4.1 Weapons (Static or Glowing)
4.2 Character Equipment & Armor
4.3 Ground Item Drops
4.4 Visual Effects (.par / .eff)
4.5 Multi-Object Scenes (.lmo & .lxo)
4.6 Character Bone Animations (.lab)
5. Future Engine Modernization Architecture
For developers maintaining or upgrading MindPower 3D source code from legacy Direct3D 9 conventions to modern graphics standards (BGFX / glTF 2.0):
i won't share the tool itself as it contain some decrypt/encrypt method related to my files
[GUIDE] MindPower 3D Asset Formats, Engine Specs & Workflow Guide
Comprehensive technical documentation covering binary asset specifications, socket helpers, low-level engine quirks, and custom content creation workflows.
1. Supported Formats & Pipeline Philosophy
File Formats Overview:
- .lgo — Single Geometry Object: Static meshes, skinned character equipment (armors, helms, boots, gloves), weapons, ground drop items, and static visual effect geometry.
- .lmo — Multi-Object Geometry: Compound objects, multi-part map structures, and static environment props.
- .lxo — Hierarchical Scene Objects: Complete scene trees containing meshes, bones, dummy helpers, and embedded PRS (Position/Rotation/Scale) animations.
- .lab — Skeletal Bone Animation: Quaternion and vector keyframe streams for character and creature armatures.
- .let — Effect Motion Track: 4x3 transform matrix streams for particle anchors, projectile trajectories, and spell motion.
Export & Import Rules:
- Clean Non-Encrypted Export: Models, armatures, and animations are exported in standard open MindPower binary format (
EXP_OBJ_VERSION = 1). This ensures full compatibility out-of-the-box with any game client, legacy 3ds Max tools, model viewers (PKOModelViewer), and game servers. - Zero-Config Relative Paths: The importer automatically resolves textures without requiring hardcoded absolute drive paths. It dynamically searches the model folder, standard subdirectories (
scene/,item/,character/,effect/), and parent directories up to 4 levels up.
2. Complete Dummy Helper & Socket Specifications
Dummy helpers (
lwHelperInfo, lwDummyInfo) act as anchor points used by the engine for equipment attachment, character mounts, ground physics, combat hitboxes, slash trails, and particle emitters.2.1 Architectural Rules: Inverse Matrix Allocation
In the engine definitions (
lwITypes.h), dummy helpers follow a strict allocation rule:
Code:
#define LW_MAX_OBJ_DUMMY_NUM 16
#define LW_MAX_OBJ_DUMMY_INV_NUM 4
- Dummies with Inverse Matrices (Dummy001 – Dummy004, IDs 0 to 3):
These 4 dummies calculate inverse transformation matrices. They are strictly reserved for physical geometry links (hand grip, collision boundaries, and sheathing mounts). - Dummies without Inverse Matrices (Dummy005 – Dummy008+, IDs 4+):
These dummies do not calculate inverse matrices. They are dedicated to special effects, glow anchors, light pillars, and particle emitters.
2.2 Weapon Dummies (The 5-Dummy Standard)
Weapons (swords, daggers, bows, guns, staves, axes) support up to 5 dummy helpers:
| Dummy Name | Helper ID | Engine Role | Functional Placement & Behavior |
|---|---|---|---|
| Dummy001 | 0 | Hand Grip / In-Hand Pivot | Where the character holds the weapon. When equipped in the right or left hand (enumEQUIP_RHAND / enumEQUIP_LHAND), the engine binds the character's hand bone socket (Dummy001 or Dummy002) to the weapon's Dummy001. Position at the center of the handle/hilt. |
| Dummy002 | 1 | Blade Guard / Slash Trail Start | Base of the blade or hilt guard. Serves as the inner anchor for the dynamic sword slash ribbon (CMPStrip). Also defines one corner of the ground drop hitbox. |
| Dummy003 | 2 | Blade Tip / Projectile Muzzle | Outer tip of the blade, bow arrow rest, or gun muzzle. Connects with Dummy002 to trace the slash ribbon arc, and defines the spawn point for arrows, spells, and bullets (nBeginDummy = 2). |
| Dummy004 | 3 | Sheath & Back Holster Mount | Controls how the weapon sits when resting/out of combat. Binds to the character's back scabbard socket (Dummy004 or Dummy005). Orient this to adjust resting angle on the character's back/hip. |
| Dummy005 | 4 | Weapon Refine Glow Anchor | Forge refine aura anchor (+4, +7, +9 glowing aura, flame particles, elemental lightning, gem glow). Position along the blade center where visual aura should focus. |
Summary: Non-glowing weapons only require Dummy001. Full-featured/glowing weapons require all 5 dummies (Dummy001 to Dummy005).
2.3 Ground Item Drop Dummies
When an item model is dropped on the floor (
ITEM_DROP archetype):| Dummy Name | Helper ID | Engine Role | Functional Placement & Behavior |
|---|---|---|---|
| Dummy001 | 0 | Pivot & Floor Anchor | Controls floor height alignment. The engine places origin (0, 0, 0) directly at Terrain Height + HeightOff. Vertices above Dummy001 (+Z) float above ground; vertices below (-Z) sink into the terrain. |
| Dummy002 | 1 | Loot Hitbox (Min Extent) | Defines one corner of the 3D bounding volume used for mouse click raycasting (PickItem). |
| Dummy003 | 2 | Loot Hitbox (Max Extent) | Defines the opposite corner of the picking/looting click box. |
| Dummy004 | 3 | Loot Hitbox (Center / Axis) | Sets the center reference and orientation axis for the clickable bounding box. |
| Dummy005 | 4 | Glow & Particle Anchor | Placed vertically above the item (0.5m to 1.2m on +Z). Spawns the item drop light pillar, floating sparkles, or rarity glow effect. |
2.4 Character Skeleton Sockets (21-Dummy Humanoid Standard)
Humanoid character skeletons (
.lab) use up to 21 attached dummy helpers:- Dummy001 (
Bip01 R Hand): Right Hand weapon mount (swords, daggers, wands, guns, bows). - Dummy002 (
Bip01 L Hand): Left Hand weapon mount (dual-wield offhand weapons, shields). - Dummy003 (
Bip01 L Forearm): Left Forearm buckler / shield mount point. - Dummy004 (
Bip01 Spine2): Primary back sheath mount (two-handed greatswords, axes, staves). - Dummy005 (
Bip01 Spine1): Secondary back sheath mount (bows, quivers, scabbards). - Dummy006 (
Bip01 Head): Head / Helmet socket. - Dummy007 (
Bip01 Head): Hair socket. - Dummy008 (
Bip01 Head): Face / Mask / Glasses accessory socket. - Dummy009 – Dummy012 (
Bip01 Pelvis): Belt, pouch, sash, and hip accessory sockets. - Dummy013 – Dummy016 (
Bip01 Spine2 / Clavicle): Shoulder armor pads and cape/cloak attachment points. - Dummy017 – Dummy018 (
Bip01 Spine2): Right & Left Wing sockets (angel wings, demon wings, fairy wings). - Dummy019 – Dummy021 (
Bip01 R/L Foot / Root): Ground footprints, character base auras, and floor decals.
2.5 Visual Effect & Projectile Dummies (.par / .eff / .let)
For spell models and visual effect meshes (
EFFECT archetype .lgo models):- Dummy001 (ID 0): Effect Root / Main Emitter Anchor (primary attachment or pivot).
- Dummy002 – Dummy004 (IDs 1 to 3): Sub-Particle Emitter Sockets (nested particle effects like trailing sparks or orbiting runic rings).
- Trajectory Endpoints: Used by ribbon systems (
CMPStrip) to trace motion ribbons through space as the effect travels.
3. Engine Technical Quirks & Code Handling
3.1 Coordinate Systems & Parity
Direct3D 9 is a Left-Handed (LH) coordinate system with Z-up. Modern software (like Blender) is Right-Handed (RH) with Z-up. Looking down -Y, negative X sits screen-left in DirectX, but screen-right in standard RH software.
- When importing multi-object or scene files (
.lxo), parenting top-level objects under a root empty withscale.x = -1.0retains identical visual in-game orientation. - During export, the root empty is unwrapped so child nodes write their true unmirrored local coordinates cleanly.
3.2 Face Winding Order
Direct3D uses Clockwise (CW) winding for front faces; standard tools use Counter-Clockwise (CCW).
- On import, reverse triangle indices:
(i0, i1, i2) -> (i0, i2, i1). - On export, reverse them back so normals face outwards correctly in-engine.
3.3 UV Inversion (V-Flip)
DirectX texture coordinates origin is top-left (V points down), whereas modern 3D tools use bottom-left (V points up). Invert the vertical axis:
Code:
V_engine = 1.0 - V_editor
3.4 Bind Pose & Bone Chains
In
.lab files, bones store an inverse bind matrix (inv_mat). The world bind matrix is computed as:
Code:
M_bind = inverse(inv_mat)
M_bind.translation, with bone tails pointed toward their anatomical child joints (Pelvis -> Spine -> Neck -> Head; Clavicle -> UpperArm -> ForeArm -> Hand; Thigh -> Calf -> Foot).3.5 High-Performance Animation Streaming
Files with 5,000+ frames (e.g.
0000.lab with 56 bones x 5,131 frames = 287,336 keyframes) can cause major UI freezes if using per-frame keyframe functions. Using direct batch insertion streams raw F-Curve data directly into animation points without forcing interface updates, loading complex animations in fractions of a second.
3.6 Automatic Skinning & Modifier Assembly
Skinned
.lgo meshes reference bones by index via mesh.bone_index_seq.- When importing
.lgowith an active armature in the scene, map bone IDs to skeleton bone names (Bip01 Head, etc.) and add an Armature modifier. - When importing
.labover existing unparented meshes, matchbone_{id}vertex groups to bone names automatically. - On export, reverse the mapping to serialize bone vertex groups back to the original engine bone IDs.
3.7 The Legacy 3ds Max "1.png" Demystified
In older MAXScript export scripts (
expr.ms), glowing models checked:
Code:
if(helpdata_type == 17) do (
err_txt += " Glowing models should have 2 submaterials with textures."
)
tex_seq[1] in lwMtlTexInfo). Because the tool lacked multi-stage material options, artists were forced to assign a dummy second submaterial with a dummy 1.png file to prevent export errors.Modern Export Solution:
Single meshes and standard models only need 1 material and 1 texture. When exporting with glow enabled, set the engine glow flag:
Code:
state_ctrl = (1, 1, 0, 1, 1, 0, 0, 0)
tex_seq[1] with 1.png (or the emissive map name) automatically.3.8 Real-Time Additive Transparency
Meshes with transparency types (
1 <= transp_type <= 4) represent waterfalls, glowing runes, or flame planes. In modern shader graphs, combine Transparent and Emission shaders through an Add Shader, setting viewport blending to Alpha Blend with backface culling disabled to avoid black opaque planes.4. Standard Workflow Guide
4.1 Weapons (Static or Glowing)
- Model the weapon centered at (0, 0, 0).
- Add dummy helpers:
- Dummy001: Grip/hilt center where hands clasp.
- Dummy002: Blade guard / hilt base (slash trail start).
- Dummy003: Blade tip or gun muzzle (slash trail end / projectile spawn).
- Dummy004: Back sheath/scabbard alignment.
- Dummy005: Blade center for forge refine aura.
- Select the weapon mesh.
- Export as
.lgowith model type set toSTATIC(checkEnable Glowif using glowing runes/refine glow).
4.2 Character Equipment & Armor
- Import the character armature (
0000.lab). - Model and align armor pieces (Head, Body, Gloves, Boots) to the skeleton.
- Assign vertex weights to vertex groups matching skeleton bone names (
Bip01 Spine,Bip01 Head, etc.). - Export as
.lgowith model typeSTATIC. Vertex groups will remap to engine bone indices automatically.
4.3 Ground Item Drops
- Model the item, placing
Dummy001at (0, 0, 0) for the ground contact point. - Place
Dummy002,Dummy003, andDummy004around the mesh to define the clickable bounding box. - Place
Dummy005at +0.8m on +Z for the item drop light pillar. - If the item bounces or spins: animate PRS keyframes directly on the object.
- Export as
.lgowith model type set toITEM_DROP.
4.4 Visual Effects (.par / .eff)
- Model the effect mesh (magic crest, energy slash ribbon, barrier).
- Animate rotation/scale transforms if required.
- Export as
.lgowith model typeEFFECTandEnable Glowactive. - Place the model in your client's effect folder and reference it inside the
.effor.parscript.
4.5 Multi-Object Scenes (.lmo & .lxo)
- Compound Objects (.lmo): Group static meshes together and export as Multi-Object.
- Hierarchical Scenes (.lxo): Organize child-parent node hierarchies and export as Scene Hierarchy.
4.6 Character Bone Animations (.lab)
- Select the character Armature with the desired Action active.
- Export as
.lab. Keyframes are sampled and written as quaternion and vector animation tracks.
5. Future Engine Modernization Architecture
For developers maintaining or upgrading MindPower 3D source code from legacy Direct3D 9 conventions to modern graphics standards (BGFX / glTF 2.0):
- Handedness & Projection: Direct3D 9 uses Left-Handed projection. Switching BGFX to Right-Handed projection (
bx::Handedness::Right) in camera view/projection functions standardizes scene coordinate space and removes the need for X-axis mirroring. - Culling & Winding: Legacy rendering uses
BGFX_STATE_CULL_CW. Updating toBGFX_STATE_CULL_CCWallows loading modern Counter-Clockwise polygon meshes directly without index inversion. - Units & Scale: Unify world units into SI standard: 1.0 unit = 1.0 meter across movement packets, terrain height, and model bounds.
- Bone Space Alignment: Modernize skeleton conventions from 3ds Max +X along bone to universal +Y along bone length.
- glTF 2.0 Container Support: Integrate a lightweight parser (such as
tinygltf) into the world renderer to load.glbassets with PBR textures (BaseColor, Normal, Metallic-Roughness, Emission) natively, replacing intermediate legacy formats.

