Unity3D美术制作规范及导出流程图
3d效果图制作流程

3d效果图制作流程3D效果图制作是一种将平面图像转化为三维空间的技术,广泛应用于建筑设计、游戏开发和电影制作等领域。
下面将详细介绍一下3D效果图制作的流程。
第一步:准备工作在开始制作3D效果图之前,首先需要明确设计的目标和需求,包括场景的设置、物体的形状和材质等等。
然后根据需求确定所需的软件和工具。
第二步:建模建模是制作3D效果图的关键步骤之一,其目标是根据设计需求创建三维模型。
常用的建模软件有3ds Max、Maya、SketchUp等。
在建模过程中,可以使用基本的几何体如立方体、球体等进行组合,也可以使用平面制作曲线和网格结构。
通过调整顶点、边缘和面的位置,根据设计稿创建出一个个物体的模型。
第三步:贴图贴图是将平面图像映射到三维模型表面的过程。
可以使用Photoshop等软件创建纹理图像,并将其应用到模型表面,使模型更加真实。
在贴图过程中,需要考虑到材质的属性,如颜色、光泽、透明度等,以及物体的表面细节和纹理。
第四步:灯光设置在3D效果图中,灯光的设置非常重要,它可以为场景增加光影效果,提高真实感。
可以在软件中选择不同类型的灯光,如点光源、平行光源、聚光灯等,并调整灯光的位置、强度和颜色,以达到所需的效果。
此外,也可以添加阴影效果或环境光,增加场景的立体感。
第五步:摄像机设置摄像机设置决定了3D效果图的视角和展示效果。
在软件中可以调整摄像机的位置、焦距、方位角和仰角等参数,来达到所需的视觉效果。
可以选择近景或远景、俯视或仰视等不同视角,以呈现出最佳的设计效果。
第六步:渲染输出渲染是将3D场景转换为二维图像的过程。
可以选择不同的渲染模式,如线框渲染、平坦渲染、真实渲染等,以及不同的渲染引擎,如V-Ray、Arnold等。
渲染过程可能比较耗时,需要根据实际情况进行调整。
最后可以导出渲染后的图像或动画。
第七步:后期处理在输出之前,可以通过后期处理软件如 Photoshop 对图像进行进一步的调整和修饰。
某Unity引擎3dArpg手游项目美术场景制作规则

某Unity引擎3dArpg手游项目美术场景制作规则一、3dmax应用版本_系统单位设置及命名规范:1.应用软件版本:应使用3dmax2013-2014版进行模型制作的标准版本开发,或者更高版本(外包不低于3dmax2010版)以上3dmax版本应用需求是基于u3d引擎所需,在给的官方文档导出说明部分中有明确说明,高版本3dmax中的fbx格式插件会随着版本升级而升级.2.单位设置:单位为厘米(CentiMeters)如截图所示:3.命名规范:初期命名规范(使用到2014年9月份):必须使用汉语拼音或英文场景名称+物体名称+必要时可以加上局部描述+物体编号+(_AL)_D例:桃花林的物品,命名为TaoHuaLin_MuWu_WuDing_001_D.所有不带镂空的普通贴图加后缀_D有镂空通道的贴图后面加_AL后缀;后期命名规范(2014年10月份之后新做的资源命名):必须使用汉语拼音或英文场景名称缩略字母+物体名称+必要时可以加上局部描述+物体编号+(_AL)_D 例:桃花林的物品,命名为THL_MuWu_WuDing_001_D.这样命名长度跟字符数量都降低了一点。
所有不带镂空的普通贴图加后缀_D有镂空通道的贴图后面加_AL后缀;max源文件的名字要与贴图、材质球、模型的命名要统一。
二、模型制作规范材_贴图尺寸材质及提交说明1.贴图制作要求:1)尺寸: 以像素为单位,以2的倍数的任意组合,例如2,4,8,16,32等,并不一定必须是正方形,例如256*64。
以256*256贴图为主,最大应用尺寸为512*512,综合整体应节省贴图的应用数量2)格式:Diffuse贴图为16位TGA格式。
透明贴图为32位TGA格式。
3)公用性质:场景模型人员制作时应考虑贴图的公用性质,在发现有类似资源的前提下尽可能在公共材质库中找类似资源和贴图。
在无类似情况下可以增加新的贴图,增加的贴图要考虑通用性和预留与类似贴图合并的位置。
Untiy3D美工知识

