npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

war3-model

v3.2.0

Published

Warcraft 3 model parser, generator, convertor and previewer

Downloads

695

Readme

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 both old classic Warcraft 3 and Reforged models can be parsed.

After conversion mdx binary file -> in-memory structure -> mdx binary file ~99.7% (7908/7927) of them would be byte-to-byte identical (19 of them contains unused data).

Reforged format is supported

New versions 900 and 1000 are supported in parsers, generators and viewer.

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
  • Reforged data

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(?))
  • Reforged PBR lightning (orm textures, specular, normal mapping, etc)
  • No Light nodes support (Light, Unshaded, etc)
  • No render priority support (PriorityPlane and others)
  • BLP / DDS are supported

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

DDS support

  • dxt1, dxt3, dxt5, ati2 (also known as bc5)

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