unity 默认渲染管线材质球的材质通道,材质球的材质通道

标准渲染管线——材质球的材质通道

文档,与内容无关,是介绍材质球的属性的。
https://docs.unity3d.com/2022.1/Documentation/Manual/StandardShaderMaterialParameters.html

游戏资源中常见的贴图类型
https://zhuanlan.zhihu.com/p/260973533
十大贴图常用贴图介绍 Shader的诞生 
https://www.bilibili.com/read/cv7860546/
『材质贴图』正确打开方式 ,只需要听听得懂的地方就行了
https://www.bilibili.com/video/BV1j4411x7PG/

可能用的,如何制作贴图
https://blog.youkuaiyun.com/GoodCooking/article/details/142669974

在Unity的标准渲染管线中,使用默认材质(Standard Material)和默认的Shader(Standard Shader)时,贴图的命名和对应关系如下:

贴图类型命名后缀对应Shader属性文件后缀
漫反射贴图(Albedo Map)_MainTex_MainTex*_diffuse.png*_color.png 或者*_albedo.png
金属度贴图(Metallic Map)_MetallicGlossMap_MetallicGlossMap*_metallic.png*_Gloss.png*_metalness.png
粗糙度贴图(Roughness Map)_MetallicGlossMap_MetallicGlossMap*_roughness.pngsmoothness.png
法线贴图(Normal Map)_BumpMap_BumpMap*_normal.png
高度贴图(Height Map)_ParallaxMap_ParallaxMap*_height.png*_disp.png
环境光遮蔽贴图(Ambient Occlusion Map)_OcclusionMap_OcclusionMap*_ao.png*_ambientocclusion.png
细节遮罩贴图(Detail Mask)_DetailMask_DetailMask*_detail_mask.png
自发光贴图(Emissive Map)_EmissionMap_EmissionMap*_emissive.png
细节漫反射贴图(Detail Albedo x2)_DetailAlbedoMap_DetailAlbedoMap*_detail_albedo.png

其他

贴图类型命名后缀对应Shader属性文件后缀
高光贴图(Specular Map)_SpecGlossMap_SpecGlossMap*_specular.png
透明度贴图(Opacity Map)_MainTex_MainTex (Alpha通道)*_opacity.png
置换贴图(Displacement Map)_ParallaxMap_ParallaxMap*_displacement.png*_height.png
凹凸贴图(Bump Map)_BumpMap_BumpMap*_bump.png
边缘贴图(Edge Map)不适用不适用不适用
环境贴图(Environment Map)不适用不适用不适用
折射贴图(Refraction Map)不适用不适用不适用

不适用意思的意思是:Unity的标准Shader不直接支持

形变通道:
凹凸:会改变光线在模型表面的凹凸的感觉,但是不会改变物体的结构
法线:会改变光线在模型表面的凹凸的感觉,不会改变物体的结构,
区别:凹凸是通过灰度图片去描述凹凸的程度,法线是通过法线贴图描述物体的凹凸程度
置换:可以使物体表面产生凹凸的通道,不同于凹凸和法线,置换会改变模型的网格,但是不会修改原来的网格。
置换会占很多内存,且拖慢渲染速度!
有法线先用法线。

颜色信息:漫反射
反射信息:反射,光泽度
高度信息:法线,凹凸,置换

如何使用代码修改材质球的某个属性

在这里插入图片描述

在这里插入图片描述

使用代码方式访问的方式:
找到要修改的属性,比如颜色,找到之后确定属性的类型,然后Set 类型,
比如设置金属度,找到:Metallic,类型是range,就设置float ,参数中的strng 就是:_metallc 数值就是0-1.

在这里插入图片描述

// 设置金属度

     mat.SetFloat("_Metallic", 1.0f); 


<think>好的,我现在需要解决用户在Unity中创建材质后无法使用贴图的问题。根据用户提供的引用内容,我需要先整理可能的原因和解决方案。 首先,引用[1]提到动态修改材质时颜色和透明度不生效的问题,这可能涉及到材质的属性是否正确设置。引用[4]和[5]讨论了材质过期属性或依赖问题,可能材质没有被正确提取或依赖的贴图丢失。另外,引用[2]和[3]提到Alpha通道和HDRP管线下的透明问题,虽然主要是关于透明度的,但也可能影响贴图的显示。 可能的步骤包括检查材质属性是否支持贴图、确保贴图正确导入和分配、处理材质实例化问题、检查渲染管线兼容性以及处理材质依赖项。需要逐一排查这些方面,结合用户提供的引用中的解决方案,比如使用Extract Materials或检查贴图导入设置。</think>### 解决Unity中创建材质后无法使用贴图的步骤 #### 1. **检查材质属性是否支持贴图** - **问题**:新建的材质默认可能未绑定贴图属性(如`_MainTex`),导致贴图无法显示。 - **解决方案**: - 在Inspector面板中,确认材质的Shader是否支持贴图通道。例如,使用`Standard Shader`时,检查`Albedo`属性是否有贴图槽[^4]。 - 手动将贴图拖拽到对应属性槽中,或通过代码赋值: ```csharp Material mat = new Material(Shader.Find("Standard")); mat.SetTexture("_MainTex", yourTexture); ``` #### 2. **确保贴图正确导入与设置** - **问题**:贴图未正确导入Unity,或格式不支持。 - **解决方案**: - 在Project窗口选择贴图文件,检查`Texture Type`是否为`Default`或符合材质需求的类型(如`Normal Map`)。 - 确认贴图的`Wrap Mode`和`Filter Mode`设置合理,避免贴图采样错误[^4][^5]。 #### 3. **处理材质实例化问题** - **问题**:直接修改预制体或模型的材质可能导致未实例化,修改不生效。 - **解决方案**: - 使用`Material.CopyPropertiesFromMaterial`或`Renderer.material`(自动实例化): ```csharp Renderer renderer = GetComponent<Renderer>(); Material newMat = new Material(renderer.sharedMaterial); newMat.SetTexture("_MainTex", yourTexture); renderer.material = newMat; ``` - 避免直接修改`sharedMaterial`,否则会影响所有使用该材质的对象[^1][^4]。 #### 4. **检查渲染管线兼容性** - **问题**:在HDRP/URP等自定义管线中,标准Shader可能不兼容。 - **解决方案**: - 确认材质使用的Shader与当前渲染管线匹配(如HDRP使用`HDRP/Lit`)。 - 若使用相机输出贴图到RawImage,需在HDRP中调整相机的透明背景设置[^3]。 #### 5. **处理材质依赖与资源锁定** - **问题**:材质被模型锁定或依赖贴图丢失。 - **解决方案**: - 对模型材质执行`Extract Materials`操作: 在模型文件的Inspector中选择`Materials → Extract Materials`,生成独立材质文件。 - 若贴图丢失,重新关联贴图路径或重新导入资源。 --- ### 相关问题 1. **如何在Unity中动态切换材质同时避免内存浪费?** (可参考引用[1]中按需修改材质属性的思路) 2. **SpeedTree模型导入Unity材质不显示透明通道如何解决?** (需检查Geometry Type设置与Alpha通道支持,参考引用[2]) 3. **Unity中如何批量修复材质过期属性?** (可结合引用[4]的工具开发思路,自动化清理冗余依赖) 4. **HDRP下如何实现UI显示相机渲染的透明背景?** (需调整相机配置与RenderTexture的Alpha支持,参考引用[3])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值