Untiy3D美工知识Unity3D教程:FBX如何内嵌纹理FBX打开后如何会自动生成贴图呢?FBX格式是可以内嵌纹理的,在导出FBX的对话框中勾选Embed Media即可。
Untiy3D美工知识。
现在的图形显卡可以很好的支持很多的多边形,但是他们他们还是有一些瓶颈的。
所以如果你有一个有100个三角形的MESH,它渲染起来所需要花费的运算跟1500个面数的物体是没有多大差别的。
因此最佳的渲染设置时每个模型大约1500-4000个三角面。
只有在游戏组件中的属性栏中勾选Mesh Renderer选项显卡才会渲染相应的模型,并且在场景中的空的GameObject组件是不会被渲染的。
所以,最好的导入渲染设置时合并Objects直到他们每个模型在1500个三角面面甚至更高一些,并且为整个模型使用一个材质。
如果只是把两个模型合并在一起但是不共同使用同一个材质并不会给你的图形带来一点优化。
如果你想有效的合并物体,你需要保证你合并后的模型使用一个材质。
(其实就是尽量减少材质球的数量)在你合并物体的时候需要知道一件事:如果你在你的场景中用到了很多小的灯光,你可以把场景中离得很近的物体合并为一个Object。
按照上面的思路,如果一个MESH具有多个材质球,那就说明在计算机渲染的时候是要进行多重运算的。
最普遍的你之所以一个MESH用多个材质的原因是因为两个材质不能使用相同的贴图。
所以如果你想要优化渲染设置,你最好确定你合并的那些MESH的材质是相同的。
Unity对于向显卡导出各种多边形是很擅长的,它可以很详尽的把所有的图形导入到显卡,并且优化数据。
你需要做的只是确定你的图形显示卡正常工作。
而不是要调整很多手动调节的设置。
相当数量的实时灯光对于游戏速度也是有限制的。
如果你想要有一个不错的展示,并且不关心凹凸贴图和实施灯光(Bumpmapping or Pixel Lighting),可以去Edit->Render Settings...然后设置Pixel Light Coun为0.这将会给所有的Object使用顶点灯光。
unity3D技术之导出Unity场景的所有游戏对象信息

