DirectX Shader 地形引擎-根据拾取点改变地形纹理

 

 

  接下来,我们准备为大家介绍(DirectX Shader 地形引擎-根据拾取点改变地形纹理)。

 

  在前面的学习中,我们已经了解到什么是地形引擎,以及,地形引擎有什么作用,同时,我们也了解到什么是拾取,接下来,我们就可以继续学习如何通过拾取的位置来改变地形纹理。

 

  1、首先,我们提出一个问题,什么是通过拾取的位置来改变地形纹理?



  其实,我们拾取的目的除了要改变指定地形网格的纹理以外,更重要的是根据拾取的位置去判断纹理变化的规律,因为,在地形纹理编辑的时候,并不是简单地从一个子纹理零件,变化为另一个子纹理零件,而这些地形的子纹理变化是有规律的,同时,也需要根据鼠标的拾取位置来决定如何变化。

 

  通常,我们会把一个地形网格划分为4个部分作为变化的不同位置,而这4个部分,分别是每个地形子网格的左上,右上,右下以及左下,如下图:

 

         

 

  所以,当我们拾取到某一个地形子网格以后,我们就需要判断该拾取的位置是在该地形子网格的哪一个部分中,从而,再确定要选取哪一个子纹理零件应用上去。

 

  另外,在判断拾取位置是在哪一个部分的过程中,我们需要把拾取的位置先转换到2D坐标系,因为,拾取的位置是在3D坐标系中判断的,所以,要先把它转换到2D坐标系以后,才可以正确判断出是在地形子网格的哪个部分中。

 

  然后,我们要建立一个纹理变化的查询表,而该查询表,可以根据当前鼠标的拾取位置来查询到要选用哪一个地形子纹理零件,从而,就可以达到通过鼠标的拾取位置去改变地形上面的子纹理了。

 

 

 

  当我们了解完以上的内容以后,就需要大家把手动起来,看看如何通过代码把这些内容最终实现出来。所以,我们先点击下面的按钮,然后,进入到游戏中,再结合代码作进一步的学习与实践训练。

 

(通过游戏模式学习与训练,需要在电脑上运行)

进入游戏学习与训练