【Unity】3D功能开发入门系列(一)
Unity3D功能开发入门系列(一)
- 一、开发环境
- (一)安装 Unity
- (二)创建项目
- (三)Unity 窗口布局
- 二、场景与视图
- (一)场景
- (二)游戏物体
- (三)3D 视图
- (四)世界坐标系
- (五)视野中心
- (六)透视与正交
- 三、游戏物体
- (一)3D 原生物体
- (二)工具选项栏的使用
- (三)更多操作
- 四、模型
- (一)网格
- (二)材质
- (三)纹理
- (四)外部模型
- (五)更多细节
- (六)FBX的使用
- (1)第一种使用方式:直接拖拽
- (2)第二种使用方式:材质替换
- (3)第三种使用方式:分解重组
一、开发环境
(一)安装 Unity
- 安装 UnityHub 启动器(需注册账号)
- 打开 UnityHub 后,安装 Unity 编辑器,推荐 LTS 版本(Long-term Support)
(二)创建项目
- 打开UnityHub,检查账户是否登录,检查许可证是否到期(到期就再激活个人版)
- 点击新建即可
- 下次在项目列表里打开即可
(三)Unity 窗口布局
- 恢复默认布局
- 调大页面字体
二、场景与视图
(一)场景
场景Scene,即游戏中的一处场景、关卡
创建项目时,默认创建了一个场景:SampleScene,只有一个主摄像机和平行光源
(二)游戏物体
游戏物体GameObject,即游戏中的任何角色、道具、建筑等
1. 创建
2. 操作
-
选择物体,以橙色轮廓显示
-
右键 Hierarchy 中的物体,Remane、Duplicate(复制/克隆)、Delete
-
右侧 Inspecter 窗口(物体组件信息),观察物体的做坐标
(三)3D 视图
1. 视觉辅助
- 导航器 Gizmo,表示世界坐标的方向
- 栅格 Grid,表示XZ坐标平面
- 天空盒 Skybox,表示游戏世界的背景
2. 视图相关操作 - 旋转视图:
Alt+LMB(Left Mouse Button)
- 缩放视图:
鼠标滚轮、Alt+RMB
- 平移视图:
MMB(鼠标中键)
3. 导航器相关操作
- 恢复方向:
按 Shift + 点中间的小方块
- 顶视图:
点 Y 轴
- 右视图:
点 X 轴
- 前视图:
点 Z 轴
(四)世界坐标系
- 3D游戏世界的坐标系:左手坐标系
- 物体坐标,由(x,y,z)定义,也可以直接在 Inspector 窗口指定
- 游戏中的方向感:Y轴代表上下,X/Z轴代表 东西南北
(五)视野中心
视野中心,即当前 3D 视图的中心点。
- 在旋转视图时,视图绕着视图中心旋转。在 Unity 中,不支持绕着某个物体旋转视图。但如果想绕着一个物体四周旋转:
法一:
中键点击物体
,视角会自动移过去,再旋转
法二:选中物体,按 F键
,置于视图中心,再旋转
- 充当出生点:添加一个新物体,物体位于视图中心,而不是在(0,0,0)
(六)透视与正交
(1)透视图下,物体 “近大远小” ;正交视图下,物体的显示与距离无关
- 透视视图 Perspective,近大远小
- 正交视图 Orthographic,又称等距视图 lsometric
常用于物体的布局、对其操作 —— 正交顶视图、正交右视图、正交前视图
(2)透视、广角设定
摄像机的广角 Field(默认为60°)
广角越大,视觉畸变越厉害。可以设为 30° ~ 40°
三、游戏物体
(一)3D 原生物体
1. Unity自带的几种基本模型
- Cube,立方体
- Sphere,球体
- Capsule,胶囊体
- Cylined,圆柱体
- Plane,平面
2. Unity尺寸单位,约定为1米
== 3. 原生模型仅用于练习,真正的建模应该在建模软件中制作==
CG建模软件:3Dmax、Maya、Blender、Cinema4D、ZBrush……
(二)工具选项栏的使用
== 1. 移动工具==
- 沿坐标轴移动
- 在坐标平面内移动
- 可以在 Inspecter 里精确指定,或者 Reset 重置
- 当物体位置重叠时,最好在 Hierarchy 窗口选中物体,即使物体被遮挡,也是可以操作的
2. 旋转工具
- 逆时针为正,顺时针为负
- 可以在 Inspector 里精确指定
- 按住 Ctrl 键时,角度增量为 15°
栅格吸附设置,可以指定一次可旋转的刻度
3. 缩放工具
另:
快捷键 W、E、R
- 操作模式,保持默认
Pivot 轴心 / Center 中心点
Global 世界坐标系 / Local 局部坐标系
(三)更多操作
1. 多选
- 按 Ctrl / Shift 键,点选
- 在 3D 视图中,鼠标框选
2. 复制
- 选中物体,
Ctrl + D
复制物体 - 右键 -> Duplicate
3. 聚焦
选中物体,按 F 键
,置于视野中心+拉近显示选中物体,按中键
,只置于视野中心,大小显示不变在 Hierarchy 中双击节点(物体)
4. 激活 Activate
- 选中物体,在 Inspector 中 激活/禁用 物体
5. 对齐
进入 正交顶 / 右 / 后视图,方便观察
- 小练习
- AF 插件
四、模型
(一)网格
1. 网格 Mesh,存储了模型的形状数据
- 模型的形状,由若干个小面围合而成
- 模型是中空的
- Mesh 中包含了面、顶点坐标、面的法向等数据
2. 在 Unity 中观察模型的网格
-
Shaded 着色模式,显示表面材质
-
Wireframe 线框模式,仅显示网格
-
Shaded Wireframe 线框着色模式
- 显然,任何物体的表面都是由若干三角面围成的
面数越多,物体表面越精细、GPU负担也越重(高模:面数极多、高精度的模型)
(二)材质
1. 材质 Material,定义了物体的表面细节
- 颜色
- 金属 / 非金属
- 光滑 / 粗糙
- 透明 / 半透明 / 不透明
- 凹陷 / 突起
2. 如何给物体添加一个材质
-
添加一个目录
-
添加一个材质 Create / Material
-
给物体指定材质
注意:将资源拖到检查器的操作,中途一定不要松手,不然就成了选中操作。或者,先锁定 Inspector,拖拽完再解锁
(三)纹理
纹理 Texture,也称贴图,用一张图定义物体的表面颜色
- 添加贴图
- 删除贴图
建模师提供的模型,本身已经带了网格、材质、贴图
(四)外部模型
-
Unity 支持各种 CG 建模软件:3Dmax、Maya、Blender、Cinema4D、ZBrush…
标准格式:FBX
在建模软件中,将模型导出为 FBX 格式即可 -
演示
- 添加 Models 目录,添加模型 (*.fbx) 和贴图文件
- 观察
- 在 fbx 文件中,包含了 Mesh 和 Material
- 独立在外的贴图文件
- 右下角 Preview 预览窗口
- 在 Project 窗口中,调节显示
- 使用
(五)更多细节
1. 正面、背面
在 Unity 中,一个平面是没有厚度的,正面可见、背面透明,或者说平面的背面不会被渲染
2. 默认材质
默认的,物体具有一个材质 Default-Material(Unity自带),如果没有任何材质,则以紫色显示
(六)FBX的使用
(1)第一种使用方式:直接拖拽
1. 演示
选择 *.fbx 文件,直接拖到层级窗口
观察节点图标
选中节点,观察 Inspector 中的操作按钮
2. 贴图
- 有的模型需要贴图文件
- 贴图文件的路径是约定好的,与 fbx 相同目录,或者同级 Textures 目录的子目录
3. 材质
有的模型定义了多个材质,在 Materials 属性中定义了一个数组
(2)第二种使用方式:材质替换
1. 材质的重映射Remap
选中 *.fbx 文件
在 Inspector 中切到 Materials 属性,Use Embeded Materials,On Demand Remap(映射新材质)
点 Apply 应用设置
2. 使用外部材质
选中 fbx 文件
Location :Use External Materials 使用外部材质
点 Apply 应用,则将内嵌材质解压缩到 Materials 目录
直接修改 Materials 目录下的材质文件
(3)第三种使用方式:分解重组
选择 fbx 中的网格
选择 fbx 中的材质,或者自定义一个材质
如果存在贴图,则使用 fbx 配套的贴图文件
完
相关文章:
【Unity】3D功能开发入门系列(一)
Unity3D功能开发入门系列(一) 一、开发环境(一)安装 Unity(二)创建项目(三)Unity 窗口布局 二、场景与视图(一)场景(二)游戏物体&…...
【Python体验】第五天:目录搜索、数据爬虫(评论区里写作业)
文章目录 目录搜索 os、shutil库数据爬虫 request、re作业:爬取案例的top250电影的关键信息(名称、类型、日期),并保存在表格中 目录搜索 os、shutil库 os 模块提供了非常丰富的方法用来处理文件和目录。 os.listdir(path)&#x…...
elasticsearch性能调优方法原理与实战
❃博主首页 : 「码到三十五」 ,同名公众号 :「码到三十五」,wx号 : 「liwu0213」 ☠博主专栏 : <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 :…...
python print 函数参数:sep 自定义分隔符,end 自定义结尾符
1. 简述 print 函数可以将内容打印到标准输出,如果不指定 end 参数,默认在输出的内容之后加一个 “回车符\n”。 以下是 print 函数常用的参数用法: print(object, …, sepstr, endstr) object, …:要打印的内容,可以…...
git 使用场景
拉取分支 feature 以develop为基础 git checkout -b feature-x develop git checkout demobranch git branch 合并分支 idea 在feature 选 develop 合并到feature...
Ubuntu22.04 Docker更换阿里云镜像
由于运营商网络原因,会导致您拉取Docker Hub镜像变慢,甚至下载失败。那么可以更换阿里云镜像加速器,从而加速官方镜像的下载。 1.获取镜像加速器地址 登录容器镜像服务控制台,在左侧导航栏选择镜像工具 > 镜像加速器…...
Windows下Rust OpenCV环境配置
首发于Enaium的个人博客 安装Chocolatey 首先我们需要安装Chocolatey,Chocolatey是一个Windows的包管理器。 我们点击右上角的Install进入到Installing Chocolatey,选择Individual 复制命令 Set-ExecutionPolicy Bypass -Scope Process -Force; [Sys…...
PostgreSQL(二十三)TOAST技术
目录 一、TOAST简介 二、TOAST的存储方式 1、存储方式概述 2、实验:创建TOAST表 三、TOAST的4种压缩策略 1、策略说明 2、TOAST表额外的三个字段 四、TOAST表的计算方式 1、说明 2、实验:计算表大小 五、TOAST表的特点 1、优点 2、缺点 3、…...
文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《海上风氢系统与沿海电网能量协同优化调度》
本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…...
MySQL update set语句中 逗号与and的区别
语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法: UPDATE table_name SET column1 value1, column2 value2, ... WHERE condition; 参数说明: table_name 是你要更新数据的表的名称。column1, column2, ... 是你要更新的列的名称。v…...
C++面试---小米
一、static 关键字的作用,及和const的区别 static关键字作用: 1、在类的成员变量前使用,表示该变量属于类本身,而不是任何类的实例。 2、在类的成员函数前使用,表示该函数不需要对象实例即可调用,且只能访问…...
Java 实现 AVL树
在二叉平衡树中,我们进行插入和删除操作时都需要遍历树,可见树的结构是很影响操作效率的。在最坏的情况下,树成了一个单支树,查找的时间复杂度成了O(N),建树跟没建树一样。那么是不是有什么办法可以建一个树避免这种情…...
CNN卷积网络实现MNIST数据集手写数字识别
步骤一:加载MNIST数据集 train_data MNIST(root./data,trainTrue,downloadFalse,transformtransforms.ToTensor()) train_loader DataLoader(train_data,shuffleTrue,batch_size64) # 测试数据集 test_data MNIST(root./data,trainFalse,downloadFalse,transfor…...
深入理解Java中的时间处理与时区管理
在Java开发中,时间处理和时区管理是常见的需求,特别是在全球化应用中。Java 8引入了新的时间API(java.time包),使时间处理变得更加直观和高效。本文将详细介绍Java中的时间处理与时区管理,通过丰富的代码示…...
虚拟机windows server创建域
目录 准备工作 一、新建域控制器 二、提升为域控制器添加新林 三、新建组织单位(OU),用户 四、将计算机加域 五、在域控中管理计算机 六、在域控中配置组策略 七、域内计算机验证组策略配置 准备工作 安装域前,如果有DNS…...
Java 集合框架:Java 中的 Set 集合(HashSet LinkedHashSet TreeSet)特点与实现解析
大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 017 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自…...
springboot智能健康管理平台-计算机毕业设计源码57256
摘要 在当今社会,人们越来越重视健康饮食和健康管理。借助SpringBoot框架和MySQL数据库的支持,开发智能健康管理平台成为可能。该平台结合了小程序技术的便利性和SpringBoot框架的快速开发能力,为用户提供了便捷的健康管理解决方案。 通过智能…...
LetterBox图像预处理方法
LetterBox图像预处理方法就是要将不同分辨率的图像转换成固定分辨率,比如v8输入网络的固定分辨率为6406403,因此这里分享一下默认情况下对训练集、验证集和测试图片做的letterBox的方法。 1.LetterBox-Train 对于训练集,默认输入网络的图像尺寸为640640,假设有一张7201280…...
C++第五篇 类和对象(下) 初始化列表
目录 1.再探构造函数 2.类型转换 3.static成员 4.友元 friiend 1.再探构造函数 (1).之前我们实现构造函数时,初始化成员变量主要使用函数体内赋值,构造函数初始化还有一种方式,就是初始化列表,初始化列表的使用方式是以一个冒…...
C#中的通信
上位机应用开发-串口通信1、基于C#的串口通信对象:SerialPort 2、字段属性 PortName:获取或设置通信端口 BaudRate:获取或设置串行波特率-DataBits:获取或设置每个字节的标准数据位长度 Parity:获取或设置奇偶校验检查协仪I-StopBits;获取或设置每个字节的标准停止位数 3、…...
CVE-2022-21663: WordPress <5.8.3 版本对象注入漏洞深入分析
引言 在网络安全领域,技术的研究与讨论是不断进步的动力。本文针对WordPress的一个对象注入漏洞进行分析,旨在分享技术细节并提醒安全的重要性。特别强调:本文内容仅限技术研究,严禁用于非法目的。 漏洞背景 继WordPress CVE-2…...
C语言笔试题(三)
本专栏通过整理各专业方向的面试资料并咨询业界相关人士,整合不同方向的面试资料,希望能为您的面试道路点亮一盏灯! 1 简单题 如何声明一个二维数组? 答案: int arr[3][4];解析: 二维数组可以看作数组的数组。 union和struct…...
minio笔记之windows下安装使用
minio安装使用 去官网下载安装包启动访问管理平台创建桶创建用户、资源授权访问访问策略创建创建用户创建accessKey,用于应用程序开发 去官网下载安装包 直接安装即可 启动 设置密码 set MINIO_ROOT_USERadmin set MINIO_ROOT_PASSWORD12345678 cd到安装目录 mi…...
代码随想录算法训练营day31 | 56. 合并区间、738.单调递增的数字
碎碎念:加油 参考:代码随想录 56. 合并区间 题目链接 56. 合并区间 思想 这道题的核心还是判断重叠区间,本题和之前做过的452. 用最少数量的箭引爆气球、435. 无重叠区间的区别在于判断出重叠区间之后的操作,本题需要做的是合…...
利用 Python 制作图片轮播应用
在这篇博客中,我将向大家展示如何使用 xPython 创建一个图片轮播应用。这个应用能够从指定文件夹中加载图片,定时轮播,并提供按钮来保存当前图片到收藏夹或仅轮播收藏夹中的图片。我们还将实现退出按钮和全屏显示的功能。 C:\pythoncode\new\…...
报表系统之Cube.js
Cube.js 是一个开源的分析框架,专为构建数据应用和分析工具而设计。它的主要目的是简化和加速构建复杂的分析和数据可视化应用。以下是对 Cube.js 的详细介绍: 核心功能和特点 1. 多数据源支持 Cube.js 支持从多个数据源中提取数据,包括 SQ…...
代码随想录算法训练营第45天
115.不同的子序列 但相对于刚讲过 392.判断子序列,本题 就有难度了 ,感受一下本题和 392.判断子序列 的区别。 代码随想录 class Solution {public int numDistinct(String s, String t) {int lenS s.length();int lenT t.length();int[][] dp new …...
solidity合约创建
合约可以通过使用new关键字来创建其他合约的实例。 这个过程会执行被创建合约的构造函数(如果存在的话),并返回一个指向新创建合约的地址的引用。 这种方式允许智能合约动态地在区块链上部署新合约,并与它们交互。 通过 new 创…...
队列---循环队列实现
循环队列详解 概述 循环队列是一种基于数组实现的队列数据结构,其中队列的队首和队尾是通过模运算连接起来形成一个逻辑上的环形结构。这样可以有效地利用数组的空间,避免出现“假溢出”的情况。 结构体定义 循环队列的结构体定义如下: …...
【视频讲解】后端增删改查接口有什么用?
B站视频地址 B站视频地址 前言 “后端增删改查接口有什么用”,其实这句话可以拆解为下面3个问题。 接口是什么意思?后端接口是什么意思?后端接口中的增删改查接口有什么用? 1、接口 概念:接口的概念在不同的领域中…...
如何加快门户网站建设方案/免费推广网站
现有项目再有git库git init git add . git commit -m "init" git remote add origin https://github.com/wancy86/test.git git push -u origin master 添加.ignore文件, 下面的两个方式都可以cd .>.ignore vim .ignore ignore的用法# 以#开始的行,被视…...
网站站群/网络营销出来做什么
这次学习NetworkRepresentation Learning with Rich Text Information这篇论文,是关于embedding方面的。 1 摘要 表示学习已经在很多项目任务中表现出了它的功效,比如图像识别或文本采集。网络表示学习旨在对于每个节点的进行矢量表示,这种…...
广州全面开放疫情政策/南昌seo优化
题意:告诉你数列中的一段数满足大于或小于不等式关系,让你求是不是存在这样一个数列。 思路:典型的差分约束的题。主要的步骤是这样的先建图后用SPFA算法判断存不存在负环。 SPFA算法的具体实现见我的《最短路算法总结》。下面讲一下如何建图…...
wordpress命令执行时间/百度官网地址
Item 2:Prefer readonly to const 这个Item主要讲作为常量的两种形式(readonly和const)的区别。 const是编译时常量,指在编译时直接把这个静态常量直接替换成相应的数值readonly是运行时常量,指编译时任然是静态常量,在…...
北京市疫情最新情况/优化网站怎么做
点击上方蓝字“Revit”关注我们吧!目前100000人已关注加入我们-正文-BIM社区网友解答:1、首先在电脑中打抄开revit,在Revi的三袭维视图界面,点击左上角图标suit工作流方式。2、将Revit的三维模型通过以场景文件直接在3Dmax中打开。…...
专业做尼泊尔的旅行网站/自己做网站制作流程
浅谈主板在计算机硬件系统中的重要性2014-04-04 18:36阅读:164浅谈主板在计算机硬件系统中的重要性壹 主板的功能一、主板又称为主机板、母板,安装在机箱内,是计算机最基本的也是最重要的部件之一。二、主板为CPU、内存和各种功能卡(显卡、声…...