Blender晕渲教程(二):开始
时间:2020-08-02   作者:陈春华 【转载】   来自于:somethingaboutmaps

为了学习本教程,您需要作两方面的准备。第一个是Blender,它是一款开源程序,可用于所有主要操作系统。您可以通过访问blender.org下载安装Blender。本程教是基于v2.80版本,新的版本可能会有些差异。很多人将Blender用于许多不同的项目——我们只是利用其强大功能的一小部分。

第二个准备就是高程数据(DEM)Blender不会读取空间文件;它不是GIS程序(尽管有一个BlenderGIS插件可以提供一些功能-后面我们会作专门介绍)。相反,我们以简单的灰度图像的形式以一种常见的栅格格式(TIFF,JPEG或PNG)提供其高程数据。在较亮的区域将读为高海拔,在较暗的区域将读为低海拔。这就是通常所说的高度图(heightmap)。Heightmap.jpg

下面,我概述了将数字高程数据转换为适合Blender的高度图所需的步骤。如果您现在不想阅读它,我也有一个已经处理过的高度图,您可以在本教程中下载和使用。

在Blender中创建山体阴影之前,首先需要做一点GIS工作,以准备好数字高程模型(DEM)。下面,我将介绍所需步骤的基本概述。与Blender教程的其余部分不同,这不仅仅是具体的操作步骤指南,而是更多的概念介绍。我已经引用了ArcGIS和QGIS中一些特定的工具/功能名称的引用,但总的来说,它更侧重于要做的事情而不是如何做。目的是使其与平台无关。您可以使用ArcGIS,QGIS或任何其他可以处理栅格的GIS程序完成。

第一步:获取数据

首先是获取DEM数据,这里有多种途径,具体不作过多的讲述,需要注意的是根据作图范围和比例尺弄清您的目示分辨率。

举个简单的例子,假设我想制作一张10英寸宽的埃及印刷地图。典型的打印分辨率是每英寸300像素,因此我需要10×300 = 3000像素宽的晕渲。埃及大约有750英里宽,因此我们需要找到一个DEM,它的每个像素为750÷3000 = 0.25英里。

这个例子应该给你一个如何大体的算法。实际上,汤姆·帕特森(Tom Patterson,晕渲图制作方面的大师)建议使用低于300dpi的分辨率进行打印晕渲,以免打印出一些看起来更像噪点或纹理的微小细节。我通常的目标是150–200dpi。如果您要进行web地图制图,汤姆·帕特森(Tom Patterson)也给出了一个建议表

第二步:拼接数据(可选)

高程数据通常以图块的形式出现,您可能需要下载多个图块以覆盖您感兴趣的区域。在继续之前,您需要将这些图块连接到一个单元中。

Tiles.jpg

当然,您可能会很幸运,并且整个兴趣范围都由一个DEM文件覆盖,在这种情况下,您可以跳过此步骤。

第三步:重新投影

进入Blender之后,我们将丢失DEM的任何平面坐标数据。它只会像任何普通图像文件(例如照片)一样被处理,而Blender却不知道该DEM在地球上的位置。因此,我们需要确保转换到正确的投影。

假设您有一个高程栅格,栅格中的数据存储在WGS84地理坐标中,但是您想查看它在Albers等面积圆锥投影中的样子。 ArcGIS / QGIS /等可以通过实时投影来为您完成此操作。他们将向您显示该栅格在Albers中的外观,但实际的栅格文件尚未被重写:它仍存储在WGS84中。

SeenStored.jpg

不过,一旦进入Blender,就无法再进行实时重新投影,因此,如果要提前存储为正确的投影。如果您有其他栅格或矢量图层,并计划在Illustrator,Photoshop等中进行合成,则希望所有这些图层都具有相同的投影和比例。

因此,我们需要确保将实际的DEM文件本身写入最终地图所采用的投影中。这样,即使Blender会忘记其真实的坐标,但当我们不能够进行重新投影时,它仍将与图形软件中的其他图层对齐。

第四步:裁剪

您的DEM可能会覆盖比计划制图更大的区域。这与上面的情况类似:您可以在GIS程序中放大某个区域,但这并不意味着它已重写原始文件以删除看不见的部分。这些东西仍然存在,只是隐藏着。

但是,如果我们要在Blender中生成晕渲,然后使该晕渲轻松与其他图层对齐,则需要删除多余的区域。

第五步:重采样(可选)

如果您的DEM分辨率太高,则可能需要对其进行调整。正如我所提到的,开始时可以提供比您需要更多的详细信息,但是这些文件可能又大又麻烦。因此,在进入Blender之前,您应该使用GIS重新采样DEM以匹配您在第一步中计算出的目标分辨率。

第六步:高程值缩放Rescale(很可能)

我们最终的输出目标将是一个16位无符号整数TIFF。这意味着每个像素可以容纳0到65,535之间的数字。

您的起始DEM可能具有较小的值范围。也许高程模型文件的高程范围是50.12米至270.35米。但是,如果将其输出整数TIFF进入Blender,它将简单地四舍五入处理,范围为50-270。这导致细节丢失,因为文件中现在仅存储了270 – 50 = 220个高程级别。这可能会导致梯形的地形变化,因为实际从200到201米倾斜的地形区域在这种转换时会有跳跃现象。

Terracing.jpg

高程四舍五入将导致严重的梯田效果

我们无法阻止高程值四舍五入为整数,因为这是Blender需要读取的数据类型。但是,我们可以减轻这种梯田效果。

您需要将海拔范围扩大到0到65,535(或0到60,000左右的范围,不一定准确)。因此,假设我的数据高程值范围是120到1500。我需要进行调整,以使是120的地方变为0,1500的地方变为65,535,并且中间的所有内容都相应地缩放。您的快速公式是:

(Pixel Value – 120) ÷ (1500 – 120) * 65,535

您可以通过查找GIS程序的“栅格计算”功能来实现。

这样,当我们将其转换为Blender需要的的整数格式时,将保留更多详细信息。高程仍将划分为一堆整数步,但每个步子都将很小:65,535个小步,而不是1380个大步。相信您能理。

如果您的DEM值为负(可能在海平面以下的某些地方),则执行此步骤也很重要。 Blender(和其他图像编辑程序)将无法理解像素具有负值的含义,并且会错误地将这些像素解释为具有很高而不是非常低的高程。

如果您的起始DEM恰好仅由整数组成,则无需重新缩放计算。此过程是为了防止细节从小数转换为整数时丢失。但是,如果您的整数DEM包含负数,则仍然需要消除这些负数。您可以使用地图代数为每个像素添加一个常数。

第七步:另存为16位无符号TIFF

将DEM重新投影,裁剪和高程值缩放后,就可以将其保存为16位无符号的TIFF。


第八步:重新保存(可选)

我不知道QGIS是否适用,但至少ArcGIS保存的TIFF文件Blender无法直接读取不知道为什么。但是,如果您在Photoshop中打开TIFF,然后另存为新文件,则Blender将能够读取该新文件。通过Photoshop传递似乎可以将其清除。其他图像软件也可以解决此问题。

经过上面这些步骤,您的DEM应该准备就绪了,您可以继续使用Blender!