导出Unity场景的所有游戏对象信息,一种是XML一种是JSON。
本篇文章我们把游戏场景中游戏对象的、旋转、缩放、平移与Prefab的名称导出在XML与JSON中。
然后解析刚刚导出的XML或JSON通过脚本把导出的游戏场景还原。
在Unity官网上下载随便下载一个demo Project,如下图所示这是我刚刚在官网上下载的一个范例程序。
接着将层次视图中的所有游戏对象都封装成Prefab保存在资源路径中,这里注意一下如果你的Prefab绑定的脚本中有public Object 的话,需要在代码中改一下。
用Find() FindTag()这类方法在脚本中Awake()方法中来拿,不然Prefab动态加载的时候无法赋值的,如下图所示,我把封装的Prefab对象都放在了Resources/Prefab文件夹下。
OK,现在我们就需要编写我们的导出工具、在Project视图中创建Editor文件夹,接着创建脚本MyEditor 。
如下图所示。
因为编辑的游戏场景数量比较多,导出的时候我们需要遍历所有的游戏场景,一个一个的读取场景信息。
然后取得游戏场景中所有游戏对象的Prefab的名称旋转缩放平移。
有关XML的使用请大家看我的上一篇文章: Unity3D研究院之使用C#合成解析XML与JSON (四十一)代码中我只注释重点的部分,嘿嘿。
MyEditor.csC#1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031 using UnityEngine;using System.Collections;using UnityEditor;using System.Collections.Generic;using System.Xml;using System.IO;using System.Text;using LitJson;public class MyEditor : Editor{//将所有游戏场景导出为XML格式[MenuItem ("GameObject/ExportXML")]static void ExportXML (){string filepath = Application.dataPath + @"/StreamingAssets/my.xml";if(!File.Exists (filepath)){File.Delete(filepath);}XmlDocument xmlDoc = new XmlDocument();XmlElement root = xmlDoc.CreateElement("gameObjects");//遍历所有的游戏场景foreach (UnityEditor.EditorBuildSettingsScene S in UnityEditor.EditorBuildSettings.scenes) {//当关卡启用if (S.enabled){//得到关卡的名称string name = S.path;//打开这个关卡EditorApplication.OpenScene(name);3233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 XmlElement scenes = xmlDoc.CreateElement("scenes");scenes.SetAttribute("name",name);foreach (GameObject obj in Object.FindObjectsOfType(typeof(GameObject))) {if (obj.transform.parent == null){XmlElement gameObject = xmlDoc.CreateElement("gameObjects"); gameObject.SetAttribute("name",);gameObject.SetAttribute("asset", + ".prefab");XmlElement transform = xmlDoc.CreateElement("transform"); XmlElement position = xmlDoc.CreateElement("position");XmlElement position_x = xmlDoc.CreateElement("x");position_x.InnerText = obj.transform.position.x+"";XmlElement position_y = xmlDoc.CreateElement("y");position_y.InnerText = obj.transform.position.y+"";XmlElement position_z = xmlDoc.CreateElement("z");position_z.InnerText = obj.transform.position.z+"";position.AppendChild(position_x);position.AppendChild(position_y);position.AppendChild(position_z);XmlElement rotation = xmlDoc.CreateElement("rotation");XmlElement rotation_x = xmlDoc.CreateElement("x");rotation_x.InnerText = obj.transform.rotation.eulerAngles.x+""; XmlElement rotation_y = xmlDoc.CreateElement("y");rotation_y.InnerText = obj.transform.rotation.eulerAngles.y+""; XmlElement rotation_z = xmlDoc.CreateElement("z");rotation_z.InnerText = obj.transform.rotation.eulerAngles.z+"";rotation.AppendChild(rotation_x);rotation.AppendChild(rotation_y);rotation.AppendChild(rotation_z);XmlElement scale = xmlDoc.CreateElement("scale");XmlElement scale_x = xmlDoc.CreateElement("x");scale_x.InnerText = obj.transform.localScale.x+"";XmlElement scale_y = xmlDoc.CreateElement("y");scale_y.InnerText = obj.transform.localScale.y+"";XmlElement scale_z = xmlDoc.CreateElement("z");scale_z.InnerText = obj.transform.localScale.z+"";scale.AppendChild(scale_x);scale.AppendChild(scale_y);scale.AppendChild(scale_z);767778798081828384858687888990919293949596979899 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 transform.AppendChild(position);transform.AppendChild(rotation);transform.AppendChild(scale);gameObject.AppendChild(transform);scenes.AppendChild(gameObject);root.AppendChild(scenes);xmlDoc.AppendChild(root);xmlDoc.Save(filepath);}}}}//刷新Project视图,不然需要手动刷新哦AssetDatabase.Refresh();}//将所有游戏场景导出为JSON格式[MenuItem ("GameObject/ExportJSON")]static void ExportJSON (){string filepath = Application.dataPath + @"/StreamingAssets/json.txt";FileInfo t = new FileInfo(filepath);if(!File.Exists (filepath)){File.Delete(filepath);}StreamWriter sw = t.CreateText();StringBuilder sb = new StringBuilder ();JsonWriter writer = new JsonWriter (sb);writer.WriteObjectStart ();writer.WritePropertyName ("GameObjects");writer.WriteArrayStart ();foreach (UnityEditor.EditorBuildSettingsScene S in UnityEditor.EditorBuildSettings.scenes) {if (S.enabled){string name = S.path;EditorApplication.OpenScene(name);writer.WriteObjectStart();120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 writer.WritePropertyName("scenes");writer.WriteArrayStart ();writer.WriteObjectStart();writer.WritePropertyName("name");writer.Write(name);writer.WritePropertyName("gameObject");writer.WriteArrayStart ();foreach (GameObject obj in Object.FindObjectsOfType(typeof(GameObject))) {if (obj.transform.parent == null){writer.WriteObjectStart();writer.WritePropertyName("name");writer.Write();writer.WritePropertyName("position");writer.WriteArrayStart ();writer.WriteObjectStart();writer.WritePropertyName("x");writer.Write(obj.transform.position.x.ToString("F5"));writer.WritePropertyName("y");writer.Write(obj.transform.position.y.ToString("F5"));writer.WritePropertyName("z");writer.Write(obj.transform.position.z.ToString("F5"));writer.WriteObjectEnd();writer.WriteArrayEnd();writer.WritePropertyName("rotation");writer.WriteArrayStart ();writer.WriteObjectStart();writer.WritePropertyName("x");writer.Write(obj.transform.rotation.eulerAngles.x.ToString("F5"));writer.WritePropertyName("y");writer.Write(obj.transform.rotation.eulerAngles.y.ToString("F5"));writer.WritePropertyName("z");writer.Write(obj.transform.rotation.eulerAngles.z.ToString("F5"));writer.WriteObjectEnd();writer.WriteArrayEnd();writer.WritePropertyName("scale");writer.WriteArrayStart ();writer.WriteObjectStart();writer.WritePropertyName("x");164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 writer.Write(obj.transform.localScale.x.ToString("F5"));writer.WritePropertyName("y");writer.Write(obj.transform.localScale.y.ToString("F5"));writer.WritePropertyName("z");writer.Write(obj.transform.localScale.z.ToString("F5"));writer.WriteObjectEnd();writer.WriteArrayEnd();writer.WriteObjectEnd();}}writer.WriteArrayEnd();writer.WriteObjectEnd();writer.WriteArrayEnd();writer.WriteObjectEnd();}}writer.WriteArrayEnd();writer.WriteObjectEnd ();sw.WriteLine(sb.ToString());sw.Close();sw.Dispose();AssetDatabase.Refresh();}}此时我们就可以导出游戏场景的信息拉,注意游戏场景的需要现在Project Setting 中注册。
unity3d开发流程

