您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 Game艺视界 于 2022-3-28 18:22 编辑
本期内容 今天我们要讨论切空间、对象空间,世界空间和视图空间,我们开始吧! 之前的教程我讲过切线空间、对象空间、世界空间。今天我将解释这些是什么以及在我们开始之前如何使用它们理解这一点很重要。 我们首先要讲的所有不同的空间由一个原点定义,由三个点组成我已经用红色绿色和蓝色的箭头表示了x, y, z方向。关于空间我们先谈谈世界空间
我用这组中间的箭头这组红绿蓝箭头是世界的原点,用这个蓝色的平面表示我们可以看到这些向量表示方向所以这是沿着这个方向的x方向,这是沿着这个轴的y方向,然后这是蓝色轴上的z方向,这是3ds Max,所以它是一个z-up环境和而unreal也是一个实际匹配的 z-up 环境 unity是一个y-up环境,所以如果我们想要使这个匹配unity,我们需要改变我们的小图以便我们的y轴指向上(右图),但我们现在只是让它保持这样
关于世界空间需要注意的是当我们在模型周围移动时,这些轴不会改变或者当我们在摄像机周围移动或者当我们旋转这些物体时,世界空间是恒定的,不管场景中发生了什么,所以我可以移动,旋转,缩放我的模型或相机和世界状态空间保持相同的,
对象空间有点不同我这里有一个茶壶,你可以看到我有一个和世界空间轴一样茶壶的x方向,y方向和z方向。这代表了物体空间,
你可以看到当我旋转茶壶的时候,这和移动茶壶是一样的当我移动茶壶,周围的空间是相对的位置和旋转这是物体空间。
然后还有相机空间,相机空间从摄像机的原点开始或者说从摄像机的位置开始。相机空间的z轴通过相机的镜头朝向无论它在看什么,然后相机空间的 x 和 y 是您浏览时看到的水平轴和垂直轴,相机和相机空间随着相机移动而移动,但显然它不受物体或它们如何移动的影响
在我们的场景中还有一个空间我想说一下这就是切空间切,切线空间有点难描述。但是我又创建了一个红绿蓝箭头这个人试图解释切空间是什么。当我们谈论世界空间或物体空间时它们有一个轴心点,所以这是世界的起源这是物体的轴心点,但是有切空间我们有一个不同的空间基底或者一组红绿蓝箭头。
对于模型上的每个顶点你可以看到这里有红绿蓝箭头集代表这个位置的单个顶点。但实际上每个顶点都有自己的一组红绿蓝箭头这些是什么是法线副法线和切线。所以我们的顶点法线在这里,我们的红色箭头我们有绿色和蓝色的箭头它们代表uv (uv)在表面上,所以这个曲面或者说这个空间叫做切线空间,是相对于uv在模型表面的布局它对法线映射很有用,你们可能听说过术语切线空间法线贴图很好,因为它使用了uv坐标下的u和v相对于纹理坐标的布局当你创建一个切线空间时法线贴图与uv坐标绑定,相对于模型表面uv坐标的布局空间 我们讲过了我们讨论了我们的世界空间,我们讨论了物体空间也讨论了切线空间。
在我们进入unity和UE5之前还有一件事我想提一下,这是为了进行数学运算向量间的运算很重要在同一个空间中,几周前我们讨论了点积,然后上周我们说到输入向量、摄像机向量、法线向量和光向量,如果我们计算这些向量之间的关系。我们需要确保这些向量都在同一个空间中世界空间,物体空间,切线空间。所以如果我们有一个位于一个空间中,另一个向量在另一个空间中,我们必须做一些叫做变换,对向量执行,以便将其从一个空间更改为另一个好吧,
让我们进入虚幻5还有unity,我们来看一些例子好的,在第一个例子中我们要看一下要建立一个叫做球坐标的东西。从顶点法线开始在这里你可以看到,unreal是在世界上给我们顶点法向空间,这就是ws的意思,所以如果我们看一下我们在世界空间中的顶点法线,你可以看到我有这些黄色的绿色蓝色继续,
我们要做什么,我们想要做的是我们在这里有一个球体的纹理如果我们在这里看它,它只是一种球的纹理, 所以我们要做的是使用变换向量节点,我说过,在我们转换曲面法线之前从世界空间到视图空间的模型,所以不管摄像机指向的是什么物体的法线。使用这个着色器都将在视图空间中,在这里你可以看到我们有了变换向量节点
下面我把源设置为世界空间,因为法线在世界空间,然后我已经设定了目的地视图空间(下面view),所以这个节点(transformVector)要做的是它要做一些矩阵乘法,它会乘以世界空间中的顶点法向量通过视图空间矩阵把它转换到视图空间, 所以如果我们插入这个(transformVector)到主材质颜色和自发光节点。现在你可以看到,无论我在场景的哪个位置旋转球面上的颜色保持不变。这是因为它们投射在相机的空间里,因为我从世界空间转换到视觉空间,
现在我可以使用这些值作为纹理坐标来查找我的球体纹理,纹理始终朝向摄像机无论我如何旋转或转动相机。应用到模型的顶部,这部分应用到底部和侧面,所以很漂亮。
让我们切换到这个非常快速的示例场景,你可以看到这里有一块石头,当我绕着石头旋转你可以看到纹理,相对于岩石表面的法线保持不变。所以我得到边缘有粉色光芒。中间的这个浅蓝色就像在我的纹理中,因为的纹理正在被应用相对于摄像机或者投影在视野空间。因为我把我的法线从世界空间转换到视图空间
我们看下另外一个例子,在这个例子中,我们要从物体空间,世界空间,还有切线空间进行转换,首先让我解释一下,这里有一个纹理这就是你可以看到的岩石纹理它叫做trock slate d。这是虚幻五附带的纹理之一,我要在这张板岩纹理上面涂上苔藓所以我要插入我的板岩纹理和它的法线。
将板岩纹理与苔藓混合,法线与法线混合。混合值0.5
我真正想要的是苔藓出现在顶部,我们已经在其他几个视频中做到了这一点,但是让我们重复一下,这是我的石板法线映射哦,在这之前,我们先相加这是顶点法线它在世界空间中,我们只需要z顶点法向量的分量,我把这个代入然后看看我们的蒙版。
现在可以使用这个作为蒙版。苔藓被应用到我们模型的顶部。对齐的形状的对象,因为我正在使用我的顶点法线,我没有考虑到形状我的法线映射是为了做到这一点
我需要再次使用这个变换向量节点(Transform Vector),因为法线映射这次在切空间我需要从切线空间转换到世界空间。如果我想要法线空间映射来替换我的顶点法线我的法线贴图,它现在在切线空间可以进入世界空间。我将它设置为源切线空间目标世界空间,然后我使结果饱和这很重要,因为如果我不夹住它我在下面得到的结果是-1,这真的会弄乱我的 lerp 的结果,所以这个饱和节点将我的结果夹在0和1之间。然后我要把它插入到便宜的对比度节点只是稍微调整一下结果,这里你可以看到我实际上是在模型的前面或后面得到结果。我真正想要的是把它们放在上面,所以我需要抓取这个蒙版,让我们把掩模放在饱和和廉价之间对比一下,只是为了增加蒙版上的对比度现在就来看看苔藓。
没有插入对比度节点情况,苔藓是渐变的所以要通过对比度节点。
我们切换回场景现在你可以看到我的石头,它的顶部有苔藓如果我旋转我的物体因为我的苔藓被应用。
世界空间里的青苔总是会留下来的顶部,
但是如果我想让苔藓粘在表面,而不是在我旋转我的岩石而不是移动时四处移动它被称为局部空间而不是对象空间,所以我可以在这里选择局部空间现在你可以看到它看起来仍然一样因为我并没有旋转这个样本球在这里,
但如果我切换回场景你可以看到现在苔藓被应用到实际在石头的顶部,如果我旋转石头,它会保持不变它总是在岩石的顶部即使我像这样旋转石头也不会改变苔藓的位置所以它会一直留在那里。它是在物体空间中,或者说是虚幻的局部空间,而不是我们之前的世界空间。
好的,我们讨论了切空间,我们讨论了带有球体投影反射的视图空间很好,所以这是unreal的,让我们切换到unity,所以在这里我们unity使用相同的两个示例。对于我们在顶部的这个示例。我们有我们的法线向量,我们的表面法线,然后我们在世界空间中获得了那些。我们在 unreal 中得到了 unity 等效的变换向量节点所以叫做变换,你可以看到我们正在从世界转变来查看空间。 现在这个类型被设置为position on位置Unity版本的这个变换节点可以变换向量或位置我已经把这个设置为位置,所以我需要将它设置为方向,因为正常方向是对的,然后乘以它0.5,我们添加0.5,做同样的调整在虚幻中,然后我们使用结果作为纹理的uv坐标,这里我们用的是同样的纹理。
在第二个例子中我们有这个纹理,这是我们的岩石我在这里取法线映射,对它进行变换从切线空间到世界空间然后再取y,因为记住unity是y向上而虚幻是z向上所以我取y,因为这是向上的向量组件,然后我得到了我的对比,就像我在虚幻中做的,我正在饱和它,以确保我去掉了底部的负数现在得到的蒙版,如果我把它插进底色,你可以看,现在我得到了上面有一个遮罩,这样我就可以在lerp节点上使用这个遮罩了
我正在混合岩石纹理和苔藓纹理,我们把它代入底色我也在两者之间进行混合岩石法线图和苔藓法线图我们可以把它代入常态好了,这就是我们的结果无论我以哪种方式旋转球体苔藓纹理留在顶部而岩石物质留在,因为我已经创建了这个蒙版
所以我把法线从切线转换到世界空间再一次,我想把这个位置改成方向我可能会得到稍微好一点的结果不确定位置,然后用y分量做对比然后使结果饱和让我们看看我们的场景
我转换到物体空间(object),如果我看看我的场景,
物体空间,对象空间(Object space) 世界空间(world space)、切线空间(Tangent space)、 视图空间(View space) 好了,我们来总结一下今天我们讲的内容世界空间,对象空间,切线空间,还有视图空间我们来看两个例子:创建一个蒙版放在上面以及它是否停留在对象,取决于我们是否在转换法线,在世界空间或物体空间中,我们也使用球面地图比如我们投影球面地图通过将我们的法线转换到视图空间来实现。我希望这些例子对你们有用希望你们学到了一些东西。
|