用Unity3D创建简单场景漫游(图)
来源:第三维度
作者:未知
1.建模中使用的图片、文件、文件夹等以及模型中物体、材质等的名称都不能使用中文或者特殊符号,可以使用英文字母、数字、下划线等
2.调整Max的单位为米
3.烘培光影的设置
4.模型的中的植物效果,第一种是单面片植物,需要设置其轴心为其物体的对称中心;第二种是十字交叉的植物效果;第三种则是到Unity3D编辑器中通过地形编辑器系统添加
基本设置
5.Fbx导出插件下载地址:
http://usa.Autodesk.com/adsk/servlet/item?siteID=123112&id=10775855
6.将Max文件中用到的图片都拷贝到Textures目录下,如
7.再打开Max文件,导出为FBX文件,使用默认设置,FBX文件也放置在和Max文件相同的目录下,如
导出的时候,可以将模型简单的分类,如地面、植被、楼房等,也可以将模型分为几个区域,如小区1,小区2,学校等等分开导出
8.将包含Max文件、Fbx文件和Textures文件夹的文件夹拷贝到Unity3D项目的Assets目录下,如下图中红圈
在下一次用Unity3D编辑器开启本项目的时候,编辑器将自动导入/更新该文件夹中的信息,并生成Materials文件夹,如
9.启动Unity3D编辑器
10.选择刚才拷贝进来的文件中的Fbx文件,如
修改其中的Meshes下的Scale Factor和Generate Colliders,如
点击其他Fbx文件或者单击其他区域将弹出如下的对话框
点击Apply即可,类似的方式设置其他Fbx文件
注意,其中植物/植被类的Fbx文件不需要设置Generate Colliders项
11.将Fbx文件直接拖放到Hierarchy区域,如
12.点击Hierarchy区域中的对象,同时将鼠标移动三维显示区域,同时点击键f,则该对象自动适配显示到三维区域中心,如
13.将全部fbx添加完成后,提高场景亮度如下
单击Ambient Light,如下
调整为
即可设置完成
14.设置第一人称浏览
删除场景中Main Camera
将Project区域的Standard Assets下的Prefabs下的First Person Controller拖到Hierarchy区域中
点选First Person Controller,调整First Person Controller的位置到场景中合适的位置,并设置其高度为1.37到2.1左右
设置First Person Controller的高度在场景中地面之上
15.点击运行,即可测试
修改视角控制键为右键
16.打开Project区域中的StandardAssets下的CameraScripts下的MouseLook脚本,在
在Quaternion originalRotation;
void Update ()
{
if (axes == RotationAxes.MouseXAndY)
{
// Read the mouse input axis
中添加一行代码修改为
Quaternion originalRotation;
void Update ()
{
if(Input.GetAxis ("Fire2")==0) return;
if (axes == RotationAxes.MouseXAndY)
{
// Read the mouse input axis
如何取消浏览窗口上的右键菜单
只要设置Unity对象的参数即可禁止右键菜单的显示,如下:
<object id="UnityObject" classid="clsid:444785F1-DE89-4295-863A-D46C3A781394"
width="600" height="450"codebase="UnityWebPlayer.cab#version=2,0,0,0">http://webplayer.Unity3d.com/download_webplayer/UnityWebPlayer.cab#version=2,0,0,0">
<param name="src" value="MyDataFile.Unity3d" />
<param name="disableContextMenu" value="true" />
<embed id="UnityEmbed" src="MyDataFile.Unity3d" width="600" height="450" type="application/vnd.Unity" pluginspage="http://www.Unity3d.com/Unity-web-player-2.x" disableContextMenu="true" />
</object>
植物效果设置
17.对于单面片的植物效果,需要设定其材质为Transparent/VertexLit类型,并为其添加公告板脚本
设定前
设置材质类型为Transparent/VertexLit类型,如下
给单面片植物添加公告板脚本的方法是先选择该植物,然后点击菜单component下的scripts下的camera Facing Billboard即可,如下
设置材质类型和添加公告板脚本后,如下
如果没有该脚本组件,可以打开脚本编辑器,拷贝如下代码到脚本中,保存到Assets\Scripts下,命名为CameraFacingBillboard.cs即可
using UnityEngine;
using System.Collections;
public class CameraFacingBillboard : MonoBehaviour
{
public Camera cameraToLookAt;
void Start()
{
cameraToLookAt = Camera.main;
}
void Update()
{
Vector3 v = cameraToLookAt.transform.position - transform.position;
v.x = v.z = 0.0f;
transform.LookAt(cameraToLookAt.transform.position - v);
}
}
18.对于十字交叉的植物,需要将其材质设定为Nature/Vegetation Two Pass unlit类型
设置前的效果
设置后的效果
水面效果的设置
19.创建一个网格面片
20.给该水面面片设置水材质和水脚本,如
即可
烘培光影贴图的处理
21.Unity3D光影烘培的要求
U3D的光影贴图使用的是3Dmax中的标准材质的自发光贴图通道来存储光影贴图相关参数,如
22.给每个物体都附上贴图,如果是纯色物体,也付给纯色贴图
23.打光后,选择要烘培的物体
设置输出路径
添加烘培输出的贴图类型
添加“LightingMap”类型
设置烘培贴图大小和目标贴图位置为“自发光”
设置烘培材质,选择“输出到源”
点击“渲染”即可
24.标准材质贴图的烘培光影处理
a)物体据有标准材质
b)烘培渲染后,物体具有两个贴图
c)导出Fbx即可
25.多重子材质贴图的烘培光影处理
a)物体据有多重子材质贴图
b)渲染烘培后每个子材质都据有两个贴图
c)选择该物体,执行“多维材质2标准材质.ms”脚本,将该多维材质物体按其材质数量分解为标准材质的多个物体,新物体的名字以“原多维材质物体名字~其材质名称”命名,如
点击“开始转换”,则将该物体从多维材质物体按期子材质分解为多个具有标准材质的物体
d)将全部的具有多维材质类型的物体分解完成后,即可导出
26.多个物体使用同一贴图的烘培光影处理
因为我们在导入fbx文件到Unity3D编辑器中的时候,使用的都是按贴图来生成材质文件,所以多个物体使用同一贴图时会发生错误,修改其中任何一个的材质设置时,其他的使用该贴图的物体都会受到影响,解决的方法便是在Unity3D编辑器中生成一个具有该贴图的新材质,然后重新付给当前物体。
27.在U3D编辑器中修改物体的材质类型为光影贴图
设置物体的材质类型为Lightmapped/Diffuse
根据物体的名称将对应的光影贴图拖动到Lightmapp域,其中标准材质物体的光影贴图名称是“其物体名称LightingMap.tga”;从多维材质类型转换过来的物体的光影贴图名称是“其物体名称中~符合前的部分LightingMap.tga”