unity3d开发流程Unity3D是一款广泛应用于游戏开发领域的跨平台游戏引擎。
它提供了一整套丰富的工具和功能,使开发者能够轻松创建高品质的游戏。
本文将以Unity3D开发流程为主题,介绍Unity3D的开发流程及相关内容。
一、项目准备阶段在开始使用Unity3D进行游戏开发之前,首先需要进行项目准备工作。
这包括确定游戏的概念和目标,制定开发计划,确定开发团队的人员构成等。
在这个阶段,还需要进行市场调研,了解目标受众和竞争对手的情况,为游戏的设计和开发提供参考。
二、游戏设计阶段在项目准备阶段完成后,接下来就是游戏设计阶段。
这个阶段的重点是确定游戏的核心玩法和游戏机制,设计游戏关卡和角色设定,制定游戏的故事情节和美术风格等。
在Unity3D中,可以使用内置的编辑器工具来创建游戏场景、调整摄像机视角、添加角色和物体等。
三、编程实现阶段游戏设计阶段完成后,接下来就是编程实现阶段。
在Unity3D中,可以使用C#或UnityScript等编程语言来编写游戏逻辑和功能。
开发者可以使用Unity3D提供的API来实现游戏中的各种功能,如角色控制、碰撞检测、动画效果等。
此外,Unity3D还支持插件的使用,开发者可以根据需要选择适合的插件来扩展游戏的功能。
四、美术制作阶段美术制作是游戏开发的重要环节之一。
在这个阶段,美术人员将根据游戏设计的要求来制作游戏的美术资源,包括角色模型、场景贴图、特效等。
Unity3D支持导入各种格式的美术资源,如3D模型、纹理、动画等。
开发者可以使用Unity3D的编辑器工具来对美术资源进行调整和优化,以提高游戏的表现效果。
五、测试和优化阶段在游戏开发过程中,测试和优化是不可忽视的环节。
在这个阶段,测试人员将对游戏进行全面的功能测试和性能测试,以确保游戏的稳定性和流畅性。
同时,开发者也需要对游戏进行性能优化,以提高游戏的帧率和加载速度。
Unity3D提供了一系列的工具和功能,如Profiler和Frame Debugger等,用于帮助开发者进行游戏的测试和优化工作。
unity3D导出模型设置

