网站首页 > 技术文章 正文
我们以corona渲染器为例,介绍如何正确的实用法线贴图,该技巧通用与其他渲染器。
在凹凸通道里使用CoronaNormal,然后使用3ds Max Bitmap或者Corona Bitmap来载入一张法线贴图,后者能在渲染环节里提供你更多的控制选项:
当你载入一张法线贴图的时候,建议采用默认伽玛
那么问题来了,到底在使用的时候要注意些什么问题呢?
由于3D软件对于法线贴图的计算各有各的算法。比如说红色可以被看做“向上”的,也可以被看做是“下陷”的,
而蓝色通常被看做是“保持水平”的面对你的方向,而贴图本身可能会带有伽马修正,这个会对最后的结果产生影响。
这就是说,同一张法线贴图在不同的渲染器里产生的效果会不同,为了解决这个问题,CoronaNormal提供了这么几个选项:
1. "Add gamma to input"-这个选项会对贴图作用一个sRGB伽玛,这个选项在贴图自身缺少sRGB伽玛的时候必须选!
(cr会自动侦测贴图是否带有sRGB伽玛,会提示你要勾选该选项)
2.Flip red (X)-定义了贴图从左到右的方向(红色可以代表左也可以代表右)
3.Flip green (Y)-定义了贴图从下到上的方向(绿色代表了上或下的方向)
4.Swap red and green-定义了到底哪个颜色代表左右方向,哪个表现了上下方向。
如何知道应该用什么设置呢?一般我们都知道一个法线贴图大概看起来会是什么样子,
比如一个球体的法线贴图,或者一个金字塔形的法线贴图,但假如那个图案越来越复杂了,那就很难一眼看出问题出在了哪里了。
先来看这个例子,我们用一个半球的图案来生成一个法线贴图,这个贴图就会呈现下图这个样子
这个贴图的获取是用一个简单的场景渲染其法线通道获得的
接下来就来看看,在CoronaNormal里载入这个贴图,会有什么效果
很明显,凹凸的效果颠倒了,那些圆形应该是向上突起的才对。
那么我们来尝试修正这个贴图。先不用任何贴图,来看看这个测试物体渲染出来是什么样子的
这个渲染可以帮助我们测试伽玛到底要不要加,假如之后我们的伽玛不对,
那么我们看到的这个凹陷的感觉会不一样。让我们再次载入法线贴图,来看看"Add gamma to input" 这个选项会对结果产生什么影响:
不勾选的效果
勾选后的效果
对比两次的结果,我们可以很明显的看到,勾选"Add gamma to input" 这个选项不但不能解决我们的问题所在,
还让物体本身变得更加“平”了。那么在这个例子里,"Add gamma to input" 这个选项是绝对不需要勾选的,
换句话说,我们使用的这张法线贴图本身就已经自带了伽玛修正。
让我们取消伽玛,再来看看 "Flip green (Y)"这个选项
现在我们就发现,这个结果和我们预计的很接近了,小球都突出来了,物体的造型也是正确的,
接下来我们就要来调整一下法线贴图的强度了。
现在就是我们要的效果了,当然每次的调整都是根据贴图的实际情况而稍有不同的。
比如下图的砖墙效果里,解决的办法就是勾选伽玛,而反转绿色了
又比如下图的石子路的例子里,解决的办法是添加伽玛,而将红绿对换
注:你们觉得法线贴图好用吗?欢迎大家底下留言评论
猜你喜欢
- 2024-12-28 游戏画面绘图 透明特效的制作方法
- 2024-12-28 Lazarus 打印 raz打印方法
- 2024-12-28 Android 性能优化工具篇:如何使用 DDMS 中的 TraceView 工具
- 2024-12-28 TF Lite Model Maker: 构建安卓图片分类器
- 2024-12-28 用户界面控件Xtreme Calendar发布v17.0.0
- 2024-12-28 UG各版本安装时出现报警问题及解决方法
- 2024-12-28 记本人使用人工智能辅助编程的实践
- 2024-12-28 6.1 用Bitmap实现精确去重 bitmap字符串去重
- 2024-12-28 MFC常用函数与指令 mfcformat函数
- 2024-12-28 MFC中双缓冲技术 双缓冲技术java
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)