当前位置: 首页 > news >正文

【Unity】3D功能开发入门系列(一)

Unity3D功能开发入门系列(一)

  • 一、开发环境
    • (一)安装 Unity
    • (二)创建项目
    • (三)Unity 窗口布局
  • 二、场景与视图
    • (一)场景
    • (二)游戏物体
    • (三)3D 视图
    • (四)世界坐标系
    • (五)视野中心
    • (六)透视与正交
  • 三、游戏物体
    • (一)3D 原生物体
    • (二)工具选项栏的使用
    • (三)更多操作
  • 四、模型
    • (一)网格
    • (二)材质
    • (三)纹理
    • (四)外部模型
    • (五)更多细节
    • (六)FBX的使用
      • (1)第一种使用方式:直接拖拽
      • (2)第二种使用方式:材质替换
      • (3)第三种使用方式:分解重组

一、开发环境

(一)安装 Unity

在这里插入图片描述

  1. 安装 UnityHub 启动器(需注册账号)
  2. 打开 UnityHub 后,安装 Unity 编辑器,推荐 LTS 版本(Long-term Support)
    在这里插入图片描述
    在这里插入图片描述

(二)创建项目

  1. 打开UnityHub,检查账户是否登录,检查许可证是否到期(到期就再激活个人版)
  2. 点击新建即可
  3. 下次在项目列表里打开即可

(三)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,也称贴图,用一张图定义物体的表面颜色

  • 添加贴图
    在这里插入图片描述
    在这里插入图片描述
  • 删除贴图
    在这里插入图片描述

建模师提供的模型,本身已经带了网格、材质、贴图

(四)外部模型

  1. Unity 支持各种 CG 建模软件:3Dmax、Maya、Blender、Cinema4D、ZBrush…
    标准格式:FBX
    在建模软件中,将模型导出为 FBX 格式即可

  2. 演示

  • 添加 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性能调优方法原理与实战

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…...

python print 函数参数:sep 自定义分隔符,end 自定义结尾符

1. 简述 print 函数可以将内容打印到标准输出&#xff0c;如果不指定 end 参数&#xff0c;默认在输出的内容之后加一个 “回车符\n”。 以下是 print 函数常用的参数用法&#xff1a; print(object, …, sepstr, endstr) object, …&#xff1a;要打印的内容&#xff0c;可以…...

git 使用场景

拉取分支 feature 以develop为基础 git checkout -b feature-x develop git checkout demobranch git branch 合并分支 idea 在feature 选 develop 合并到feature...

Ubuntu22.04 Docker更换阿里云镜像

由于运营商网络原因&#xff0c;会导致您拉取Docker Hub镜像变慢&#xff0c;甚至下载失败。那么可以更换阿里云镜像加速器&#xff0c;从而加速官方镜像的下载。 1.获取镜像加速器地址 登录容器镜像服务控制台&#xff0c;在左侧导航栏选择镜像工具 > 镜像加速器&#xf…...

Windows下Rust OpenCV环境配置

首发于Enaium的个人博客 安装Chocolatey 首先我们需要安装Chocolatey&#xff0c;Chocolatey是一个Windows的包管理器。 我们点击右上角的Install进入到Installing Chocolatey&#xff0c;选择Individual 复制命令 Set-ExecutionPolicy Bypass -Scope Process -Force; [Sys…...

PostgreSQL(二十三)TOAST技术

目录 一、TOAST简介 二、TOAST的存储方式 1、存储方式概述 2、实验&#xff1a;创建TOAST表 三、TOAST的4种压缩策略 1、策略说明 2、TOAST表额外的三个字段 四、TOAST表的计算方式 1、说明 2、实验&#xff1a;计算表大小 五、TOAST表的特点 1、优点 2、缺点 3、…...

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《海上风氢系统与沿海电网能量协同优化调度》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…...

MySQL update set语句中 逗号与and的区别

语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法&#xff1a; UPDATE table_name SET column1 value1, column2 value2, ... WHERE condition; 参数说明&#xff1a; table_name 是你要更新数据的表的名称。column1, column2, ... 是你要更新的列的名称。v…...

C++面试---小米

一、static 关键字的作用&#xff0c;及和const的区别 static关键字作用&#xff1a; 1、在类的成员变量前使用&#xff0c;表示该变量属于类本身&#xff0c;而不是任何类的实例。 2、在类的成员函数前使用&#xff0c;表示该函数不需要对象实例即可调用&#xff0c;且只能访问…...

Java 实现 AVL树

在二叉平衡树中&#xff0c;我们进行插入和删除操作时都需要遍历树&#xff0c;可见树的结构是很影响操作效率的。在最坏的情况下&#xff0c;树成了一个单支树&#xff0c;查找的时间复杂度成了O(N)&#xff0c;建树跟没建树一样。那么是不是有什么办法可以建一个树避免这种情…...

CNN卷积网络实现MNIST数据集手写数字识别

步骤一&#xff1a;加载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开发中&#xff0c;时间处理和时区管理是常见的需求&#xff0c;特别是在全球化应用中。Java 8引入了新的时间API&#xff08;java.time包&#xff09;&#xff0c;使时间处理变得更加直观和高效。本文将详细介绍Java中的时间处理与时区管理&#xff0c;通过丰富的代码示…...

虚拟机windows server创建域

目录 准备工作 一、新建域控制器 二、提升为域控制器添加新林 三、新建组织单位&#xff08;OU&#xff09;&#xff0c;用户 四、将计算机加域 五、在域控中管理计算机 六、在域控中配置组策略 七、域内计算机验证组策略配置 准备工作 安装域前&#xff0c;如果有DNS…...

Java 集合框架:Java 中的 Set 集合(HashSet LinkedHashSet TreeSet)特点与实现解析

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 017 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自…...

springboot智能健康管理平台-计算机毕业设计源码57256

摘要 在当今社会&#xff0c;人们越来越重视健康饮食和健康管理。借助SpringBoot框架和MySQL数据库的支持&#xff0c;开发智能健康管理平台成为可能。该平台结合了小程序技术的便利性和SpringBoot框架的快速开发能力&#xff0c;为用户提供了便捷的健康管理解决方案。 通过智能…...

LetterBox图像预处理方法

LetterBox图像预处理方法就是要将不同分辨率的图像转换成固定分辨率,比如v8输入网络的固定分辨率为6406403,因此这里分享一下默认情况下对训练集、验证集和测试图片做的letterBox的方法。 1.LetterBox-Train 对于训练集,默认输入网络的图像尺寸为640640,假设有一张7201280…...

C++第五篇 类和对象(下) 初始化列表

目录 1.再探构造函数 2.类型转换 3.static成员 4.友元 friiend 1.再探构造函数 (1).之前我们实现构造函数时&#xff0c;初始化成员变量主要使用函数体内赋值&#xff0c;构造函数初始化还有一种方式&#xff0c;就是初始化列表&#xff0c;初始化列表的使用方式是以一个冒…...

C#中的通信

上位机应用开发-串口通信1、基于C#的串口通信对象:SerialPort 2、字段属性 PortName:获取或设置通信端口 BaudRate:获取或设置串行波特率-DataBits:获取或设置每个字节的标准数据位长度 Parity:获取或设置奇偶校验检查协仪I-StopBits;获取或设置每个字节的标准停止位数 3、…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...