正文字体大小:大中小三维游戏引擎——Unity 角色模型优化要点续:换肤和导入(2011-02-21 01:44:22)转载▼标签:杂谈在上一篇Unity角色模型优化要点中,我主要是翻译了官方的原文,并加了少量自己的注释。
随后,经过这几天对角色换肤的测试,总结出一些建模和导入的要点,供大家参考。
所谓角色换肤也就是游戏中常见的角色自定制功能:玩家开始游戏前,一般需要创建一个游戏角色,选择性别、容貌、发型等等。
进入游戏后,就可以操作自己创建的角色做出行走、跳跃、攻击等动作。
很多游戏还允许玩家在中途变换发型甚至改变体态(例如升级后肌肉变得发达)等等。
下图就是WOW中角色选择的画面示例。
从游戏开发者的角度来看,由于可定制元素排列组合的结果非常多,不可能事先将所有结果都一个一个建出来并施加动作。
所以必须采取分部位建模,然后通过编程控制,在游戏中将用户选择的各部位重新组合成完整角色。
这个制作流程大致包括下列几步:这主要是一项策划工作。
负责策划的朋友应该事先规划好角色的哪些身体部位可以替换,并作出原图,方便美工和动作进行设计。
需要注意一点就是,对于可能经常离开人体的对象,例如盔甲、武器等,不应包括在内。
2.制作标准模型标准模型就是包含了角色网格、骨骼和动作的模型。
策划设计的角色可能有多种组合方案,但美工可以随便选取其中一种来做标准模型。
标准模型的用途有两个,首先是美工可以基于它制作余下的各种可选部位的模型;其次在游戏中程序也是通过替换标准模型中的某一部分来完成换装的。
在3DS Max中制作标准模型要点是:∙必须包含全套骨骼和一张带蒙皮的网格。
只有包含骨骼和蒙皮的模型导入Unity后才能作为后续编程的基础。
注意网格必须有且仅有一张,但其形状可以随便。
因为最后我们用到的只是骨骼,这张蒙皮的作用仅仅是导入时触发Unity的一个自动功能而已(美工不必关心,我就不展开说了)。
它最后会在换肤时被替换掉的。
∙必须为每块骨骼用英文取一个好识别的名字(拼音也行)。
Unity3D基本操作教程文档

