三维模型可以表示任何现实世界中存在的物体,自然也可以表示任何游戏世界中存在的物体,比如地面,山川河流,花草树木,建筑,人物,都需要使用三维模型来表示。一般我们使用一些建模软件来建出游戏中需要的模型,然后导入到Unity中使用,本篇就来介绍介绍,一整个的3D模型制作导入流程以及需要注意的问题。
前排提醒:本文仅代表个人观点,以供交流学习,若有不同意见请评论留言,笔者一定好好学习,天天向上。
阅读此文章时,若有不理解的地方,推荐观看本文列出的参考资料来对照阅读。
Unity版本[2019.4.10f1] 梦小天幼 & 禁止转载
三维模型不止用于游戏行业,还广泛应用于工业设计、建筑设计、三维动画等领域,并不是附属于游戏行业的存在,而是一个独立的体系。
很多人在第一次接触3D模型会遇到很多陌生的名词,如网格,纹理,材质,贴图等。通俗的讲:
网格是模型的形状,贴图是一张贴到物体表面的图片,纹理是物体表面的纹路,材质是模拟物体对光的交互
材质 = 贴图+纹理
模型 = 网格+材质
这样说还是不够严谨,关于贴图、材质、纹理这些概念,想要细讲还是要另开一篇再说吧。挖坑,准备22年5月底发。
Unity支持很多通用格式以及主流建模软件的导出格式,下面我简要列出一张表格。
本来我写了一大堆,支持的格式,支持的软件,但是后来一想好多杂七杂八的格式,我听都没听过,新手也不会接触,所以你们就记住FBX格式就行了,大多常见的建模软件都支持导入导出,并且支持材质动画骨骼,你在3Dmax做好的动画导入到Unity就能直接使用,这是最常用的格式。
上面表格列出了四种,下面我简要介绍一下这四种。
3D Max:知名但臃肿且启动速度极慢的不得不用的软件。
C4D:常用于影视、电商方面的设计。其他也有涉猎。
Blender:开源!全能!永远滴神!
Maya:主要用来做动画的,做动画这一块是业内顶级的!
Blender界面如上,版本为3.1.2
假如我现在有一个需求,我需要做一个LowPlay风格的游戏,需要一颗LowPlay的树,现在> 我们制作好这样一颗树。制作过程省略,结果如下
下面我给这棵树赋予一个绿色材质,树干和树叶材质分别命名为trunk,leaf
然后将该模型合并,并将模型的中心点设置为模型底部
(不合并会很麻烦,比如莫名其妙树干被移动了,树梢还在原地,倒不如合并为一个整体。至于什么时候合并什么时候不合并,可以参照现实世界,比如凳子你拿起来的时候是作为一个整体拿起来的,放到模型中,就可以合并为一个整体。比如桌子上的锅碗瓢盆与桌子本身,都是可以独立拿起的,那就不合并为整体。这个主要还是看游戏需求)
然后点击文件->导出->FBX,就会探出如下窗口
你需要注意上图特别标注出的几个选项。
- 缩放:代表你的模型被缩放到多少倍再导出,如果一般你是按照现实世界的比例来建模的,那么导入到Unity就不会失真,所以默认为1即可。
- 应用缩放:默认就可以
- 前进:这个特别注意,如果导入到Unity中,则需要改成,Z向前
- 向上:导入到Unity中则需要改成Y向上
如果你是需要导入到其他游戏引擎或建模软件,则需要理解这个游戏引擎的世界坐标系。比如Unity的坐标系是左手坐标系,Z前Y上X右。所以才需要更改坐标方向。
其他设置默认即可。
当你点击下面的"导出FBX"按钮后,你就导出了一个FBX文件,然后将该文件直接拖入Assets即可完成导入(或从菜单项的Assets->Import New Asset导入)
导入后的模型文件结构如下,有两个材质球,一个网格,将tree整体拖入场景,即可使用
这时你可以清晰的看到该模型的XYZ轴和世界坐标是对其的,如若刚才没有设置,那么这个树肯定是以一种很奇怪的方式出现的。
再用3DMax以同样的步骤演示一下
3DMax2019软件界面如下,模型也做好了,如下
当你导出时,会弹出该窗口,和上面说的blender一样,你只需要更改高级选项中的轴转化即可。但是3Dmax中默认就是Y轴向上,所以你完全不需要做任何更改,就能导出使用
导入Unity还是拖拽即可,然后拖放入场景中,如下。哦,忘记给材质了,不过问题不大。
关于3Dm模型导入到Unity中,你只需要注意以下几点:
无
https://zhuanlan.zhihu.com/p/163380009
https://www.zhihu.com/question/25745472?ivk_sa=1024320u
http://news.sohu.com/a/503415464_121143937
文章浏览阅读1.2k次。对于忙碌的职场人士来说,每天都有很多事情要处理。为了不把重要的事情漏掉,需要把待办的事项列下来,做完一个打勾一个,这样一看待办列表,自己做了多少事、还有多少事情没做就可以一目了然。现在有做完一个打一个勾的那种便签,可以帮助用户很好地记录待办事项,这样的便签就是敬业签。一起来看看,敬业签怎么新建待办并打勾完成吧!以手机敬业签为例:1:打开并登录敬业签后,点击底部的“待办”,新增一个待办分类。2:在分类管理页面点右上角+,启动新增待办分类菜单,分类类型选择“待办”,然后填写分类名称并点右下角新增,就可_有没有app 计划多少个 实际完成多少个
文章浏览阅读2.6k次。ONVIF鉴权实现代码生成gSOAP框架代码,这个网上有很多教程,需要加入很多文件,并且需要openssl库。加入需要鉴权的文件和openssl库以后,只需要加每个接口中加入鉴权操作的代码,调用的时候就能实现鉴权。ONVIF的鉴权分两种: HTTP Digest 和 WS-Username Token在ONVIF Device Test Tool上可以对两种鉴权分别进行测试。authenticate.h#ifndef __AUTHENTICATE_H__#define __AUTHENTICAT_digest&ws-username token
文章浏览阅读1.2k次。该篇文章主要来介绍如何减少APK体积,以帮助用户更快地下载App,并加速安装/更新过程。_android apk 大小优化
文章浏览阅读1.3k次。 --/*-----存储过程 分页处理 孙伟 2005-03-28创建 -------*/--/*----- 对数据进行了2分处理使查询前半部分数据与查询后半部分数据性能相同 -------*/--/*-----存储过程 分页处理 孙伟 2005-04-21修改 添加Distinct查询功能-------*/--/*-----存储过程 分页处理 孙伟 2005-05-18修改 多字段排序规则问题-_top 搭配not in 性能
文章浏览阅读1.5w次,点赞3次,收藏10次。VueUse官方链接一、什么是VueUseVueUse不是Vue.use !!!它是一个基于 Composition API 的实用函数集合,下面是具体的一些用法二、如何引入import { 具体方法 } from ‘@vueuse/core’三、下面来看看一些具体的用法1、useMouse:监听当前鼠标坐标的一个方法,他会实时的获取鼠标的当前的位置2、usePreferredDark:判断用户是否喜欢深色的方法,他会实时的判断用户是否喜欢深色的主题3、useLocalStorage:数据_vueuse/core
文章浏览阅读736次。转自:爱数据LoveD大家好,我是小z,也可以叫我阿粥~今天给大家分享一波统计学重要概念,顺便前排提示文末送书~从高的角度来看,统计学是一种利用数学理论来进行数据分析的技术。象柱状图这种基本的可视化形式,会给你更加全面的信息。但是,通过统计学我们可以以更富有信息驱动力和针对性的方式对数据进行操作。所涉及的数学理论帮助我们形成数据的具体结论,而不仅仅是猜测。利用统计学,我们可以更深入、更细致地观察数..._统计学五大基本原理
文章浏览阅读9.3k次。问题:EL表达式比较字符串或是数字格式的数值是否相等,为true,却不执行为true时的代码。示例:true原因:有可能是test="${ 1 == 1}(这里多个空格)",即大括号与双引号之间多了空格,这个时候,就不会打印true。去掉多余的空格就可以了_el 表达式 判断字符串和数字相等
文章浏览阅读2k次。common_handle_option (continue) 909 case OPT_fcall_used_:910 fix_register (arg, 0, 1);911 break;912 913 case OPT_fcall_saved_:914 fix_register (arg, 0, 0)_-feliminate-unused-debug-types
文章浏览阅读2.7k次。商品参数作者:杨云著出版社:清华大学出版社出版时间:2013-8-1版次:1印次:1印刷时间:2013-8-1页数:434开本:16开装帧:平装ISBN:9787302318286版权提供:清华大学出版社编辑推荐《软件开发训练营·ASP.NET开发一站式学习:难点·案例·练习》特色:1.《软件开发训练营·ASP.NET开发一站式学习:难点·案例·练习》所讲内容既避开艰涩难懂的理论知识,又覆盖了编程..._python语言程序设计实践教程陈东课后习题答案解析
文章浏览阅读2k次。构建:从debug换成release:就可以正常运行了_qt安装后构建可以,运行就一直提示程序异常
文章浏览阅读601次。什么是机器学习?简单来说就是让机器帮我们找一个函数,即一个映射。如声音—>文字的语音识别函数自变量可以是向量,矩阵(图像识别),序列输出是数值、图片等课程讲什么?一、监督学习,给定图片人工的告诉机器其类型,训练模型,让机器拥有 f(图片)—>类型 这一函数二、训练模型之前进行Pre-train,让机器学习如何辨别图片这一基本功,因为人工输入图片类型过于繁琐。只需传入大量图片资料即可自动训练。如把图片翻转、变色,询问机器是不是可以..._李宏毅2021机器学习笔记 百度
文章浏览阅读1.7k次。两个map合并成一个map,用insert()函数就可以了,看代码:#include <map>#include <iostream>int main(){ std::map<int, int> v1 = {{1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}}; std::map<int, int> v2 = { {3, 2}, {4, 2}, {5, 2}, {6, 2}, {7_c++ map合并