专栏/我在bowlroll投稿的MMD场景全被下架,原因竟是... (顺带mmd自动一键渲染教程)

我在bowlroll投稿的MMD场景全被下架,原因竟是... (顺带mmd自动一键渲染教程)

2021年06月23日 10:51--浏览 · --点赞 · --评论
粉丝:3874文章:3

明天是我要配布新模型的日子,却在码这段字的今天发生了大无语事件,

专门开一个专栏来记录这件事好了,顺便做一个MMD自动渲染教学,

教学完全保姆式,尽量写的好玩些,大概会很尬233

(明明是个低技术力的玩意x)


我是一个mmder,会在bowlroll投稿一些3D的模型与场景,

但对新手来说会发生一件哭笑不得的事情,开开心心跑到b碗(bowlroll)

从b碗里下载宣传图十分绚丽好看的场景,兴奋的导入mmd中一看!!



场景效果异常简陋!!

什么特效都没有!!

和宣传图完全不符...



原来3D场景需要复杂的渲染和配置材质,才能变得像“卖家秀”中一样好看

对新手mmder来说,很难直接渲染出好看的场景,而就算对老手mmder来说,

导入一个场景的材质,打光,都十分麻烦,地板要贴上地板的材质,

墙壁要贴上墙壁的材质,是不是感觉十分繁琐与重复?

大部分mmder每一次制作mmd时都要重复这些相同的过程,

感觉十分繁琐



于是我喜爱研究各种mmd中便利的技巧,如配置好一次材质渲染后,

下一次直接导入配置文件,即可马上恢复上一次配置好的材质,

该怎么做到这一点呢?先从普通的渲染讲起吧!


最基础的开始~

准备好模型文件和特效fx,将模型pmx与特效fx文件放在同一个文件夹中

或者特效fx文件放在PMX所在文件夹中的子文件夹里,相对路径能找到的地方

总之要放在一起,如果没有把模型和特效放在一起,文件夹名称一变,就读取不了啦!

(相对路径是什么自己百度!!记得常用./和../)从右上角分配特效中打开mme特效面板,

右键模型选择展开,就能看见下面所有的材质,此时一个一个添加不同材质吧

添加一堆材质……好麻烦!!!

!终于把材质添加好了!!那么怎么将这个配置保存成预设呢?

首先点击模型.pmx,让模型这一栏选中变蓝(重要,别忘了选中模型呀!!)

然后左上角文件-按模型单位保存模型,就可以单个模型保存出一个emd文件

如果没有按模型单位保存的话...会变成以pmm全体模型的工程为单位保存吧...


就决定保存在和模型相同的目录~因为好找.

还真是完全的保姆式教学...

既然学会保存了,是不是也学会读取了呢?很简单,

只要从这里打开刚刚保存的文件就可以


之前配置好的预设fx就被轻松读取了~

但这种方法还是要从右上角的mme材质面板中打开emd配置文件读取,

好像还是很麻烦耶~追求研究mmd到便利极致的我怎么能停下脚步呢——



能不能一载入模型或场景,就让它自动读取fx?

能!方法很简单,只要你修改命名,把刚刚保存的emd配置文件的

文件名更改为和pmx相同的名称,并当前文件夹名称是纯英文,

一载入pmx,fx就自动读取好了!

命名要相同哦!其实还有White[XXX.fx].pmx的方式,但只能加一个fx,不太好用

恭喜你,你已经学会怎么给一个pmx添加自动渲染了。


有人可能会问Ray怎么办,又要加Main栏,又要加MaterialMap栏,

那只要分别保存俩个栏的emd,到时候在ray里分别读取即可~

流程如图,都是差不多的,以后记得保存emd,不要再重复加材质咯


但别急!但你还没学会怎么制作一个自动渲染的pmm格式mmd工程文件,

接下来,教你怎么打开一个mmd的工程,里面就是配置好的场景渲染效果吧!


可能有人会疑惑,mmd怎么可能做相对路径工程?

没错,mmd还真的支持相对路径,但是需要一个判定相对路径的契机,那就是

名称被命名为 “UserFile” 的文件夹,那么如何利用这个特性呢?


首先当然是准备好文件和文件夹

1.创建文件夹(场景名称命名随意)

2.在场景文件夹中创建文件夹 命名为 UserFile

3. 在UserFile文件夹中放入人物,场景,滤镜x文件

但以我个人的习惯,还是喜欢再创建文件夹进行分类:

创建Model文件夹,里面放入人物模型文件夹,与场景模型文件夹

Model中人物和场景都像上面一样配置成一载入,fx渲染就生效的那种.


Accessory文件夹中里面放入mme特效文件夹,如XX滤镜,ScreenTex,SvSSAO等


但是特效是有限制的,那就是不能动mme面板,只能是直接载入就生效的x文件特效.

如果你要动mme面板中的内容,如调节部分材质钩子与fx,那现在这里就不行(下面会解决)


