虚幻4UE4归一化矢量Normalize函数简单解析

虚幻4UE4归一化矢量Normalize函数简单解析

很多同学在学习虚幻4中会用到Normalize函数,会用但不知道原理,所以经常云里雾里,我这边就详细讲解一下这个函数涉及到的公式及向量归一化的概念。重点:要考!

很多人都知道归一化,即如果输入{1,2,3}三个数组,那么归一化后,就输出{1/(1+2+3),2/(1+2+3),3/(1+2+3)} = {1/6,2/6,3/6}的数组,即输出数组的每个数的总和最终得1,可以直观的明白每个数在数组中的大小比,最终为1结果的数组即是简单的归一化思想了。

OK那有同学会说,既然有这个归一化的概念,那么,如果我在虚幻4中输入(1,1,1)的向量,那归一化应该输出(0.33,0.33,0.33)了吧。

很好!那我们就在虚幻4中直接来测试一下

可以看到,最终输出的结果为(0.577,0.577,0.577),并不是(0.33,0.33,0.33)。这里我们就要深入一下引用一个归一化矢量的函数,即

这个时候就会有同学问,如果把向量(2,2,2)套入到公式,那么会得出(2/√(2^2+2^2+2^2),2/√(2^2+2^2+2^2),2/√(2^2+2^2+2^2)),即输出(0.577,0.577,0.577),但是如果输入向量(1,8,3),则会输出(0.1162,0.9300,0.3487)

没错,这位同学已经掌握了归一化矢量的概念,虚幻4中的Normal函数是将输入的向量直接代入到L3公式中,如(1,8,3)这个向量,那么最终即为结果的分子为向量的值,分母为求和(向量值的平方)再根号。

那么我们最后再讲一点归一化概念的好处,在游戏开发中,经常会需要需要用到归一化矢量的函数,比如划定[-1,1]的输出范围,

再比如,我们经常会遇到如何把两个关系上关联但是数值不具有可比性的数组进行比较呢,举个例子,一款生存游戏制造一把大刀需要3块铁和1kuai木柄,如果铁和木柄的价格存在较大的浮动性,比如今天铁的价格为100,明天就到200,相应的,木头的价格也会浮动,那么在这个例子里,铁价的影响因子就会非常大,即时木头价格今天为5,明天会涨到80,翻了16倍的变化,确对最终总价的结果影响不大, 那么这也是归一化思想的重要性了,我们要将类似铁和木头这样的数组有着更好的相关性,就需要用到归一化的概念了。

好的,这是我第一次在发有关数学的文章,略有简陋,还请见谅,在下谢过各位看官了~~

B站:如此多娇的Brilaxy

编辑于 2020-12-01 14:39