Unity开发者3D模型基础

术语“3D 建模”是指使用特殊软件创建对象或表面的 3D 数字表示的过程。 3D 模型可用于各种不同的目的,包括电影、视频游戏、建筑和工程。 3D 建模也是创建虚拟现实 (VR) 和增强现实 (AR) 体验工作的重要组成部分。

我们通常通过构建或获取 3D 模型并将其导入 Unity(一个 3D 游戏引擎)来创建虚拟现实场景。 在 Unity 中构建场景时,用户查看的每个组件都具有计算机图形管道中的资源遵循的特定层次结构。 他们是:

  • 网格 - 实际的几何形状
  • 纹理 - 位图图像
  • 材质 - 表面的外观(即反光或哑光以及纹理的链接位置)。 这也是着色器应用的区域。
  • 着色器 - 实际发生的计算。 将其视为一个小程序(脚本),帮助获取所有输入项(例如纹理、网格和照明数据)并将它们输出为最终图像

为了进一步解释每个组件,让我们看一下美国最大的电力公司之一创建的虚拟智能家居体验的一些示例。 在这种 VR 体验(及其配套的 AR 体验)中,消费者学习如何通过在整个家庭中进行节能改造来减少碳足迹。

我们要看到的主要模型是下图所示的餐厅。 最终渲染是所有四个组件(网格、纹理、材质和着色器)协同工作的示例。 现在让我们分解每个组件。

Unity 内的最终渲染

1、网格

首先是模型或网格。 这部分很容易理解。 3D 艺术家将在他们选择的建模程序中创建它。 我们使用 Blender,但 Maya、3DS Max 或 C4D 等其他软件也非常合适。3D 模型由众多顶点组成,这些顶点构成多边形,从而赋予 3D 模型形状。 更多的多边形可以帮助使模型更加真实,但太多也会对您正在开发的平台上的性能产生负面影响。

鉴于这是为实时应用程序创建的,多边形数量应保持尽可能低,以帮助最大限度地提高性能。 这对于桌面和移动 VR 来说尤其重要,因为在打造引人入胜的 VR 体验时保持稳定的帧速率至关重要。 这也有助于减少某些人可能经历的晕动病的感觉。

模型完成后,将对其进行 UV 处理、从建模程序导出并导入到 Unity 中。

显示拓扑的模型线框

2、纹理

在我们进一步讨论之前,让我们先退后一步。 创建模型后,必须对其进行 UV 展开。 这只是获取 3D 对象表面并将其放置在 2D 空间中的过程。

Blender 内的 UV 布局

从这里,你可以将模型带入 Substance Painter 等纹理程序中来创建纹理。 使用 Substance Painter 等程序的好处是它允许你导出各种图像,这些图像稍后在 Unity 中设置材质时会很有用。 这些图像可以更轻松地遵循基于物理的渲染(或 PBR),这是一种用于创建更准确渲染的工作流程。

对于标准的 PBR 工作流程,有 4 个主要组成部分:反照率(基色)、粗糙度(光泽程度)、金属性(是否是金属物体)和法线贴图(在不添加更多几何体的情况下伪造细节)。 此外,您还可以使用其他图像,例如环境光遮挡(一种模拟对象之间阴影的方法,在角落和其他紧密区域尤其明显)、发射和高度。

PBR贴图

3、材质

回到 Unity,在我们从纹理程序导出不同的图像后,是时候将它们连接到材质上了。 这些在下面的屏幕截图中进行了说明。 此外,如果你计划在纹理中使用透明度,则可以将表面类型从不透明更改为透明。 一个很好的例子是,如果你正在为游戏制作植物。 可以简单地使用一个平面并应用具有 Alpha 或透明度的叶子纹理,而不是对单个叶子进行建模。

Unity 内部材质和 URP/lit 着色器的一些输入

4、着色器

上面的屏幕截图还显示了方程式的最后一部分 - 使用哪个着色器。 对于 Unity 中的任何材质,你可以指定要使用的着色器(即使用哪种算法或程序来生成最终图形)。 对于我们的餐厅场景,我们使用了通用渲染管道/光照,它使用上一节中描述的 PBR 管道的所有输入。

为了更进一步,你甚至可以使用 Unity 中名为 Shader Graph 的新功能创建自己的着色器! 使用 Shader Graph,用户无需知道如何编码,而是可以通过放置称为节点的预定义代码位来直观地动态构建相同的逻辑。 如果想为特定用例构建特定着色器,这会很有帮助。 下面是两个这样的例子。

  • 示例1

在清洁能源智能家居体验中,我们需要模拟在电磁炉上烹饪汉堡肉饼。对于该模块,用户的任务是将汉堡放在炉子上,以演示电磁炉的特性并展示它如何 只烹饪平底锅上的食物。 为了完成此任务,需要半个煎锅的 3D 模型,以及一个自定义着色器来模拟这种过渡。

演示在电磁炉上烹饪肉饼的着色器示例

  • 示例2

我们在清洁能源智能家居体验中加入的一个设计元素是让全息图在某些时刻淡入和淡出,以帮助说明某些概念。 为了实现这一目标,我们再次需要自定义效果。 为了简洁起见,下面的溶解效果是各种节点的组合,这些节点创建了驱动着色器的 Alpha 透明度阈值的黑白蒙版。

全息图着色器示例

我们使用模型创建、纹理和着色器的工作流程来构建清洁能源智能家居体验中的所有模块和环境。 房子里的一些模块包括:

  • 电动汽车模块,将常规内燃汽车的效果与电动汽车的优点进行比较
  • 暖通空调模块,用户可以观察房屋内空气泄漏对能源效率的影响。
  • 电磁炉模块,比较了电磁炉和传统燃气灶的成本节约和碳排放量

创建或使用 3D 模型时需要考虑和学习的东西还有很多——本文仅触及皮毛。 然而,了解网格、纹理、材质和着色器如何协同工作是开始掌握创建真实 3D 对象和表面所需内容的好方法。 就该项目而言,我们构建了一种体验,允许用户在节能的虚拟智能家居中参与学习模块。 但掌握这四个组件可以让设计师创造出数量难以想象的动态 3D 场景,让用户眼花缭乱、沉浸其中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/798169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ssm028蜀都天香酒楼的网站设计与实现+jsp

基于JSP的蜀都天香酒楼管理系统的设计与实现 摘要 近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首先,根据收集到的用户需求分析,对设计系统有一个初步的认识与了解,确定蜀都…

ssm026校园美食交流系统+vue

校园美食交流系统 摘 要 1 前 言 3 第1章 概述 4 1.1 研究背景 4 1.2 研究目的 4 1.3 研究内容 4 第二章 开发技术介绍 5 2.1Java技术 6 2.2 Mysql数据库 6 2.3 B/S结构 7 2.4 SSM框架 8 第三章 系统分析 9 3.1 可行性分析 9 3.1.1 技术可行性 9 3.1.2 经济可行…

极客时间: 用 Word2Vec, LangChain, Gemma 模拟全本地检索增强生成(RAG)

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

第7章 数据安全

思维导图 7.1 引言 数据安全包括安全策略和过程的规划、建立与执行,为数据和信息资产提供正确的身份验证、授权、访问和审计。虽然数据安全的详细情况(如哪些数据需要保护)因行业和国家有所不同,但是数据安全实践的目标是相同的,即根据隐私和…

隐私计算实训营第七讲-隐语SCQL的开发实践

隐私计算实训营第七讲-隐语SCQL的开发实践 文章目录 隐私计算实训营第七讲-隐语SCQL的开发实践1.如何使用SCQL?2.使用流程3.SCQL部署4.SCQL使用示例4.1创建用户4.2创建项目&用户授权4.3创建表4.4设置CCL4.5发起联合分析查询 1.如何使用SCQL? 2.使用流…

Echarts实现高亮某一个点

背景 接口会返回所有点的数据,以及最优点的数据。产品要求在绘制图形后,高亮最优点,添加一个红色的样式,如图。点击select选择器时,可选择不同指标和花费对应的关系。 以下介绍实现思路 1、自定义配置选择器的数据源…

C#基础:类,对象,类成员简介(第四节课)

本节内容: 类与对象的关系 什么时候叫“对象”,什么时候叫实例引用变量与实例的关系 类的三大成员 属性方法事件 类的静态成员与实例成员 关于“绑定” 1.什么是类:(再详细一点) 类是对现实世界事物进行抽象所…

LLM是优秀的手语翻译者

LLM是优秀的手语翻译者 简介Related WorkMethodSignLLM Overviewector-Quantized Visual Sign ModuleCodebook Reconstruction and Alignment LLMs are Good Sign Language Translators 简介 基于观察,我们发现LLMs可以通过利用与之前学习过的语言的共有特性来有效…

CPU+GPU+NPU三位一体AI边缘控制器,三屏异显,搭载RK3588处理器

XMS-201采用了Rockchip RK3588八核64位处理器,集成ARM Mali-G610 MP4四核GPU,内置AI加速器NPU,可提供6Tops算力,支持主流的深度学习框架;性能强劲的RK3588可为各类AI应用场景带来更强大的性能表现,适用于机…

青蛙跳杯子【蓝桥杯】/bfs

青蛙跳杯子 bfs 思路:刚开始用的是dfs,但是不太行,DFS 可能会导致搜索深度过深,增加了时间复杂度,BFS 适合求解最短路径问题,BFS 在搜索过程中,首先访问距离初始节点最近的节点,因此…

STL--deque

deque 容器deque是一个双向队列(double-ended queue),可以在队列的两端进行元素的插入和删除操作。deque 和 vector 非常相似。也采用dynamic array(动态数组) 来管理元素,提供随机访向,并有着和 vector 几乎一模一样…

一文学会Semaphore(信号量)

// 空出来椅子 semaphore.release(count); } } catch (Exception e){ } } }; t.setName("Thread --> " i); t.start(); } } 程序将一直执行下去,不会漏单,也不会出现椅子占用数量大于20的情况。 AQS基础 Semaphore是一种共享锁&#xf…

js的qq换肤效果

文章目录 1. 演示效果2. 分析思路3. 代码实现3.1. 方式一3.2. 方式二3.3. 整体代码 1. 演示效果 2. 分析思路 先编写样式,弄好布局和排版。遍历这个集合,对每个图片元素(img)添加一个点击事件监听器。可以使用 for 或者 forEach …

【C++11】右值引用 + 移动语义 + 完美转发(重点)

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

第四百四十六回

文章目录 1. 概念介绍2. 使用方法3. 示例代码4. 经验与总结4.1 经验分享4.2 内容总结 我们在上一章回中介绍了"overlay_tooltip简介"相关的内容,本章回中将再谈flutter_launcher_icons包.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我…

python练习三

模式A num int(input("请输入模式A的层数:")) for i in range(1, num 1):# 画数字for j in range(1, i 1):print(str(j) "\t", end"")print() 模式B num int(input("请输入模式B的层数:")) for i in ran…

Pandas中的 .map 方法

1. Pandas中的 .map 方法 在Pandas中,.map 方法通常用于Series对象,它允许你根据一个字典或者函数对Series中的每个元素进行转换。 import pandas as pd # 创建一个简单的DataFrame df pd.DataFrame({ Name: [Alice, Bob, Charlie, Alice, Bob, C…

【stm32】SPI通信简介

SPI通信 SPI简介部分 所有SPI设备的SCK、MOSI、MISO分别连在一起 从主机引出多根SS选择线,分别接到每个从机的SS输入端,主机的SS线都是输出,从机的SS线都是输入,SS线 是低电平有效,同一时间主机只能选择一个从机 只能…

cmake学习笔记1

基础概念 CMake是什么? CMake是一个元构建系统(meta build-system),用于生产其他构建系统文件(如Makefile或Ninja)。 基础操作方式 CMake使用一个CMakeLists.txt文件描述配置,然后使用cmake驱动这个文件生成对应构建系统文件。…

websokcet服务端实现

一/websokcet服务端实现 步骤一&#xff1a; springboot底层帮我们自动配置了websokcet&#xff0c;引入maven依赖 1 2 3 4 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</arti…