UE4 打包之后Mesh没有材质问题

32 篇文章 43 订阅

原创文章,转载请注明出处。

前言

UE4在打包之后有时候会遇到Material丢失的问题(都是DefuaultMaterial灰色材质),编辑器下运行是正常的,如果你也遇到了,那么可以在这里停留一下看看有没有你想要的答案。

解决方案

1>先确认资源是否被Cook

先确认你的材质是否有被引用,其实这个目的是要确认你的资源是否被Cook,也就是确认其是否被打到了你的Pak里面。
如何确认:
看下面的图片,对应转成你自己项目的Saved/Cooked/…… 目录下,找到你的那个丢失材质的名字,看看里面有没有。
在这里插入图片描述
到这里的话,你应该就能确认是不是没有被Cook了。
如果没有,按照下面的确认一下,如果有的话,就不用看这个标题了。
其实这个引用关系确认,不单适用于材质丢失,其他的任意uasset都有可能没有被cook上。
首先引擎cook资源是下面的原则
1)你要打包的umap里面所有被引用到的资源都统统会被cook,都是静态的在umap里面存好的,比如你在代码里写的动态的Load一个资源,这个时候其实是这个资源打包时候引擎是不知道引用关系的。所以需要按照下面步骤指定一下
2)指定额外要cook的目录,在项目设置Packaging->Additional Asset Directories to Cook路径数组中指定的,在这里添加上之后你的资源就会被Cook到了。
并注意挨着的下面还有一个Directories to never cook(这个路径代表指你不想cook的路径添加到这里),当然你用的的资源确认也不能在这个路径里面出现
在这里插入图片描述
如果是你资源没有被Cook,那么按照上面步骤操作完再打包看看。

2>确认你的材质所处的路径是不是有中文

在4.25引擎版本中,对中文资源支持不友好,像4.26.2就没事。比如UMG上给Image设置一张图片(中文图片或图片处于中文路径中),发现设置不上,英文的就可以。
我只是发现4.25下中文有问题,当然你确认一下你当前使用的引擎版本是不是也存在这样的问题。
如果存在的话,再看你的材质是不是在中文路径里,如果是,那么基本上将其放到英文路径里面问题就好了。

还是最好用英文,一是规范,二是减少出错找问题的时间。

3>材质的Usage守则,确认你的资源是什么类型,再去对应材质的Usage是否匹配

每个UMaterial上都有个Usage的属性数组,这个数据决定了你的材质可以被应用到哪些UE的类型上
(比如是否能应该到Skeletal Mesh骨骼网格/Instanced Static Meshes静态网格实例等等)如下
在这里插入图片描述
原理其实就是你这个材质会应用到哪些UE的类型上,如果你这个材质Usage上面没有选InstanceStaticMesh但是你用到了InstanceStaticMesh上,那么就会出现没有材质的情况。

如果你也是类似情况,不妨打开材质看一下usage这里。
在这里插入图片描述
比如下图的小汽车打包后就是没有材质的,资源也被cook了,也没有中文路径。但是就是材质属性之勾选了Skeletal Mesh,但是我是通过Brush将车刷到场景中的,这个类型其实是AInstancedFoliageActor,其实就是常用的刷植被的功能。最终对应到的是InstanceStaticMesh上,所以我在汽车的每个材质球的Usage中增加了InstanceStaticMesh的选项。再打包效果就对了。
在这里插入图片描述

4>加载外部的Pak没有材质

这片文章中介绍了加载单独的Pak内没有材质的情况

谢谢,创作不易,大侠请留步… 动起可爱的双手,来个关注再走呗
ღ( ´・ᴗ・` )比心<( ̄︶ ̄)>

  • 11
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: UE4静态网格材质是指应用于静态网格体的材质。静态网格体是由顶点、多边形和顶点颜色构成的三维模型,静态网格材质负责定义这些三维模型的外观和表面属性。 UE4中,可以通过将材质应用到静态网格体上,来改变其外观。静态网格材质可以包含各种着色属性,如颜色、纹理、法线贴图、金属度、粗糙度等。通过调整这些属性的数值或导入自定义图片,可以实现不同材质效果,如金属、木材、石头、草地等。 在UE4中创建一个静态网格材质,首先需要在材质编辑器中创建一个新的材质实例。然后,可以通过添加各种材质节点来定义不同的属性。例如,添加一个颜色节点可以调整模型的基础颜色,添加一个纹理节点可以贴上自定义的贴图来改变模型的表面纹理。 在应用材质到静态网格体时,可以通过在级别编辑器中选择网格体并将创建的材质实例拖放到这个网格体上来实现。一个静态网格体可以应用多个材质,通过在编辑器中选择其不同部分,可以分别给不同的部分应用不同的材质。 总之,UE4静态网格材质是用于定义静态网格体外观和表面属性的工具,通过调整不同属性的数值或导入自定义贴图,可以实现各种不同的材质效果。 ### 回答2: UE4中的Static Mesh是指由顶点和面构成的静态模型。而材质是用来渲染物体表面的一种方式。在UE4中,我们可以给Static Mesh添加材质来改变其表面的外观和质感。 首先,我们需要创建一个材质实例来设置Static Mesh材质。在UE4中,我们可以使用材质编辑器来创建和编辑材质。在材质编辑器中,我们可以添加各种节点来控制Static Mesh的纹理、颜色、高光、法线贴图等属性。 然后,将创建好的材质实例应用到Static Mesh上。可以通过选中Static Mesh,在详细面板的材质选项中选择已创建的材质实例。这样就可以将材质应用到Static Mesh上,并在场景中进行预览。 另外,UE4还提供了一些可以控制Static Mesh材质的属性。比如,可以调整材质的透明度、金属度、粗糙度等参数,以达到更好的渲染效果。此外,还可以使用材质实例中的参数来实现动态材质的效果,比如动态的纹理滚动、颜色变换等。 总之,UE4中的Static Mesh材质功能非常强大。通过选择合适的材质实例并调整对应的属性,我们可以使Static Mesh在游戏中呈现出各种不同的外观和效果,增强游戏的视觉效果和沉浸感。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WhiteTian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值