Namespace, Primitive, Method

    war3-model
    TypeScript icon, indicating that this package has built-in type declarations

    2.2.1 • Public • Published

    war3-model

    TypeScript-based mdl/mdx (Warcraft 3 model formats) converter/renderer

    Demo

    Usage

    npm i war3-model --save

    MDL parsing/generation

    import { parseMDL, generateMDL } from 'war3-model';
    
    let model = parseMDL('...');
    let mdl = generateMDL(model);
    console.log(mdl);

    BLP => PNG node.js cli converter

    import * as fs from 'fs';
    import { PNG } from 'pngjs';
    import { decodeBLP, getBLPImageData } from 'war3-model';
    
    let blp = decode(new Uint8Array(fs.readFileSync(process.argv[2])).buffer);
    let imageData = getImageData(blp, 0);
    let png = new PNG({width: blp.width, height: blp.height, inputHasAlpha: true});
    
    png.data = Buffer.from(imageData.data.buffer);
    
    fs.writeFileSync('out.png', PNG.sync.write(png));

    Is it good enough?

    100% of old classic Warcraft 3 models can be parsed.

    After conversion mdx binary file -> in-memory structure -> mdx binary file all of them would be byte-to-byte identical.

    ~98.4% of models (3276/3329) would be identical after mdx -> structure -> mdl -> structure -> mdx (because warcraft contains extraneous data in models and because of unsupported multiple texture chunks in mdl).

    What about Reforged?

    Nope. Currently not supported, sorry

    MDL/MDX support

    • All standart features like Sequences, Bones, Cameras, etc
    • Multiple texture chunks (mdx only)
    • Multiple sequences/nodes with the same name (not quite sure is it feature or not, but War3 actually contains such models)
    • SoundTrack not supported

    Renderer support

    • Standart geometry/animation
    • Custom team color setting
    • ReplaceableId 1/2
    • Global sequences
    • Alpha blending and multiple layers
    • TextureAnimation
    • Billboarded/BillboardedLockXYZ, w/o DontInherit/CameraAnchored
    • RibbonEmitter (w/o Gravity and TextureSlot/Color animation)
    • ParticleEmitter2 (with Tail/Head/Both/Squirt(?))
    • No light support (normals, light, Unshaded, etc)
    • No render priority support (PriorityPlane and others)

    BLP support

    • BLP1 only (not BLP0 and BLP2 support)
    • Decoder only, no encoder
    • Direct & jpeg data
    • Variable alpha (8/4/1/0 bit, but tested only 8/0)
    • API for getting all mipmap level's data

    Thanks

    • Magos (MDX specification, War3 Model Editor app/source)
    • GhostWolf (aka flowtsohg) (MDX specification, BLP decoder code)
    • Алексей (MdlVis app/source)
    • Dr Super Good (BLP specification)

    Licence

    MIT Licence

    Install

    npm i war3-model

    DownloadsWeekly Downloads

    10

    Version

    2.2.1

    License

    MIT

    Unpacked Size

    3.36 MB

    Total Files

    14

    Last publish

    Collaborators

    • garret