4.打开新建工程的mmd,读取场景,人物,特效x文件,

配置好画面效果(注意模型与附件描画顺序)保存pmm

重点来了

把pmm保存到命名为 UserFile 的文件之中

现在这个文件夹应该这样的:

一般我命名为Stage.pmm

恭喜你,你完成了基础的pmm工程相对路径封包,

但是别高兴的太早,你发现更改一下场景命名,mme就会出错,

因为你会发现Stage.pmm旁边,有一个和pmm相同名称的Stage.emm文件,

还记得上面是按模型文件保存XX的吗?其实这个emm文件就是工程版本的emd,

但现在为了做一键渲染的工程,这个emm文件是不需要的,只要删除这个emm文件,

直接运行pmm文件,里面就是配置好的内容啦!


其实在右上角mme插件中选择不自动保存配置文件的话,

就不会跟着一起保存出这个emm文件了,但为了以防翻车,

还是,每次保存后手动删除emm文件比较好,别问为什么...

小知识:加了很多fx后关闭自动更新,不监视fx文件的mmd能大幅提高帧率

现在你可以再在pmm工程中添加一些小彩蛋,

给人物摆个姿势或小动画,给场景k帧加一些动态,k个好看的镜头保存,

之后发给别人,打开pmm文件,就是有一个漂亮渲染,fx全配置好的工程啦!

当然带控制器的x特效也可以,比如ikBokeh景深,用控制器设置成

自动聚焦模式,就能很方便的读取带景深和渲染的场景了


如此例,发给别人后,别人一打开pmm工程,就是这个画面,

是不是谜之很震撼,有种Sketchfab的感觉

原理都一样

如此一来,pmm就会自动读取pmx和x文件,pmx会因为有emd自动读取fx渲染,

而x文件滤镜mme也因为会自动挂载相同名称的fx而生效


但是这有一个致命的缺点——无法改动mme面板中的内容,

因为你会把emm文件删掉,做到每次读取都重新配置mme路径,

因此不能调整mme面板中的任何fx和钩子...

也就是说,不能用Ray!!NOOO——


这确实是困扰我很久的一个问题,mmd竟然能以这样奇葩的方式支持了相对路径,

但mme插件保存出来的emm配置文件,竟是不支持任何相对路径的...


为了让自动渲染能用上需要调节控制面板的mme,我开始想各种办法,

于是得到了俩个方法,方法1方法2,这俩个方法也可以同时使用,

但最佳最便利的方法其实是方法2,想看的建议直接跳到方法2.


方法1有很大缺点,但想看也可以先看看,

因为方法1不能根据材质设置不同fx.

方法1:通过修改fx文件,让某些模型默认挂载不同的fx

当你载入一些x格式的mme特效后,mme面板就会多出该特效的调节栏,

第一排会有谜之灰色代码,那就是用于设定初始挂载什么fx

比如这个SvSSAO,我想修改NormalMapRT栏中默认挂载fx的状态

代码痴一脸懵逼

通过搜索关键词DefaultEffect,发现在SvSSAO.fx的407行开始,

可以设定x和pmx的默认状态

=xxx.fx为此栏默认挂载该fx

=hide为隐藏,默认不勾显示钩子

=none为不隐藏但不添加任何fx

在这里,我只要把可能对SvSSAO效果会造成干扰的物件进行屏蔽隐藏即可,

所以我设置了一堆的=hide,这样一读取这些名称的模型,

SvSSAO就能自动屏蔽这些不需要的模型了


Ray也是用此设定DefaultEffect

给天空球默认添加一个none环境光,和给材质添加一个material_2.0材质球的

在104行可进行修改

原来环境光的DefaultEffect藏在.\ray-mmd-1.5.2\Shadertextures.fxsub中,

默认用相对路径指定了这个skylighting_none.fx 并把其他物体设置为无环境光

学学怎么写相对路径后,可以在这里添加特定名称的pmx设定

让ray自动挂载想要的天空球环境光


当然除了环境光外,下面还有其他的比如MaterialMap材质栏,

SSAOMap缝隙阴影栏,PSSM阴影显示栏等多处的DefaultEffect设定

如果你让ray载入模型后自动挂载一个卡通材质fx,也是可以在这修改与添加啦!

但因为方法1只能对每个模型单独进行设定,不能根据材质分别设定fx,

所以还是不能用于给ray加材质,而且很麻烦!我绕了很大的弯路呀qwq


赶快抛弃这个繁杂的方法1,看看方法2吧.

方法2就是——编写一个读取当前目录并修正mme路径的小程序~

也就是对emm文件中的路径信息动刀,这是我的想法:


准备好一个等待修改mme目录的配置目录用emm文件

把小程序放在和pmm相同的目录中,首先让小程序检测当前在什么目录,

把当前的目录信息添加到配置用的emm文件中,保存为和pmm命名相同的emm文件

这样一来,即可完成修正mme路径了xd

