Skip to content
| Marketplace
Sign in
Visual Studio Code>Visualization>War3 贴图预览New to Visual Studio Code? Get it now.
War3 贴图预览

War3 贴图预览

小为

|
102 installs
| (1) | Free
在代码文件中悬停预览贴图(PNG/TGA/BLP)和模型(MDX/MDL),支持魔兽争霸3自带的贴图资源。
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

War3 Texture Preview

在代码文件中悬停预览贴图(PNG/TGA/BLP)和模型(MDX/MDL),支持魔兽争霸3自带的贴图资源。

功能特点

  • 支持 PNG / TGA / BLP:Hover 内联预览;也支持直接打开贴图文件进入“贴图预览编辑器”(拖拽平移、缩放、高 DPI、重置视图)。
  • 支持 Warcraft III 自带 MPQ 资源解析(可配置),本地优先、MPQ 兜底。
  • 支持 MDX / MDL 模型预览(Webview/编辑器),提供旋转/动画/速度控制与时间轴拖动。
  • 模型路径支持 Ctrl+左键 直接打开预览;Hover 可一键生成模型缩略图。
  • 支持贴图/模型格式转换:PNG/TGA/BLP 互转、MDX/MDL 互转(资源管理器右键/编辑器标题栏)。
  • 预览主题支持 system/light/dark(模型预览/贴图预览共用)。
  • 模型预览提供 1x 尺寸换算:W/D/H/R/2R 与缩放 scale 双向联动,便于按游戏内范围精确匹配特效大小。
  • 默认仅匹配字符串字面量:"..."、'...'、[[...]];可选:Lua 文件可从 Lua LSP Hover 提取常量路径(war3TexturePreview.enableLuaLspHoverPathResolve,默认关闭)。
  • 支持常量格式化字符串解析(string.format / :format,可配置白名单)。
  • 路径支持绝对路径与相对路径;相对路径按多根目录顺序搜索。
  • 配置基于 VS Code Settings(workspace/user),修改后自动热加载。
  • 预览尺寸可配置(默认 256),显示原始尺寸。
  • 支持落盘缓存:MPQ 解压缓存(mpq-cache/)与预览 PNG 缓存(preview-cache/)。
  • 默认支持文件格式:lua、ini、lni、j、jass、zinc、txt。

配置

扩展使用 VS Code 自带 Settings(不会再生成专用配置文件)。

  • 全局配置:VS Code 设置面板(User Settings)中的 war3TexturePreview.*。
  • 工作区配置:.vscode/settings.json 中的 war3TexturePreview.*(优先级更高,适合团队共享)。

打开设置:

  • VS Code 设置里搜索:war3TexturePreview
  • 或运行命令:War3 贴图预览:打开设置

启用/禁用(工作区开关)

扩展默认全局激活;你可以通过 war3TexturePreview.enabled 在某个工作区关闭/开启:

// .vscode/settings.json
{
  "war3TexturePreview.enabled": true
}

常用配置示例(工作区覆盖)

// .vscode/settings.json
{
  // 允许解析自定义格式化函数
  "war3TexturePreview.formatFunctionNames": ["string.format", "formatHandler"],

  // 额外资源根目录(相对路径按工作区根目录拼接)
  "war3TexturePreview.searchPaths": ["image", "war3mapImported"],

  // 预览最大边长
  "war3TexturePreview.maxPreviewSize": 256
}

Warcraft III 安装目录自动探测

  • war3TexturePreview.war3InstallPath 默认是空字符串 ""。
  • 当它为 "" 且启用 MPQ(enableWar3Mpq=true)时:扩展会从注册表探测安装目录;若探测成功,会把结果写入【全局】设置作为默认值。
  • 如果你在 Settings 中手动填写了路径,则优先使用手动值(workspace > global)。

预览主题(模型/贴图预览共用)

  • 配置:war3TexturePreview.modelPreviewTheme(system/light/dark)。
  • system:跟随 VS Code 当前主题;模型/贴图预览页右上角可一键切换主题并写回设置。

