[游戏开发][渲染篇][第一篇]渲染的本质

什么是渲染,一句话,每个像素塞入颜色拼成一张图就是渲染。

宏观上看,渲染就是让用户在显示器上看到物体的图像,微观上看,渲染就是显示器的每个单元上显示它该呈像的颜色。既然要呈像颜色则必然要获取颜色,计算机渲染获取颜色的方式有两种,分别是贴图和shader模拟。shader中的fragment shader像素着色器的输出色比较好理解,逐像素输出后肯定能拼成一张完整的图像,贴图是如何取色的呢。提到贴图肯定绕不开顶点了,因为无论是模型还是UI都是由顶点组合成的若干个三角形而组成。

    

 上面两张图分别是3D模型和2D UI的顶点示意图,图中红圈标记的是顶点位置,一个平面由4个顶点组合成的两个三角形构成,而一个立方体由8个顶点组合成的12个三角形构成,额外小知识(在Unity中由于顶点是不共用的,因此一个立方体有4顶点*6个面=24个顶点),渲染要关注的不是平面而是三角形,贴图是如何贴在三角形上的呢,下面介绍建模、展UV、制作UV贴图等一系列操作,素材照片是我从一个展UV视频教程上截图下来的,该博主想参照图片中的铁盒子,建模并制作UV贴图,示例如下,一个比较普通的金属盒子,并带有外部喷漆

展UV视频地址:CSDN

 第一步,在建模软件中构建出该盒子的模型,建模过程就像是工厂把这个铁盒压出来一样。

 第二步,在建模软件中展UV,作者只展开了盒子盖,盒子箱体并没有展UV,展UV操作会生成一个UV文件,选中的黄色线框就是UV文件细节,请注意,这个线框是由无数个三角形构成的,包括所有的曲面也是三角形构成。

第三步,在UV贴图工具中制作UV贴图,最后选择导出贴图,常见的UV贴图格式为png、tga

 

 第四步,在模型软件中应用UV贴图,效果如下图(在引擎中也是导入FBX模型,导入UV贴图查看)

上文简单介绍了建模和展UV的过程,言归正传,上文提问贴图是如何贴在三角形上的,其实是在展UV的时候,映射了每个三角形和UV贴图的对应关系,首先看下图,UV中的U代表横向坐标(值0-1),V轴代表纵向坐标(值0-1),纵横10*10,每个格子代表0.1个UV,这个就是UV贴图区域,我们以红色圆圈标注的最大号三角形为例,该三角形的三个顶点分别在UV贴图的15、51、58格子中,并且每个顶点一定有一个精确的UV数据,例如上顶点的UV值为(0.5214,0.8315),请注意UV的坐标原点在左下角,关键来了!!当三角形顶点有了精确的贴图坐标后,就可以定位贴图了!!!这一点非常重要

 

 假设我们把这个模型导入到Unity中,看到的效果肯定和第四步中的效果一样,原因是!当Unity渲染模型时,该物体肯定有MeshFilter和MeshRenderer组件,MeshFilter组件存储网格顶点数据,MeshRenderer组件上有材质球,材质球里索引了贴图,三角形顶点会定位贴图的位置,有了贴图的位置就可以从贴图里取颜色啦,由于三个顶点已经把贴图的区域给确定了,三个顶点的颜色肯定能从贴图中精确取出,但三角形内部的颜色如何取呢?前面也说了,三个顶点已经把贴图的区域给确定,因此三角形内部的颜色通过UV差值坐标的方式从UV贴图中获取,反正从贴图中取颜色必定要给UV坐标。

上面这段文字只是大概的描述了如何从贴图上取色,如果要准确且正确的描述如何取色,那就要涉及到渲染管线,毕竟渲染管线是渲染知识的基础核心。本篇到此结束,下一篇开始讲解渲染管线。

总结:

渲染是面向用户的,用户并不关心硬件渲染物体的流程有多么复杂,用户关心的是能否看到画面,颜色是否正确。因此渲染的本质就是拿到颜色,显示到屏幕,就这么简单。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Little丶Seven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值