纹理不适用于Unity中的.obj文件

时间:2019-09-23 15:01:48

标签: unity3d

我导出了.stl文件,并转换为.obj,然后导入了Unity。然后,我从资产商店中导入了一些物料。然后,我尝试将材质应用于导入的模型,但纹理不适用。

我尝试更改着色器选项,检查照明选项。但是,我可能检查错了

Unity Screenshot

2 个答案:

答案 0 :(得分:1)

这里可能发生了一些事情,如另一个答案所述,可能是您的平铺

无论您在哪个纹理上使用纹理,UV的范围始终为0-> 1,但是根据系统的不同,UV将是以下2种之一:

0,0在左下角,1,1在右上角或

0,0位于左上方,而1,1位于右下方。 (注意:这是指UV落在纹理上的位置,而不是与模型上的顶点有关的UV。)

因此,当您的平铺设置为0,0时,您说的是uv.x * 0和uv.y * 0,这将在着色器用于确定数学值之后将所有UV的默认值设置为0。该纹理像素使用哪种颜色,它将始终相同。

一个可能发生这种情况的简单示例是平铺,因为如果我们的vert值为(0.73,0.82),并且我们正在缩放UV值(当平铺> 0时将收缩纹理视图)乘以2,该值将变为(1.46,1.64)。

现在在我们的示例中,如果您使用的值> 1,则在进行纹理化时有两点需要解决,它们是UV值和TextureWrap设置。由于所有纹理均基于0-> 1范围,因此值1.46更大。处理方式取决于纹理检查器中的TextureWrapMode设置。您可以在https://docs.unity3d.com/ScriptReference/TextureWrapMode.html

上了解更多信息。

总而言之,如果您希望将平铺纹理设置为“重复”,则不进行此操作,而是使用夹紧,将UV夹紧为0-> 1,将大于1的任何值设置为1,您将面临与将图块设置为0的情况相同。

简而言之,将瓷砖设置为1,1,并确保针对用例正确设置了纹理检查器设置。

我的方法是:设置纹理以在检查器中重复,然后调整平铺直到看起来不错(也可以平铺很多,以使它们也都显示相同的颜色)。

这当然只会在您的模型确实分配了UV的情况下解决此问题。您可以查找OBJ格式规范,并使用记事本查看文件以确定文件是否具有UV设置。

答案 1 :(得分:0)

在层次结构中,您的对象内应该有另一个元素。它有自己的网格渲染器,可以覆盖父对象的网格渲染器。如果您更改该嵌套元素的材质,它应该可以工作;)