Ray 渲染头发透明(透光)问题

本文由 简悦 SimpRead 转码, 原文地址 www.bilibili.com

作者:安達・桜

依旧是 ray 渲小技巧 不适合纯萌新,请有一定 ray 渲基础 在使用 Ray 渲染器进行 MMD 渲染时可能经常会有些 bug 发生,这些有的是因为 ray 本身,有些则是因为操作失误。

依旧是 ray 渲小技巧

不适合纯萌新,请有一定 ray 渲基础

在使用 Ray 渲染器进行 MMD 渲染时可能经常会有些 bug 发生,这些有的是因为 ray 本身,有些则是因为操作失误。

总之,可能会有许多奇奇怪怪的问题出现,本专栏讲解一下关于模型人物出现透过头发直接看到加了自发光或者未加的眼睛问题。

首先,打开 MMD,载入模型和 ray 环境

model by SPS

先看一下默认环境的 ray 

main 栏载入默认 fx
材质栏也是默认 material_2.0.fx

好,我们来看看在这些默认环境下的模型的头发

注意看透过头发看见了眼睛!!!

很明显我们可以透过头发看见眼睛,其实平常这没有什么问题,如果镜头没有太多脸部近描,加上镜头角度不过于刁钻,这个问题完全可以忽视或者用打光掩盖。亦或者是专门保留,因为其存在本身就是为了专门呈现这种透明效果。

但是!!!

如果我们有特别需求,比如在瞳孔加上自发光。那么就会

 
这里光照强度高了点...... 为了更好表现效果

这个亚子

emmmm, 这样可是过于破坏美感和画面。万万 8 行。

下面就来教一下如何解决这个问题。

我们先找一下问题根源。

打开 pe(pmxeditor)查看一下头发纹理贴图

用 ps 打开图片

 
某些电脑默认图片查看器可能看不到要素,所以我用 ps 打开一下

观察贴图我们发现,黄色圈里有像马赛克一样的格子交错,这些是透明通道(阿尔法通道),就是有了这些,导致模型对应部分有了透明效果。而在 ray 渲染中由于延迟光照的缺陷,导致了对透明物体的不友好,会出现问题。

那么,接下来开始解决问题。

遇到物体透明,我们首先可能会想到:啊嘞嘞!透明嘛,main 栏不是有 main_ex_noalpha.fx 吗?直接不透明不就好了,这个 up 有点帅气蠢!!!

咳咳,那么我们就先换一下 main 栏看看能否解决问题。

mme 里更换头发の main

锁定头发(hair)

双击更换,也可以从 main 文件夹自行拖入 main_ex_noalpha.fx

 
已经更换为 main_ex_noalpha.fx 后 

我们发现,透光问题依旧存在,没有好转

GIF

难受 (ಥ﹏ಥ)

所以可以看出来,单纯改 main 并不行。

正确方法是,不仅要改 main, 还要修改头发的材质 Materials。

查看材质,并打开,这里 up 用的是 Notepad++ 打开 (不限于)

比较懒,直接用默认材质了。。。

在里面找到 alpha(阿尔法) 透明栏

注意是圈中的部分

接下来,将 ALPHA_MAP_FROM 3 中 3 改为 0,这样就是停止从PMX模型中的纹理插槽的图片获取透明通道,感兴趣想要深入研究这些代码,可以自己去看看 ray 的文档介绍,里面很详细。这里不过多陈述原理性知识。

进行修改

3 改为 0

改完之后记得注册保存一下,我们来看看效果

 
修改后效果图

嗯!!!问题修复了,看不到瞳孔的光芒了!O(∩_∩)O 哈哈~

这样也就 OK 了

  • 值得注意的是,更换 main, 与修改 Materials 缺一不可,上面我们已经看到了单独修改 main 的效果,下面看看只修改 Materials 中 ALPHA_MAP_FROM 3 中 3 改为 0 的效果

 
只修改 Materials 

额......... 打脸?

当然不是打脸,乍一看没有问题,但是我们换个角度

 
啊嘞啊嘞,头发消失了一部分

没错,我们会发现,与天空盒 skybox 重合的那部分有透明问题的头发隐身消失了,这就是单纯修改 Materials 的结果。

所以要想修复问题更换 main 与修改 Materials 缺一不可。切记切记!

Ps: 如有错误,欢迎各位前来指正!

评论