(P.S.不建议emd自动加fx那招和这个一起用,虽然也没啥太大问题...

但你配置好emm之后,后续才添加emd会有问题(?))


这是小程序bat中的内容


把以下这些代码保存到txt文本(GB2312编码),把txt格式尾名改为bat,

就是能运行这些指令的bat批处理小程序了:


@echo off

color f0

title MME FIX

echo Detecting drive letter and path for current location:

echo 正在检测当前位置的盘符和路径:

echo Start repairing Mme path:

echo 即将开始修复mme路径:

echo ...Loading files...

echo ...读取文件中...


set "currentpath=%~dp0"

if "%currentpath:~-1%" equ "\" set "currentpath=%currentpath:~,-1%"

cd /d "%currentpath%"


set "txtfile1=%currentpath%\MME.emm"

set "txtfile2=%currentpath%\Stage.emm"

set "oldword=--Waiting for edit path--"

set "newword=%currentpath%"


echo ...Repair path...

echo ...修正路径中...


(echo;txt1=WSH.Arguments^(0^):txt2=WSH.Arguments^(1^):ow=WSH.Arguments^(2^):nw=WSH.Arguments^(3^)

echo;enc="GB2312"


echo;Set stream=CreateObject^("ADODB.Stream"^)

echo;stream.Type=2:stream.Mode=3

echo;stream.Charset=enc

echo;stream.Open^(^)

echo;stream.LoadFromFile txt1

echo;stream.Position=0

echo;text=stream.ReadText^(^)

echo;text=replace^(text, ow, nw^)

echo;stream.Position=0

echo;stream.WriteText text

echo;stream.SaveToFile txt2, 2)>"%tmp%\v.v"


if not exist "%txtfile1%" (echo;"%txtfile1%" not found&goto end)

for /f "delims=" %%a in ("%txtfile2%") do md "%%~dpa" 2>nul

cscript -nologo -e:vbscript "%tmp%\v.v" "%txtfile1%" "%txtfile2%" "%oldword%" "%newword%"

:end


for /l %%i in (1,1,2000) do echo %%i >nul


echo MME Repair complete.

echo 修复mme路径已成功.

pause

exit



另外一边,当然是要准备好替换目录信息的emm文件,

复制出正常保存出来的emm文件更名为MME.emm,用文本打开,

把盘符到\UserFile为止的内容都全部替换为上面bat设定好的文本内容:

“--Waiting for edit path--”

别替换错内容了哦!!注意\的位置和空格

以后只要一运行bat程序,就能从MME.emm文件中配置出正确路径的Stage.emm了

但是打包一键渲染后发给别人时要记得删除哦,虽然不删也没啥事x

于是我用这个原理,制作了不少一键渲染ray渲的场景

打包时记得写好完整的借物表,以及注意不能二配的素材哦




但是。。。



翻车了,b碗把我的ray自动渲染场景都下架了...

...原因就在那个小程序

因为我考虑到如果有人把场景解压在了C盘,系统盘,系统有关目录中,

bat小程序会因为防火墙,没有管理员权限修改保存emm文件而失效...

为了防止这件事情的发生,我也想了对策,

既然都做保姆擦屁股了!那就要擦到底X


我想了一个方法,把bat封包成一个运行时自动需求管理员权限的exe文件,

当有人使用bat版本因为没权限而失效时,可以用能获取管理员权限的exe版本解决,

这样一来,就不怕修正mme路径失效了!


但正因我给bat程序加壳封包,导致了一部分杀毒软件的误报,

我的投稿中收到了这样的评论:

我是否加了恶意病毒,是否是恶意软件分销商,

也请阅读这篇专栏的人自行判断。


我投稿了一年的自动渲染,四个自动渲染场景都被举报不放过,我天美的谢谢你

打包一次一个自动渲染的场景,又要建模,又要做材质,又要配置特效,又要封包,

制作和配布都来之不易,其中费劲了我心血研究怎么让他人使用更加便利,

却因此搬起石头砸了自己的脚

昨晚我在紧急联系了bowlroll官方推特,

b碗经理果然解释是因为接到了举报,并且误Northon确实报毒,

我表达了我的愤怒,争取到了把投稿文件恢复到未公开的状态

但现在还没有回复不清楚能否重新公开我的场景


我费尽心思搞自动渲染的目的大概是气死我自己吧


---------     ---------


现在码这段字已经是第二天,收到了b碗回复:

如果去除了病毒,可以重新公开,b碗官方也会重新对文件进行检测,

虽然是喜事,但看来官方依然认为这是一个病毒,让我感觉很难过

我之后还是会坚持自己的清白



总之终于码完了我所知的mmd自动渲染全部方法,你学废了吗?

这么受苦受累的保姆怎么能只有我一个人当呢,带上大家一起受苦受累才好玩啊

顺便贴一下我的b碗账号,之后会重新公开这些场景

https://bowlroll.net/user/182602


投诉或建议