我导出了.stl文件,并转换为.obj,然后导入了Unity。然后,我从资产商店中导入了一些物料。然后,我尝试将材质应用于导入的模型,但纹理不适用。
我尝试更改着色器选项,检查照明选项。但是,我可能检查错了
答案 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)
在层次结构中,您的对象内应该有另一个元素。它有自己的网格渲染器,可以覆盖父对象的网格渲染器。如果您更改该嵌套元素的材质,它应该可以工作;)