Unity3D基本操作教程(15分钟)由unity3dcn 于星期四, 12/24/2009 - 00:20 发表用Unity3D创建简单漫游1. 建模中使用的图片、文件、文件夹等以及模型中物体、材质等的名称都不能使用中文或者特殊符号,可以使用英文字母、数字、下划线等2. 调整Max的单位为米3. 烘培光影的设置4. 模型的中的植物效果,第一种是单面片植物,需要设置其轴心为其物体的对称中心;第二种是十字交叉的植物效果;第三种则是到Uni ty3D编辑器中通过地形编辑器系统添加基本设置5. Fbx导出插件下载地址:/adsk/servlet/item?siteID=123112&id=107758556. 将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添加完成后,提高场景亮度如下单击Am bient Light,如下调整为即可设置完成14. 设置第一人称浏览删除场景中Main Cam era将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下的Cam eraScripts下的MouseLook脚本,在在Quaternion originalRotation;void Update (){if (axes == RotationAxes.MouseXAndY){// Read the m ouse input axis中添加一行代码修改为Quaternion originalRotation;void Update (){if(Input.GetAxis ("Fire2")==0) return;if (axes == RotationAxes.MouseXAndY){// Read the m ouse input axis如何取消浏览窗口上的右键菜单只要设置Unity对象的参数即可禁止右键菜单的显示,如下:<object id="UnityObject" classid="clsid: 444785F1-DE89-4295 -863A-D 46C3A781394"width="600" height="450"codebase="/download_webplayer/UnityWebPlayer.cab# version=2,0,0,0"><param nam e="src" value="MyDataFile.uni ty3d" /><param nam e="disableContex tMenu" value="true" /><em bed id="UnityEm bed" src="MyDataFile.uni ty3d" width="600" height="450"type="application/vnd.unity"pluginspage="/unity-web-player-2.x"disableContextMenu="true" /></object>植物效果设置17. 对于单面片的植物效果,需要设定其材质为Transparent/VertexLit类型,并为其添加公告板脚本设定前设置材质类型为Transparent/VertexLit类型,如下给单面片植物添加公告板脚本的方法是先选择该植物,然后点击菜单com ponent下的scripts下的cam era Facing Billboard即可,如下设置材质类型和添加公告板脚本后,如下如果没有该脚本组件,可以打开脚本编辑器,拷贝如下代码到脚本中,保存到Assets\Scripts下,命名为Cam eraFacingBillboard.cs即可using UnityEngine;using System.Collections;public class Cam eraFacingBillboard : MonoBehaviour{public Cam era cam eraToLookAt;void Start(){cam eraToLookAt = Cam era.m ain;}void Update(){Vector3 v = cam eraToLookAt.transform.position - transform.position;v.x = v.z = 0.0f;transform.LookAt(cam eraToLookAt.transform.position - v);}}18. 对于十字交叉的植物,需要将其材质设定为Nature/Vegetation Two Pass unlit类型设置前的效果设置后的效果水面效果的设置19. 创建一个网格面片20. 给该水面面片设置水材质和水脚本,如即可烘培光影贴图的处理21. Unity3D光影烘培的要求U3D的光影贴图使用的是3Dm ax中的标准材质的自发光贴图通道来存储光影贴图相关参数,如22. 给每个物体都附上贴图,如果是纯色物体,也付给纯色贴图23. 打光后,选择要烘培的物体设置输出路径添加烘培输出的贴图类型添加“LightingMap”类型设置烘培贴图大小和目标贴图位置为“自发光”设置烘培材质,选择“输出到源”点击“渲染”即可24. 标准材质贴图的烘培光影处理a) 物体据有标准材质b) 烘培渲染后,物体具有两个贴图c) 导出Fbx即可25. 多重子材质贴图的烘培光影处理a) 物体据有多重子材质贴图b) 渲染烘培后每个子材质都据有两个贴图c) 选择该物体,执行“多维材质2标准材质.m s”脚本,将该多维材质物体按其材质数量分解为标准材质的多个物体,新物体的名字以“原多维材质物体名字~其材质名称”命名,如点击“开始转换”,则将该物体从多维材质物体按期子材质分解为多个具有标准材质的物体d) 将全部的具有多维材质类型的物体分解完成后,即可导出26. 多个物体使用同一贴图的烘培光影处理因为我们在导入fbx文件到Unity3D编辑器中的时候,使用的都是按贴图来生成材质文件,所以多个物体使用同一贴图时会发生错误,修改其中任何一个的材质设置时,其他的使用该贴图的物体都会受到影响,解决的方法便是在Unity3D编辑器中生成一个具有该贴图的新材质,然后重新付给当前物体。
Unity3D 美术资源规范

Unity3D 美术资源规范一.单位,比例统一在建模型前先设置好单位,在同一场景中会用到的模型的单位设置必须一样,模型与模型之间的比例要正确,和程序的导入单位一致,即便到程序需要缩放也可以统一调整缩放比例。
统一单位为米。
二.模型规范⒈所有角色模型最好站立在原点。
没有特定要求下,必须以物体对象中心为轴心。
⒉面数的控制。
移动设备每个网格模型控制在300-1500个多边形将会达到比较好的效果。
而对于桌面平台,理论范围1500-4000。
如果游戏中任意时刻内屏幕上出现了大量的角色,那么就应该降低每个角色的面数。
比如,半条命2对于每个角色使用2500-5000个三角面。
正常单个物体控制在1000个面以下,整个屏幕应控制在7500个面以下。
所有物体不超过20000个三角面。
⒊整理模型文件,仔细检查模型文件,尽量做到最大优化,看不到的地方不需要的面要删除,合并断开的顶点,移除孤立的顶点,注意模型的命名规范。
模型给绑定之前必须做一次重置变换。
⒋可以复制的物体尽量复制。
如果一个1000面的物体,烘焙好之后复制出去100个,那么他所消耗的资源基本和一个物体消耗的资源一样多。
三.材质贴图规范⒈我们目前使用的Unity3D软件作为仿真开发平台,该软件对模型的材质有一些特殊的要求,在我们使用的3dsMax中不是所有材质都被Unity3D软件所支持,只有standard(标准材质)和Multi/Sub-Objiect(多维/子物体材质)被Unity3D软件所支持。
注:Multi/Sub-Objiect(多维/子物体材质)要注意里面的子材质必须为standard(标准材质)才能被支持。
⒉Unity3D目前只支持Bitmap贴图类型,其它所有贴图类型均不支持。
只支持DiffuseColor(漫反射)同self-Illumination(自发光,用来导出lightmap)贴图通道。
Self-Illumination(不透明)贴图通道在烘焙lightmap后,需要将此贴图通道channel 设置为烘焙后的新channel,同时将生成的lightmap指向到self-Illumination。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、部分模型坐标及缩放请按照制作规完成,不然需要在Unity里面操作的时候,通过程序找不到。
2、场景中模型存在漏面
4、模型导入时未成组,查找不方便
如下即可,但不要出现中文。
以上,希望尽快改进。
2017-02-22
附件一:
Unity3d美术制作规及导出流程
目录
序言 (7)
第一章模型制作规 (7)
1、单位比例 (7)
2、建模规 (8)
2.1多余面数 (8)
2.2避免闪面 (8)
2.3复制模型 (8)
2.4 Poly建模 (8)
2.5模型塌陷 (8)
2.6命名规 (9)
2.7树木模型 (9)
2.8模型级别 (9)
2.8.1 角色质心点 (9)
2.8.2主角面数 (9)
2.8.3小怪面数 (10)
2.8.4 武器面数 (10)
2.8.5 场景面数 (10)
2.9 镜像物体 (10)
2.10缩放物体 (10)
第二章材质贴图规 (10)
1、材质和贴图类型 (10)
2、贴图通道及贴图类型 (11)
3、贴图的文件格式和尺寸 (11)
4、贴图和材质应用规则 (11)
第三章模型导出 (11)
序言
本文提到的所有数字模型制作,全部是用3D MAX建立模型,即使是不同的建模软件,对模型的要求基本是相同的。
当一个手游模型制作完成时,它所包含的基本容包括场景尺寸、单位,模型归类塌陷、命名、节点编辑,纹理、坐标、纹理尺寸、纹理格式、材质球等必须是符合制作规的。
一个归类清晰、面数节省、制作规的模型文件对于程序控制管理是十分必要的。
第一章模型制作规
1、单位比例
在没有特殊要求的情况下,单位为米(Meters),如图所示。
2、建模规
2.1多余面数
删除场景中多余的面,在建立模型时,看不见的地方不用建模,对于看不见的面也可以删除,主要是为了提高贴图的利用率,降低整个场景的面数,以提高交互场景的运行速度。
如建筑物底面、贴着墙壁物体的背面等。
2.2避免闪面
保持模型面与面之间的距离推荐最小间距为当前场景最大尺度的二千分之一。
例如:在制作室场景时,物体的面与面之间距离不要小于2mm;在制作场景长(或宽)为1km的室外场景时,物体的面与面之间距离不要小于20cm。
如果物体的面与面之间贴得太近,会出现两个面交替出现的闪烁现象。
模型与模型之间不允许出现共面、漏面和反面,看不见的面要删掉。
在建模初期一定要注意检查共面、漏面和反面的情况;
2.3复制模型
可以复制的物体尽量复制。
如果一个1000个面的物体,烘焙好之后复制出去100个,那么他所消耗的资源,基本上和一个物体所消耗的资源一样多。
2.4 Poly建模
建模时最好采用Editable Poly建模,这种建模方式在最后烘焙时不会出现三角面现象,如果采用Editable Mesh 在最终烘焙时可能会出现三角面的情况。
2.5模型塌陷
当一栋建筑模型经过建模、贴纹理之后,然后就是将模型塌陷,这一步工作也是为了导出到unity引擎做准备。
所以在塌陷的时候要注意一些问题:
(1)按照“筑一物体”的原则塌陷,体量特别大或连体建筑可分塌为2-3个物体,但导出前要按建筑再塌成一个物体。
(2)用Box反塌物体,转成Poly模式,这时需检查贴图有无错乱;
(3)塌陷物体,按建筑物或者地块来塌陷,不要跨区域塌陷;
(4)按项目名称规的要求进行严格的标准的命名;
(5)无特殊要求前提下,所有物体的质心要归于中心,检查物体位置无误后锁定物体;备注:所有物体不准出现超过20000三角面的情况,否则导出时出错。
2.6命名规
模型不能使用中文命名(包括中文标点符号),必须使用英文命名,命名中不能包含“.”字符。
地形、建筑、角色模型不允许出现重名,必须按规命名。
所有美术资源后缀统一为小写字母。
材质名称命名:“mat”开头。
纹理贴图命名:“tex”开头。
模型命名规表:
2.7树木模型
用十字交叉树或简模树。
在种植树木的时候,要考虑到与周围建筑的关系,不能乱种树,要根据现状放置不同的树种、位置;重点建筑地块需种简模树,并在原地与之对应的种上十字片树(替换用);导出时模型树和与之对应的十字片树为单棵的,其它十字片树可塌一起。
注意:总体原则是控制面数,有的项目也会在unity3d中的地形上刷树木,根据不同项目会有对用制作规。
2.8模型级别
模型级别也就是模型的精细程度,有时我们在建模的时候要根据建筑所处的具体位置,重要程度对该建筑进行判断是建成何种精度的模型。
可以将建筑分为三个等级,如无特殊需求前提下,一般手游项目模型等级为一级,大型项目会考虑采用分级建模。
2.8.1 角色质心点
所有角色模型最好站立在原点。
没有特定要求下,必须以物体对象底部为质心点。
2.8.2主角面数
主角模型控制在900-1300个三角面(以最终导入unity3d中的三角面数量为准)。
贴图控制在1,最好256*256,最多512*512。
2.8.3小怪面数
小怪模型控制在600-900个三角面(以最终导入unity3d中的三角面数量为准)。
贴图控制在1,最大256*256。
2.8.4 武器面数
武器模型控制在115个三角面,187个顶点以。
贴图控制在1,最大256*256,最好128*128。
2.8.5 场景面数
场景(地形、建筑、其他装饰物)面数控制在10000面左右,贴图控制在最多2512*512。
2.9 镜像物体
用镜像复制的方法来创建新模型,需要加修改编辑器修正。
第一步:需要选中镜像后的物体,然后进入Utilities面板中单击Reset XForm,然后单击Reset Selected;
第二步:进入modfiy面板选取Normal命令,反转一下法线即可。
第三步:将模型转换为Editable Poly,不要带着修改器导出模型。
2.10缩放物体
如果在MAX中对模型进行过缩放,需要加修改编辑器修正。
第一步:需要选中缩放后的物体,然后进入Utilities面板中单击Reset XForm,然后单击Reset Selected;
第二步:将模型转换为Editable Poly,不要带着修改器导出模型。
第二章材质贴图规
1、材质和贴图类型
Unity3D该软件对模型的材质有一些特殊的要求,在我们使用的3dsMax中不是所有材质都被Unity3D软件所支持,只有下面几种材质是被Unity3D软件所支持。
Standard(标准材质)
默认的通用材质球。
Multi/Sub-Object(多维/子物体材质)
将多个材质组合为一种复合式材质,分别指定给一个物体的不同次物体选择级别。
要注意的是,在模型制作中,Multi/Sub-Object材质中的子材质一定要是Standard标准材质。
否则不被unity3d支持。
2、贴图通道及贴图类型
Unity3D目前只支持Bitmap贴图类型,其它所有贴图类型均不支持。
只支持Diffuse Color(漫反射)同self-Illumination(自发光,用来导出lightmap)贴图通道。
Self-Illumination(不透明)贴图通道在烘焙lightmap后,需要将此贴图通道额channel 设置为烘焙后的新channel,同时将生成的lightmap指向到self-Illumination。
3、贴图的文件格式和尺寸
模型的透明贴图为PNG,Unity3d不支持DDS格式贴图。
模型贴图文件尺寸必须是2的N次方(8、16、32、64、128、256、512),最大贴图尺寸不能超过(1024×1024)。
在烘培时将纹理贴图存为TGA 格式。
UI贴图尺寸可以不遵循2的N次方设计。
4、贴图和材质应用规则
(1)贴图不能以中文命名,不能有重名;
(2)材质球命名与物体名称一致;
(3)材质球的父子层级的命名必须一致;
(4)同种贴图必须使一个材质球;
(5)除需要用双面材质表现的物体之外,其他物体不能使用双面材质;
(6)材质球的ID号和物体的ID号必须一致。
(7)若使用CompleteMap烘焙,烘焙完毕后会自动产生一个Shell材质,必须将Shell 材质变为Standard标准材质,并且通道要一致,否则不能正确导出贴图。
(8)带Alpha通道的贴图存储为tga或者png格式,在命名时必须加_al以区分。
第三章模型导出
1、合并顶点,清除场景,删除没有用的一切物件。
2、没特殊需求不要导出灯光、虚拟体、相机等元素。
3、按要求导出fbx(检查看是否要打组导出),导出fbx后,再重新导入max中查看一遍fbx 的动画是否正确。
4、按要求导出FBX,一般导出FBX使用默认选项,如无动画文件,不要导出动画。
视具体情况导出动作。