#author("2026-10-05T18:00:01+09:00","","")
* MME概要 [#za1168bf]
&size(13){''MikuMikuEffect 的机制与导入方法''};

#contents

** 什么是 MME [#m9c97f67]

''MME(MikuMikuEffect)''是用于''替换 MMD 渲染''的''插件基础''。
由 Soboro 氏发布。

''MMD 标准渲染''是''偏卡通且固定不变''的。
导入 MME 后,即可''使用任意着色器进行渲染'',
''表现力将得到飞跃式扩展''。

|~项目|~内容|
|名称|MikuMikuEffect|
|作者|Soboro 氏|
|定位|''由 MMD 本体加载的追加模块''|
|着色器语言|''HLSL''(DirectX 的 Effect 文件)|
|文件格式|.fx|
|要求|''Shader Model 3.0 以上''的 GPU|
|现状|''0.37 系作为最终版本''被广泛使用|

** 会带来哪些变化 [#l5dea5cf]

*** 没有 MME [#f3775ef4]

|~项目|~内容|
|渲染|MMD 标准的卡通渲染|
|阴影|自阴影(分辨率固定)|
|发光|无|
|反射|仅球面贴图|
|背景|保持原样|

*** 有 MME [#g23c15c9]

|~项目|~内容|
|渲染|''任意着色器''(PBR、水彩、赛璐璐风格等)|
|阴影|''高品质阴影''(SSAO、软阴影)|
|发光|''Bloom、Glow''|
|反射|''环境贴图、折射''|
|背景|''景深、调色、雾''|

> '''比喻''':''MMD 标准是「涂色套装」'',
> ''MME 是「全套颜料 + 画材店」''。
> 由此''可以自行决定画什么、怎么画''。

** 导入方法 [#rc281006]

*** 前提 [#p24d9699]

''MME 无法单独运行''。''需要 MMD 本体''。

*** 步骤 [#t9ebde39]

+ 获取 MME 压缩包
+ 将其内容''解压到与 MMD 本体相同的文件夹''
+ 确认 ''MikuMikuEffect.x'' 位于''与 MMD 可执行文件同一层级''
+ 启动 MMD,确认''「特效」标签页''为''可用状态''
+ 将各个 ''.fx'' 放置到''合适的文件夹''

*** 文件夹结构示例 [#f9e0921e]

#code(){{
MMD/
 ├─ MikuMikuDance.exe
 ├─ MikuMikuEffect.x          ← 这是 MME 本体
 ├─ effects/                  ← 放置 .fx 的位置(示例)
 │   ├─ Ray-MMD/
 │   ├─ AutoLuminous/
 │   ├─ ExcellentShadow/
 │   └─ …
 └─ (模型、动作等)
}}

> '''重要''':''MME 本体与 .fx 是两回事''。
> MME 本体是''「读取并应用 .fx 的机制」'',
> 而''具体外观''由''各个 .fx 决定''。

** 特效的应用方法 [#p5968803]

在 MMD 的''「特效」标签页''中进行设置。

*** 应用对象 [#k53c8d98]

|~对象|~内容|
|''模型''|仅应用到''该模型''|
|''饰品''|仅应用到''该饰品''|
|''舞台''|应用到整个舞台|
|''画面''|应用到''整个画面''(后期特效)|

> '''区分很重要''':''应用到「画面」的特效''
> 会针对''最终图像''进行处理。
> 相反,''应用到「模型」''时,只有''该模型的渲染''会发生变化。

*** 分配操作 [#ee205ccc]

+ ''选择''模型(或饰品)
+ 打开''「特效」''标签页
+ 选择''对象''(模型 / 饰品 等)
+ 选择 ''.fx'' 并''分配''
+ 按需设置''显示''(子集)

*** 特效顺序 [#sa297bd4]

指定''多个特效的应用顺序''。
''顺序不同,结果也会不同''。

#code(){{
例:
  1. ExcellentShadow    … 阴影
  2. SvSSAO             … 环境遮蔽
  3. AutoLuminous       … 发光
  4. 调色               … 最后
}}

> '''设计原则''':''「改变形状的」放在前面'',
> ''「改变颜色的」放在后面''是基本原则。
> ''反过来则无法得到预期结果''。

** MME 的机制 [#p803624b]

理解''内部发生了什么'',
有助于''排查故障''。

#code(){{
1. MMD 构建场景(模型、材质、骨骼)
2. 渲染各个对象时,MME 进行介入
3. 向已分配的 .fx 指示「渲染此材质」
4. .fx 根据 MMDPass 分支处理
5. 渲染结果写入帧缓冲
6. 分配到「画面」的 .fx 处理最终图像
}}

*** 什么是 MMDPass [#f4838eae]

它是''MME 传递给 .fx 的「当前正在渲染哪个阶段」的信息''。

|~Pass|~含义|
|Object|''本体渲染''|
|Object_T|本体(带贴图)|
|Zplot|''写入 Z 值''(阴影预处理)|
|Shadow|''阴影渲染''|
|Edge|''轮廓线''|
|Edge_T|轮廓线(带贴图)|
|Object_SS|''自阴影用''|
|Zplot_SS|自阴影用 Z 值|
|Shadow_SS|自阴影|

''在自制着色器中''通过该 Pass 进行分支处理。
详见 [[特效编写入门]]。

** 子集(显示) [#z3cb0830]

这是''为每个材质分配不同特效''的功能。

#code(){{
模型整体 → 着色器 A
  ├─ 材质「肌肤」   → 着色器 B
  ├─ 材质「服装」   → 着色器 A
  └─ 材质「头发」   → 着色器 A
}}

''用途'':''仅让眼睛使用不同着色器''、''仅对肌肤做单独处理''等。

** 常用特效的分类 [#f821316c]

|~分类|~代表例|~效果|
|''光照''|Ray-MMD|''基于 PBR 的光照表现''|
|''阴影''|ExcellentShadow2|''高品质阴影''|
|''环境遮蔽''|SvSSAO|''沟壑阴影''|
|''发光''|AutoLuminous4|''让明亮部分发光''|
|''景深''|ExcellentDOF|''背景模糊''|
|''抗锯齿''|Various AA|''减少锯齿''|
|''调色''|ikBokeh 等|''色调调整''|
|''水''|水面特效|''水面表现''|

详见 [[常用特效包图鉴]]。

** 运行要求 [#n3b2eb18]

''MME 依赖 GPU''。

|~项目|~要求|
|Shader Model|''3.0 以上''(必需)|
|VRAM|''256 MB 以上''(轻量)~''4 GB 以上''(重量级)|
|DirectX|''9.0c 世代的 API''|
|GPU 世代|''过于老旧的 GPU 不支持''|

> '''重要限制''':''Shader Model 3.0''
> 在 2004 年前后及以后的 GPU 上得到支持。
> 在''更早的 GPU''上,''MME 本身无法运行''。
> 另外,''重量级着色器''在''现代 GPU 上有时也无法实时运行''。

** 故障排查 [#c05a521b]

*** 画面变得全黑 [#e41656bb]

+ 检查''特效顺序''
+ 尝试移除''分配到「画面」的特效''
+ ''移除 MME''进行排查
+ 确认 GPU 是否''满足要求''

*** 分配了特效却没有变化 [#n8d38c79]

+ ''对象''是否正确(模型 / 饰品 / 画面)
+ ''子集''的指定是否正确
+ ''.fx 文件是否位于''正确位置''
+ ''该 .fx'' 是否支持对应的 MMD 版本

*** 只有模型不显示 [#lf36064c]

+ 多数情况下原因是''特效顺序''
+ 检查''子集''的分配
+ ''该 .fx 所需的贴图''是否缺失

*** 运行卡顿 [#wdcd1047]

+ ''逐个移除特效''以定位原因
+ ''降低分辨率''进行测试
+ ''重量级着色器''应以''离线渲染为前提''使用

** 以 MME 为前提的模型制作 [#q9286143]

''以使用 MME 为前提''制作模型时的注意事项:

- ''将材质名设为有意义的名称'' — 着色器有时会依据材质名分支处理
- ''正确制作法线'' — PBR 对法线很敏感
- ''整理 UV'' — 在使用法线贴图时会受影响
- ''球面贴图的设计'' — 在 MME 中有时会''被覆盖''
- ''卡通贴图'' — 部分着色器''不会使用''

> '''方针的选择''':
> 选择''「以 MMD 标准呈现」''还是''「以 MME 为前提制作」'',
> 需要在''模型的设计阶段决定''。
> 要''在两者中都达到最优''是''困难的''。

** 学习顺序 [#i60565df]

#region(MME 的学习步骤)

+ '''尝试应用现成特效''' — 从 AutoLuminous 等轻量特效开始
+ '''改变顺序并比较结果''' — 体会特效顺序的效果
+ '''尝试使用子集''' — 按材质划分
+ '''尝试阅读 .fx''' — 理解其结构
+ '''尝试改写参数''' — 修改数值并观察结果
+ '''尝试编写简单的 .fx''' — 前往 [[特效编写入门]]

#endregion

** 相关页面 [#c0508994]

- [[常用特效包图鉴]] — 常用特效一览
- [[特效编写入门]] — .fx 的编写方法
- [[渲染管线原理]] — 内部的渲染顺序
- [[渲染技巧与调色]] — 实战性的画面制作

#comment(num=5,noname,below)


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS