【Unity】Blender场景导入

素材

下载场景:https://www.aplaybox.com/details/model/keDSIks72Qh3
blender文件导出为.fbx文件,路径选择复制(做的过程太乱了不知道有没有影响),物理类型选择网格,勾选应用变换

blender下的物体长度是unity标准长度的两倍
在这里插入图片描述在这里插入图片描述

由于Blender导入Unity会出现材质贴图丢失的情况,我这里使用的笨办法就是找到材质对应的贴图手动给绑上…
材质球默认在prefeb文件中,我们选择所有材质球从预制件中提取至该目录下的新文件夹,此时可以看到预制件中材质球被绑定好了。
在这里插入图片描述
在这里插入图片描述然后依次查看材质球,若有缺失的部分,在blender中可以找到对应的贴图名称
在这里插入图片描述

将对应的Diffuse绑到基础贴图,Normal到法线贴图即可
在这里插入图片描述

调整

  • 看到地板边缘发白光,对灯的反射也比较强
    在这里插入图片描述找到地板的材质20,将平滑度调小
    在这里插入图片描述

默认下,没有一个金属或者镜面纹理贴图被分配时,材质的平滑度由一个滑块控制。此滑块允许你控制“微小表面细节”或者纵贯表面的平滑度。
平滑度范围从0到1。
“微表面细节”在Unity里是无法直接看到的东西——但近在眼前。它是在光照计算中使用的概念。用户可以看到被光照数量所表现的微表面细节的效果被漫射,像是从物体上弹开。对于平滑的表面,所有光线趋向于在一个可预测及一致的角度弹开。极端情况下,一个完美平滑的表面像镜子一样反射光照。不那么平滑的表面,在更宽的角度范围内反射光照(由于光照碰到微小表面的隆起),因此反射的细节更少,被表面以更散漫的方式所传播。
在这里插入图片描述

一个材质的微表面细节理论在平滑度低、中、高时对比的示意图。黄色的线表示:在平滑程度变化情况下,光线接触到表面并反射的角度。
平滑的表面有非常低的微表面细节,或者根本没有,所以光线以统一的方式反弹,形成清晰的反射。粗糙的表面在它微表面细节存在高峰和低谷,所以光线在宽的角度范围反弹——均匀后的输出形成了漫射的颜色,没有清晰的反射。

  • 感觉身上阴影过于粉嫩了
    在这里插入图片描述
    找到前后摆的材质,调整shadow mapping中的shadow color
    在这里插入图片描述
    在这里插入图片描述
  • 想把灯放入灯罩并且设置阴影
    在这里插入图片描述
    得把灯罩的投射阴影设置为关闭,这样就不会映射出灯罩的阴影
    在这里插入图片描述

最终效果

在这里插入图片描述

### Blender 模型导入 Unity 后单面显示问题解决方案 在处理 Blender 模型导入Unity 中遇到的单面显示问题时,有几个关键点需要注意: #### 取消自动烘焙选项 为了防止不必要的资源消耗,在导入模型之前应取消 Unity 的“Auto Generate”(自动烘焙)选项。许多用户报告称,默认情况下该选项被启用,这可能导致系统持续处于计算状态,影响性能[^1]。 #### 设置 FBX 文件属性 对于从 Blender 导出并准备导入Unity 的 FBX 文件,确保其导出设置正确至关重要。具体来说,“Embed Media”的选择会影响材质和纹理能否随模型一同加载成功。即使选择了此选项,有时仍需手动配置材料以避免出现所谓的“裸模”。 #### 调整法线方向 针对单面渲染的问题,最常见原因是网格顶点法线的方向错误。BlenderUnity 对于正面朝向有不同的定义方式;通常情况下,Unity 默认采用顺时针顺序来决定多边形表面的可见性。因此,建议检查并调整 Blender 中的对象法线使其向外指向,即通过 `Ctrl+N` 或者使用 “Recalculate Outside Normals” 功能修正法线方向后再重新导出模型[^2]。 #### 修改着色器模式 另一个潜在因素可能是使用的着色器类型不适合双面或多层效果展示。可以尝试切换为支持两面绘制的标准 Unlit Shader 或其他自定义着色器,从而允许背面也被正常渲染出来。此外,也可以直接修改现有材质球中的 "Cull Mode" 属性设为 Off 来禁用剔除操作,使得物体无论哪一面都能看到。 ```csharp // C#脚本用于批量更改场景内所有MeshRenderer组件下的Material culling mode using UnityEngine; public class ChangeCullMode : MonoBehaviour { void Start() { MeshRenderer[] renderers = FindObjectsOfType<MeshRenderer>(); foreach (var renderer in renderers) { var materials = renderer.materials; for(int i=0;i<materials.Length;i++){ materials[i].SetInt("_Cull", 0); // Set to off, which means no face will be culled. } } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值