这里小白一个,首先可以先看一下视频,如果做不出来再看本文,因为本文只是指出了要注意的细节,此外如有错误也欢迎指出和讨论..
https://www.youtube.com/watch?v=9airvjDaVh4&list=PLj6G-3M0NXNXGGPSPXBTC1H04NPxk96Eo&index=18&t=0s
1.页面布局
blender烘焙需要用到shader、UV editor以及3dviewport界面,将界面布置好更有利于操作
2.烘焙前的准备
烘焙需要准备三点
- 一个全新的UV贴图
- 图像用来保存烘焙机结果
- 一个Image Texture节点用来指定导出到的图像
1.创建新图像
首先要创建一个新的图像,要注意的是这个图像要进行save as和save两步操作,让其保存在电脑的硬盘上,否则最后的烘焙会报"circular depandancy..."的信息,这个信息就是没找到需要导出的图像而导致图像载入到自己身上。原因大概是因为,不这样做,blender会无法检测到新图像。
2.UV展开
进行UV展开前,先新建一个UV贴图,并将该新贴图选定。
然后进入edit模式,按u键进行UV展开。
UV展开这里因为是高模,可以选择unwrap或者smart UV project。二者的区别在于,smart UV project可以进行个性化的展开。此外,低模也可以选择lightmap pack。
然后就可以发现,图片上出现了UV展开的节点,其实这里这些UV节点就保存到了刚刚新建的UV贴图里面了。
3.node节点设置
之后在每个材质的shader界面里,新增一个image texture节点,该节点的图片就指向你要导出的那个图片。
注意:
- 该节点要给每个要导出的材质添加
-
该节点必须要激活(active)!!!,也就是有白色边框
因为这样子操作非常麻烦,所以我写了一个脚本给每个模型的每个材质都添加这个节点,只要白get后的图片名称改成自己的即可。
for obj in bpy.data.objects:
for material in obj.data.materials:
tochangeNode = material.node_tree.nodes.new("ShaderNodeTexImage")
tochangeNode.image = bpy.data.images.get("kokoro2") //change name here
tochangeNode.location = Vector((377,-141))
//active the node
material.node_tree.nodes.active = tochangeNode
3.开始烘焙
烘焙必须在cycle下进行
比较常用的烘焙模式为combined,diffuse,normal模式。
combined模式就是讲光影效果、阴影效果等等全部烘焙到贴图上。
diffuse可以选择只烘焙材质的颜色。
normal是法线贴图,可以给贴图丰富细节的同时又不消耗性能。
这里要导出到unity中,所以选择diffuse和normal模式
1.diffuse
按下面的选项勾选,margin在贴图烘焙重叠时,可以改的小一些。此外如果是多个物体烘焙需要勾选selected to active,我这里用ctrl+j合并了物体,所以不能勾选。
2.normal
因为要新建个图片烘焙,所以这里用另一个脚本更改节点的图片名称
for obj in bpy.data.objects:
for material in obj.data.materials:
tochangeNode = material.node_tree.nodes[-1]
tochangeNode.image = bpy.data.images.get("kokoro_normal")
最后烘焙结束后,要记住点击save保存,烘焙才会生效
4.其他设定
复制刚才的模型,并且删除所有模型,将刚刚的贴图制作成材质来测试一下烘焙效果。发现hair、eyelash、eyeball都全黑了。
再看贴图,这是因为本该透明的部分被黑色填充的结果。这个问题可以用gloss烘焙来解决。
按照之前的步骤,再进行gloss烘焙,得到的就是alpha通道的结果。白色代表要显示的部分,黑色的代表透明部分。
打开ps将diffuse和gloss贴图导入。
给diffuse贴图添加一个蒙版,然后点击gloss贴图ctrl+a全选,ctrl+c复制,按住alt键点击多出来的蒙版,然后ctrl+v粘贴。最后就会得到两者合并的结果
然后到处PNG格式图片(PNG支持alpha通道)
回到blender,如图所示设置,即可完成结果
5.导入unity
将模型导出为fbx格式,如图所示勾选,即可将材质放入导出的fbx文件中
在unity中打开,但发现人物的眼睛、睫毛、头发仍然存在刚才的问题。
这是因为render mode中选择了opaque模式,这个模式是不考虑alpha通道的,之后选择cutoff模式即可。
不过这种模式下,发现睫毛和头发部分表现效果并不理想。解决方法是将这两个部分单独拎出来烘焙,然后选择fade效果。此外如果眼睛部分选择transparent效果,还可以实现眼睛的反光。
参考:
https://blender.stackexchange.com/questions/44525/cycles-bake-script-error-circular-dependency
https://blender.stackexchange.com/questions/47052/what-is-the-difference-between-unwrap-and-smart-uv-project
https://blenderartists.org/t/texture-bake-alpha/407849/5