命令

  • 打开设置:War3 贴图预览:打开设置。
  • 迁移旧版配置:War3 贴图预览:迁移旧版配置到 Settings。
  • 打开模型预览:War3 贴图预览:打开模型预览(也可在模型路径上 Ctrl+左键 直接打开)。
  • 生成模型缩略图:War3 贴图预览:生成模型缩略图(Hover 中会给出生成入口)。
  • 转换贴图:War3 贴图预览:转换为 PNG/TGA/BLP(支持多选;资源管理器右键或编辑器标题栏中使用)。
  • 转换模型:War3 贴图预览:转换为 MDX/MDL(支持多选;资源管理器右键或编辑器标题栏中使用)。
  • 清理缓存:War3 贴图预览:清理缓存(清空 mpq-cache/ 与 preview-cache/,相当于全量清理)。
  • 清理工作区缓存:War3 贴图预览:清理工作区缓存(仅清理当前工作区的 preview-cache/workspace/... 相关缓存)。
  • 打开悬浮资源所在目录(仅本地资源):默认快捷键 Ctrl+Alt+E(可在 VS Code “键盘快捷方式”里重绑)。
  • 选择资源并插入路径:War3 贴图预览:选择资源并插入路径。
    • 默认快捷键:Ctrl+Alt+R
    • 需要开启设置:war3TexturePreview.enableResourcePicker=true
    • 仅扫描工作区内:tga / blp / mdx / mdl(不包含 png)
    • 选择器内支持:目录层级/全部切换、类型过滤、模型分类筛选(默认关闭;开启后才遍历解析)
    • 确认选择后:把“最短且不会被更高优先级目录误解析”的路径插入到当前光标处;并自动关闭本次打开的预览页。

路径解析规则

路径分隔符会自动规范化:\ → /(用于匹配/解析)。

贴图(PNG/TGA/BLP)

  1. 绝对路径:直接读取本地文件。
  2. 相对路径:按以下根目录顺序尝试拼接:
  • 工作区根目录
  • searchPaths(相对项按工作区根目录拼接)
  1. 本地未命中且启用 MPQ(enableWar3Mpq=true):回退到 MPQ 解析(解压到 mpq-cache/ 后返回磁盘路径)。

模型(MDX/MDL)与依赖资源

  • 模型文件解析顺序:

    1. 绝对路径
    2. configRoots:工作区根目录 + searchPaths + .vscode/<searchPath>(仅对模型/依赖生效)
    3. 工作区兜底搜索(modelWorkspaceSearch)
    4. MPQ 回退(enableWar3Mpq=true)
  • 模型依赖资源解析优先级(modelResourceResolvePriority 可配置):

    1. modelDir
    2. configRoots
    3. workspaceEvidence
    4. mpq

模型尺寸换算(W/D/H/R/2R)

模型预览右侧面板会显示并可编辑一组“尺寸 / 缩放”数据,用于把模型在 1x 缩放下的占用范围换算成游戏里可直接使用的缩放值。

数据来源

  • 优先读取模型文件(MDX/MDL)内置的 Extent(min/max) 作为 静态包围范围。
  • 这是模型作者写入的范围数据,通常用于裁剪/预览等;少数模型可能偏大/偏小。
  • 该范围是“静态”的:不随动画帧实时变化。

字段定义

以下均以 模型 1x 为基准:

  • W(宽):X 轴跨度,W = maxX - minX
  • D(深):Y 轴跨度,D = maxY - minY
  • H(高):Z 轴跨度,H = maxZ - minZ
  • 2R(水平直径):2R = max(W, D)
  • R(水平半径):R = 2R / 2 = max(W, D) / 2

其中 R/2R 是为了更贴近魔兽 3 常见的“范围半径”口径(例如技能 AoE 半径、距离阈值等)。

换算规则(与游戏缩放接口一致)

模型统一缩放时(scale 同时作用于 X/Y/Z),各方向尺寸按比例变化:

  • W' = W * scale
  • D' = D * scale
  • H' = H * scale
  • R' = R * scale
  • 2R' = 2R * scale

因此你可以反推缩放:

  • 目标水平半径 R_target:scale = R_target / R_1x
  • 目标水平直径 2R_target:scale = 2R_target / (2R_1x)
  • 目标宽/深/高:scale = W_target / W_1x(或 D_target / D_1x、H_target / H_1x)

在游戏中如何使用(示例)

把预览页反推得到的 scale 填到对应的“模型缩放”接口即可:

  • 特效(Special Effect):
set e = AddSpecialEffect("path\\to\\model.mdx", x, y)
call EXEffectMatScale(e, scale)
  • 单位(Unit):
call SetUnitScale(u, scale, scale, scale)

作者

  • 小为 ( https://github.com/Syh1906 )

交流讨论

  • QQ交流群: 1070966060
  • 欢迎进群交流扩展插件使用反馈

特别鸣谢

  • 鸣谢:感谢 sebyx07 ( https://github.com/sebyx07/stormlib-node ) 仓库提供支持。
  • 鸣谢:感谢 flowtsohg( https://github.com/flowtsohg/mdx-m3-viewer )仓库提供支持。
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft