Blender游戏资产优化技巧

创建视频游戏资产既具有挑战性又富有回报。 经过一些研究并根据我的经验,这里有三个技巧可以帮助你使用 Blender 优化游戏资产。

在 Blender 中优化游戏资源的三种技术可以归结为拥有高效的 3D 模型拓扑、通过烘焙优化纹理,以及最后通过 Blender 节点的快速锐化技巧。

让我们深入了解一下。

1、3D 模型的拓扑、几何形状和结构

在 Blender 中建模时,需要记住以下几点; 局部几何体、对模型轮廓没有贡献的边以及分解网格都可以。 在此示例中,我使用电视模型来帮助演示其中的一些技巧。

  • 通过仅在需要的地方添加循环或边缘、使用刀等工具重新定向边流并剔除不必要的边来局部化几何图形
  • 剔除不影响对象轮廓的边以优化几何形状,确保删除不必要的边而不改变对象的形状。
  • 为了获得更好的拓扑,请考虑分解网格。 无需添加大量点和边来创建集成特征(例如电视天线),只需将新形状(例如圆柱体)与现有网格相交即可。 这减少了几何形状,但可能具有较小的纹理空间和特写外观缺点

将电视的后通风口视为优化网格分离的示例。 我没有费力地将高几何形状的通风口与更简单的电视机身融合在一起,而是将其设计为独立的网格。 这种方法不仅更简单,而且反映了现实生活中的制造,其中电视由不同的面板和材料组成。 虽然这可以在 UV 空间中保留为单个对象,但不需要连接每个顶点。

简要回顾一下几个要点:定位几何图形、消除多余的边,并将对象分解为可管理的部分。

这是一门艺术,需要练习,所以根据需要重新审视这些概念,最重要的是,尝试对自己有耐心并经常练习。这项技能需要时间和练习来发展,所以根据需要回顾这些概念, 最重要的是,对自己要有耐心并定期练习。

2、通过烘焙优化纹理

使用 Blender 进行 3D 建模似乎很复杂,但拓扑之后的关键步骤之一是优化纹理,这是使用纹理烘焙完成的过程。

在UV展开我们的模型后,它呈现出不同的材质,例如电视玻璃和金属天线之间的不同属性。

各种纹理带来深度,为了提高引擎效率,这些材质被简化为一组烘焙贴图。 这一点至关重要,因为程序纹理虽然功能强大,但对于实时渲染来说很麻烦,并且无法直接导出到游戏引擎。 因此,烘焙将这些不同的材料汇聚成一种合并的烘焙材料。

对于游戏资产,纹理烘焙应始终遵循三角测量,确保多边形三角测量的一致性和可预测性。 为了组织和简化,每个元素都被简化为一组 PBR(基于物理的渲染)贴图,这些贴图向引擎通报对象的表面外观。

烘焙过程涉及创建一个标准图像(例如我在上面的 YT 视频中使用的名为 TV_4k_basecolor 的 4k 贴图),所有材质的基色都会复制到该图像中。 使用 Blender 的灵敏烘焙系统,该图像捕获了每种材料的基本信息。

在游戏中,效率至关重要。 虽然彩色贴图利用红色、绿色和蓝色通道,但单通道贴图(例如金属、粗糙度和环境光遮挡)只需要一个。 为了进行优化,游戏开发人员采用了一种称为通道打包的技巧,将三个单通道贴图压缩为单个图像的 RGB 通道。

此方法减少了引擎的绘制调用,确保其无缝运行、记住更少并避免检索多个图像的需要。

三个要点:

  • 纹理烘焙:将多个纹理融合到一张烘焙贴图中,以获得更好的引擎性能。
  • 烘焙前三角测量:确保纹理烘焙前多边形排列一致。
  • 通道打包:将三个单通道贴图组合成一张 RGB 图像以优化资源。

3、锐化

这是一个聪明的小技巧。 你是否尝试过在 Blender 的合成器中修饰图像?

只需轻触钻石锐化滤镜,你就可以使较低分辨率的图像变得突出,并且看起来与高分辨率图像一样清晰。 这种魔法可以让你使用较小的地图,同时保持事物清晰美观。

  • 深入研究 Blender 的合成器并尝试一下钻石锐化滤镜。
  • 通过一些锐化魔法,2K 图像可以像未锐化的 4K 图像一样明亮。

这是一个有趣且方便的技巧,但请记住不要做得太过分——让事情看起来自然。

4、结束语

我们已经完成了我的游戏资产优化指南! 我们已在 Blender 中准备好资源,准备好在任何游戏引擎中发挥作用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Spring AI 来了】

spring官方已经有Spring AI 插件,每个程序员必定拥抱AI,也意味着不就以后AI的open API 会成为我们开发成的基础jdk。 下面的内容也是AI直接根据网址给我翻译的,连格式都是生成的。AI应用已经渗透到各行各业了,并且会改变我们每个…

【八股】Java基础、集合、JVM

面向对象三大特性 1 封装: 将 方法 和 属性 写到同一个类中,并将属性 私有化,生成 get set方法,外部访问属性需要通过get和set方法,内部可以直接访问属性,这样的一个类我们认为它完成了封装。 2 继承: 子…

神经网络手写数字识别

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计4077字,阅读大概需要3分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号&#xf…

python安装pytorch@FreeBSD

先上结论,最后在conda下安装成功了! PyTorch是一个开源的人工智能深度学习框架,由Facebook人工智能研究院(FAIR)基于Torch库开发并维护。PyTorch提供了一个高效、灵活且易于使用的工具集,用于构建和训练深…

Python-VBA函数之旅-iter函数

目录 一、iter函数的常见应用场景: 二、iter函数使用注意事项: 三、如何用好iter函数? 1、iter函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页:神奇夜光杯-CSDN博客 …

AndroidStudio 新建工程的基本修改及事件添加

注:2022.3.1,新建Empty Activity默认是Kotlin,可以选择新建Empty View Activity,修改语言为JAVA 应用名称 修改应用名称 路径:res-values-strings.xml 是否显示应用名称 路径:res-values-themes.xml …

SpringMVC基础篇(一)

文章目录 1.基本介绍1.特点2.SpringMVC跟SpringBoot的关系 2.快速入门1.需求分析2.图解3.环境搭建1.创建普通java工程2.添加web框架支持3.配置lib文件夹1.导入jar包2.Add as Library3.以后自动添加 4.配置tomcat1.配置上下文路径2.配置热加载 5.src下创建Spring配置文件applica…

React.js 3D开发快速入门

如果你对 3D 图形的可能性着迷,但发现从头开始创建 3D 模型的想法是不可能的 - 不用担心! Three.js 是一个强大的 JavaScript 库,它可以帮助我们轻松地将现有的 3D 模型集成到 React 应用程序中。因此,在本文中,我将深…

Educational Codeforces Round 164 (Rated for Div. 2) A-E

A. Painting the Ribbon 暴力模拟即可 #include <bits/stdc.h>using namespace std; const int N 2e5 5; typedef long long ll; typedef pair<ll, ll> pll; typedef array<ll, 3> p3; // int mod 998244353; const int maxv 4e6 5; // #define endl &…

ICCV2023人脸识别TransFace论文及代码学习笔记

论文链接&#xff1a;https://arxiv.org/pdf/2308.10133.pdf 代码链接&#xff1a;GitHub - DanJun6737/TransFace: Code of TransFace 背景 尽管ViTs在多种视觉任务中展示了强大的表示能力&#xff0c;但作者发现&#xff0c;当应用于具有极大数据集的人脸识别场景时&#…

Leaflet实现离线地图展示,同时显示地图上的坐标点和热力图

在实际工作中,因为部署环境的要求,必须使用离线地图,而不是调用地图接口。我们应该怎么解决这种项目呢? 下面介绍一种解决该问题的方案:Leaflet+瓦片地图 一、Leaflet Leaflet 是一个开源并且对移动端友好的交互式地图 JavaScript 库。 它大小仅仅只有 42 KB of JS, 并且拥…

opencv图片绘制图形-------c++

绘制图形 #include <opencv2/opencv.hpp> #include <opencv2/core.hpp> #include <filesystem>bool opencvTool::drawPolygon(std::string image_p, std::vector<cv::Point> points) {cv::Mat ima cv::imread(image_p.c_str()); // 读取图像&#xf…

如何调节电脑屏幕亮度?让你的眼睛更舒适!

电脑屏幕亮度的调节对于我们的视力保护和使用舒适度至关重要。不同的环境和使用习惯可能需要不同的亮度设置。可是如何调节电脑屏幕亮度呢&#xff1f;本文将介绍三种不同的电脑屏幕亮度调节方法&#xff0c;帮助您轻松调节电脑屏幕亮度&#xff0c;以满足您的需求。 方法1&…

C++必修:从C到C++的过渡(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 贝蒂的主页&#xff1a;Betty’s blog 1. 缺省参数 1.1. 缺省参数的使用 缺省参数是声明或定义函数时为函数的参数指定…

直接插入排序与希尔排序的详解及对比

目录 1.直接插入排序&#xff08;至少有两个元素才可以使用&#xff09; 排序逻辑 B站动画演示&#xff1a;直接插入排序 逻辑转为代码&#xff1a; 稳定性&#xff1a;稳定 时间复杂度&#xff1a;O(N^2) 空间复杂度&#xff1a;O(1) 应用场景 2.希尔排序&#xff08;对…

VUE父组件向子组件传递值

创作灵感 最近在写一个项目时&#xff0c;遇到了这样的一个需求。我封装了一个组件&#xff0c;这个组件需要被以下两个地方使用&#xff0c;一个是搜索用户时用到&#xff0c;一个是修改用户信息时需要用到。其中&#xff0c;在搜索用户时&#xff0c;可以根据姓名或者账号进…

C++之STL-String

目录 一、STL简介 1.1 什么是STL 1.2 STL的版本 1.3 STL的六大组件 ​编辑 1.4 STL的重要性 二、String类 2.1 Sting类的简介 2.2 string之构造函数 2.3 string类对象的容量操作 2.3.1 size() 2.3.2 length() 2.3.3 capacity() 2.3.4 empty() 2.3.5 clear() 2.3.6…

【Unity】苹果(IOS)开发证书保姆级申请教程

前言 我们在使用xcode出包的时候&#xff0c;需要用到iOS证书(.p12)和描述文件(.mobileprovision) 开发证书及对应的描述文件用于开发阶段使用&#xff0c;可以直接将 App 安装到手机上&#xff0c;一个描述文件最多绑定100台测试设备 1.证书管理 进入网站Apple Developer &…

从虚拟化走向云原生,红帽OpenShift“一手托两家”

汽车行业已经迈入“软件定义汽车”的新时代。吉利汽车很清醒地意识到&#xff0c;只有通过云原生技术和数字化转型&#xff0c;才能巩固其作为中国领先汽车制造商的地位。 和很多传统企业一样&#xff0c;吉利汽车在走向云原生的过程中也经历了稳态业务与敏态业务并存带来的前所…