[{"data":1,"prerenderedAt":258},["ShallowReactive",2],{"\u002F2020-04-11-blender-ue4-pipeline-note":3},{"id":4,"title":5,"body":6,"date":234,"description":12,"extension":235,"meta":236,"navigation":239,"path":251,"seo":252,"stem":253,"tags":254,"__hash__":257},"blogs\u002F_legacy\u002F2020\u002F2020-04-11-blender-ue4-pipeline-note.md","Blender到UE4笔记",{"type":7,"value":8,"toc":217},"minimark",[9,13,16,20,25,28,35,38,42,45,57,60,63,66,69,80,89,92,95,98,101,112,115,118,121,127,130,133,136,139,143,152,158,161,166,170,179,185,188,192,195,198,201,206,209,214],[10,11,12],"p",{},"Blender导出FBX到UE4的路径有些常见的问题，每次碰到都重新去找原因造成时间浪费，于是这边记录下。",[10,14,15],{},"当前UE4版本为UE4.25.0；当前Blender版本为Blender2.82a。\nBlender最近升级到2.8了，有不少变化，不过一些基本的操作还是一样的。",[17,18,19],"h2",{"id":19},"导出导入",[21,22,24],"h3",{"id":23},"smooth-group","Smooth Group",[10,26,27],{},"导入的时候提示没有SmoothGroup，需要修改FBX的默认导出选项",[10,29,30],{},[31,32],"img",{"alt":33,"src":34},"clip_image001","\u002Fwp-content\u002Fuploads\u002F2020\u002F04\u002Fclip_image001_thumb.png",[10,36,37],{},"这样就不会提示了",[21,39,41],{"id":40},"bind-pose","Bind pose",[10,43,44],{},"导入UE4时提示",[46,47,48,51,54],"blockquote",{},[10,49,50],{},"The following bones are missing from the bind pose:",[10,52,53],{},"This can happen for bones that are not vert weighted. If they are not in the correct orientation after importing,",[10,55,56],{},"please set the \"Use T0 as ref pose\" option or add them to the bind pose and reimport the skeletal mesh.",[10,58,59],{},"按照提示直接勾选Use T0 as ref pose，就不会提示了，结果没有明显变化。",[10,61,62],{},"是否有隐藏问题还不是很确定。",[21,64,65],{"id":65},"贴图丢了",[10,67,68],{},"这个是Blender2.8的新坑，主要是材质节点的组织方式变了。",[10,70,71,72,79],{},"从[",[73,74,78],"a",{"href":75,"rel":76},"https:\u002F\u002Fdeveloper.blender.org\u002FT68399",[77],"nofollow","官方社区的讨论","]来看，这个似乎不是BUG而是一个特性。",[10,81,82,83,88],{},"2.8的[",[73,84,87],{"href":85,"rel":86},"https:\u002F\u002Fwiki.blender.org\u002Fwiki\u002FReference\u002FRelease_Notes\u002F2.80\u002FPython_API\u002FModules",[77],"API变更记录","]里面可以看到，导出使用的帮助类为bpy_extras.node_shader_utils。对于导出失败的材质，实际使用这个helper去尝试获取材质，就会发现无法正确的获取到贴图信息。主要原因是一些复杂的材质使用逻辑导致的，对于只是将Blender当作文件转换工具的用户而言就有些困扰了呢。",[10,90,91],{},"暂时没有什么特别好的解决方案，对于没有特别必要升级2.8的情况可以回到2.79……",[21,93,94],{"id":94},"贴图扭曲",[10,96,97],{},"模型导入后，部分贴图效果有微妙的扭曲感。在一些部位能明显的看到贴图出现了偏移。在对Blender内的UV进行查看后，发现在整个路径中，UV的值过大了。虽然说在理论上这并不会造成问题，但是实际是在导入UE4后出现了较为明显的UV偏差。",[10,99,100],{},"详细的发生原因没有时间去细究，不确定问题是在Blender侧还是UE侧，通过使用脚本在Blender中直接将UV全部裁剪到0~1的范围内解决了问题。",[102,103,108],"pre",{"className":104,"code":106,"language":107},[105],"language-text","import bpy\n\nfor ts_mesh in bpy.data.meshes:\n    print(ts_mesh.name)\n    for ts_uvlayer in ts_mesh.uv_layers:\n        print(ts_uvlayer)\n        for ts_data in ts_uvlayer.data:\n            ts_uv = ts_data.uv\n            ts_uv.x = ts_uv.x % 1.0\n            ts_uv.y = ts_uv.y % 1.0\n            print(ts_data.uv)\n\n\n","text",[109,110,106],"code",{"__ignoreMap":111},"",[21,113,114],{"id":114},"光照模式下出现断层",[10,116,117],{},"在UnLit模式下模型正常，光照模式下出现一个明显的断层。",[10,119,120],{},"这种时候可以对GBuffer进行可视化来排查问题",[10,122,123],{},[31,124],{"alt":125,"src":126},"image","\u002Fwp-content\u002Fuploads\u002F2020\u002F04\u002Fimage_thumb-4.png",[10,128,129],{},"这次遇到的是法线贴图的处理方式有问题，能够明显看到在World Normal的可视化里面有一个断层，导致Detail Light那边同样出现了断层。",[10,131,132],{},"问题是法线贴图的混合，法线贴图不能通过简单的加法或者乘法来混合，UE4有提供混合节点BlendAngleCorrectedNormals，直接使用即可~",[17,134,135],{"id":135},"材质节点",[10,137,138],{},"Blender和UE4的材质节点有很多不同的地方，需要至少保证一些数学计算是一致的",[21,140,142],{"id":141},"rgb-to-bw","Rgb to bw",[10,144,145,146,151],{},"似乎是在做灰度转换的样子，[",[73,147,150],{"href":148,"rel":149},"https:\u002F\u002Fdocs.blender.org\u002Fmanual\u002Fen\u002Flatest\u002Fcompositing\u002Ftypes\u002Fconverter\u002Frgb_to_bw.html",[77],"官方Rgb_to_bw文档","]没有给出详细的计算方式。到源码里面的utils.py找到了",[102,153,156],{"className":154,"code":155,"language":107},[105],"def rgb_to_bw(r, g, b):\n    \"\"\"Method to convert rgb to a bw intensity value.\"\"\"\n    return 0.35 * r + 0.45 * g + 0.2 * b\n",[109,157,155],{"__ignoreMap":111},[10,159,160],{},"参照着实现",[10,162,163],{},[31,164],{"alt":125,"src":165},"\u002Fwp-content\u002Fuploads\u002F2020\u002F04\u002Fimage_thumb-3.png",[21,167,169],{"id":168},"invert","Invert",[10,171,172,173,178],{},"按照[",[73,174,177],{"href":175,"rel":176},"https:\u002F\u002Fdocs.blender.org\u002Fmanual\u002Fen\u002Flatest\u002Frender\u002Fshader_nodes\u002Fcolor\u002Finvert.html",[77],"Invert Node","]的描述，就是反转，但是有一个factor的参数，暂时采用svm_invert.h的实现",[102,180,183],{"className":181,"code":182,"language":107},[105],"ccl_device float invert(float color, float factor)\n{\n  return factor * (1.0f - color) + (1.0f - factor) * color;\n}\n",[109,184,182],{"__ignoreMap":111},[10,186,187],{},"没有配置factor的话就是OneMinus",[21,189,191],{"id":190},"mix","Mix",[10,193,194],{},"Mix等效于UE4的Interp节点。",[17,196,197],{"id":197},"功能差异",[10,199,200],{},"这次遇到一个Blender和UE4之间节点上的表现差异导致的误操作，在UE4里面，材质节点是这样的：",[10,202,203],{},[31,204],{"alt":125,"src":205},"\u002Fwp-content\u002Fuploads\u002F2020\u002F04\u002Fimage_thumb-5.png",[10,207,208],{},"这里面RGB和下面的R\\G\\B是指向同样的值的，而在Blender里面，如果有这样的节点",[10,210,211],{},[31,212],{"alt":125,"src":213},"\u002Fwp-content\u002Fuploads\u002F2020\u002F04\u002Fimage_thumb-6.png",[10,215,216],{},"这个时候Color和R\\G\\B其实是完全不同的东西，如果在进行材质功能映射的时候一定不要按照UE4这边的习惯去理解~",{"title":111,"searchDepth":218,"depth":219,"links":220},2,3,[221,228,233],{"id":19,"depth":218,"text":19,"children":222},[223,224,225,226,227],{"id":23,"depth":219,"text":24},{"id":40,"depth":219,"text":41},{"id":65,"depth":219,"text":65},{"id":94,"depth":219,"text":94},{"id":114,"depth":219,"text":114},{"id":135,"depth":218,"text":135,"children":229},[230,231,232],{"id":141,"depth":219,"text":142},{"id":168,"depth":219,"text":169},{"id":190,"depth":219,"text":191},{"id":197,"depth":218,"text":197},"2020-04-11","md",{"layout":237,"status":238,"published":239,"author":240,"author_login":242,"author_email":243,"wordpress_id":244,"wordpress_url":245,"date_gmt":246,"excerpt":247},"post","publish",true,{"display_name":241,"login":242,"email":243,"url":111},"风铃","flinkor","flinkor@foxmail.com",2831,"\u002F?p=2831","2020-04-11 11:51:28 +0000",{"type":7,"value":248},[249],[10,250,12],{},"\u002F2020-04-11-blender-ue4-pipeline-note",{"title":5,"description":12},"_legacy\u002F2020\u002F2020-04-11-blender-ue4-pipeline-note",[255,256],"UE4","Blender","rStqfgrMz4Rim14QEzNGZDIhyjXIBdOStHTnvMtMDcM",1788763177503]