跳转到内容

Trainz/使用 Blender 创建法线贴图

来自维基教科书,开放世界开放书籍
logo
Trainz 内容创作 - 中级到高级主题
TOC | 开始趣味 | AM&C | 创作 | 书内参考 ORP 参考:  • 索引 • 容器 • 类型 • 标签 | 附录  • 版本
 词汇表
 HKeys-CM
 HKeys-DVR
 HKeys-SUR
 HKeys-WIN
 鼠标使用
 符号

使用 Blender 2.5 为 Trainz 资源创建法线贴图

[编辑 | 编辑源代码]
编辑注: 同一台计算机可以托管各种 Blender 安装,并且可以从 Blender 网站下载旧版本。建议新内容创建者使用教程的来源版本,然后在首选的 Blender 版本中重复相同的主题材料。



本教程的灵感来自 Trainz 内容创作论坛上的许多讨论,以及作者对为 Trainz 创建法线贴图的兴趣。Paul Hobbs 在他的优秀 Blender 教程中讨论了法线贴图[1],这些教程可以在他的网站上找到。这些教程是为早期版本的 Blender 编写的,Blender 2.5 的界面与之有很大不同。

有一些关于 Blender 中法线贴图的 You Tube 视频,但以下视频推荐观看

  • [blender 2.5 法线贴图教程 (HY6-RtGwfLo)] - 由 Blender Nerd 制作
  • [Blender 法线贴图教程 (mU-cSUSR0Vs)] - 由 d123s404 制作

本教程演示了如何使用从法线贴图纹理和简单的漫反射(彩色)纹理创建的材质,在平板上模拟铆钉。然后将该材质应用于一个简单的立方体的侧面,该立方体用作 Trainz 中的场景资源。

在下面的步骤中,有一些操作可能与您在 Trainz 中创建内容的正常方法不同。没关系。只需使用适合您的方法即可。本教程中将资源文件从工作文件夹复制到 Trainz 编辑文件夹的方法仅为简化操作。作者使用 Andi06 的 AssetX[注释 1] 程序[2] 来管理此过程。

本教程在 Blender 中使用图层来临时将物体移开。这些图层的编号包含在 Blender 手册中[3]。基本上,顶行上的 10 个图层框从 1 到 10 编号,底行从 11 到 20 编号。

本教程中的一些操作需要您处于对象模式或编辑模式。为确保您处于正确的模式,本教程将提醒您正确的模式。

假设和先决知识

[编辑 | 编辑源代码]
  • 在 Blender 中创建物体和使用 Blender Trainz 导出器的经验。
  • 在 Trainz 中创建资源的经验。

开始之前

[编辑 | 编辑源代码]

您将需要一个铆钉网格来进行此练习。出于 Trainz 的目的,铆钉可以简单地是一个半球,获得合适铆钉的最简单方法是下载 Paul Hobbs 网站上的 Bits Box(驾驶室控制)。集合中有一个适合的 rivet.blend 文件。将 rivet.blend 的副本放在已知位置。

演示如何使用 Blender Bake 选项在 Blender 中创建法线映射物体。物体从 Blender 导出并导入 Trainz 作为新的场景资源。

使用的程序和项目

[编辑 | 编辑源代码]

必不可少

[编辑 | 编辑源代码]
  • Blender 2.5 (2.57.x 或 2.58.0)
  • Blender Trainz 导出器 (0.96 版本)
  • Trainz Simulator 12 (build 47059) (TS9 和 TS10 也应该可以工作,但尚未由作者测试)
  • 一个无压缩 TGA 格式的彩色纹理文件。只需一个黑色、红色或蓝色文件即可。它必须符合 Trainz 纹理文件的标准。

可取的

[编辑 | 编辑源代码]


预期结果

[编辑 | 编辑源代码]

在本教程完成后,您应该在 Trainz 中拥有以下资源。

Blender normal mapped cube in Trainz
Trainz 中的 Blender 法线映射立方体


步骤 1 - 创建 Trainz 资源

[编辑 | 编辑源代码]
  • 打开 Trainz 内容管理器并创建一个新的场景资源。将资源名称更改为“Normal Test”。记下 KUID 号并保存资源。由于我们还没有网格,可以忽略错误。退出内容创建者 Plus。
  • 提交资源,忽略错误并再次打开进行编辑。这将更新资源名称并确保资源在编辑文件夹中被正确命名。


步骤 2 - 创建 Blender 环境

[编辑 | 编辑源代码]
  • 在你的 Blender 用户区域创建一个新文件夹并命名为“Normal Test”。
  • 将 “…\Auran\...\UserData\Editing\Normal Test” 文件夹中的 config.txt 复制到你的新 Blender 文件夹中。我们稍后会编辑 config.txt。


步骤 3 - 创建低多边形和高多边形网格

[编辑 | 编辑源代码]

创建基本网格

[编辑 | 编辑源代码]
  • 启动 Blender 并将默认项目保存为 Blender Normal_Test 文件夹中的 Normal_Test.blend。
对象模式
  • 标准立方体有点大,所以将其在所有轴上缩放到 0.5,或者只是将 X、Y 和 Z 尺寸调整为 1。
  • 更改 Z 位置值,将立方体的底部移到网格地板的水平面上。
  • 将比例和位置应用于立方体(Ctrl A)。
  • 将立方体移动到图层 6。我们稍后会使用它。
  • 将 3D 游标定位在零 (0,0,0)(Shift C)。
  • 添加一个新的平面网格并将其命名为“lo poly”。
  • 使用 7 键盘数字键更改为顶视图。
  • 使用尺寸值调整大小或将平面缩放到一个 Blender 单位的正方形。
  • 应用比例。如果你使用尺寸值调整了平面,这也很必要。
  • 在属性编辑器中,选择对象数据图标(三角形),打开法线卷曲并取消选中双面。这不是严格必要的,但导出器会对此发出警告。
  • 在 3D 编辑器中,选择 lo poly 网格并使用 Shift D 创建一个副本。按 Esc 键避免移动新网格。
  • 将副本网格从“lo poly.001”重命名为“hi poly”。
  • 将 hi poly 网格移动到图层 1,然后选择图层 1,以便我们可以处理 hi poly 网格。
  • 保存 Blender 文件。

The Resized Cube
调整大小的立方体

修改 hi poly 网格

[编辑 | 编辑源代码]
对象模式
  • 将铆钉网格导入你的工作 Blender 文件中。详细说明:
  • 文件->附加
  • 选择 rivet.blend 文件
  • 对象->铆钉
  • 从库中链接/附加
  • 附加命令将铆钉放置在位置 0,0,0,但需要将其绕 Y 轴旋转负 90 度。
  • 选择铆钉并将 Y 旋转值更改为 -90。
  • 然后按 Ctrl A,然后应用旋转,将此放置设置为标准方向。
  • 导入的铆钉为 0.02 Blender 单位,大约相当于 ¾ 英寸。你可以将铆钉重新缩放到大约 0.025,大约相当于 1 英寸。这可能会使铆钉在 Trainz 中更清晰可见。尝试不同的尺寸,找到适合你的铆钉尺寸。一个英寸铆钉的尺寸值为 X = 0.025,Y = 0.25,Z = 0.0125。

Rivet resized to one inch
铆钉调整大小为一英寸


  • 将铆钉移动到板的左上角,并使用它以你喜欢的任何图案创建其他铆钉。你可以通过选择铆钉,然后 Shift D 然后是 X 或 Y 来复制铆钉。X 或 Y 允许你沿着这两个轴中的任何一个移动复制的铆钉。一旦你有 2 或 3 个铆钉,只需选择它们全部并根据需要复制。


Lots of rivets!
许多铆钉!


  • 创建所有所需的铆钉后,选择它们,但不选择平面,并使用 Ctrl J 形成一个单一网格。

警告!你还需要将铆钉网格与 hi poly 网格连接,但是,如果你最后选择 hi poly 网格,所有铆钉都将被展平。这可能是因为 hi poly 网格是一个简单的平面。

  • 先选择 hi poly 网格,然后选择铆钉网格,并使用 Ctrl J 连接。通过查看侧视图(键盘数字键 3)检查连接是否正常。铆钉应该在平面之上可见。
  • 更改回俯视图。
  • 网格名称将发生变化,因此将网格重新命名回“hi poly”。
  • 保存 Blender 文件。

我们现在可以创建材质和法线贴图了。

步骤 4 - 创建材质和法线贴图

[编辑 | 编辑源代码]
对象模式
  • 更改到图层 1 并选择 lo poly 网格。
  • 在另一个面板中打开 UV/图像编辑器。如果你没有一个可见的,请创建一个。使用 512 * 512 的尺寸创建一个名为“rivets_normal”的新图像(图像->新建图像)。保持 alpha 选中并选中 32 位浮点。
  • 选择 lo poly 网格并在属性编辑器中选择材质图标。
材质设置
  • 创建一个名为“rivets.m.tbumptex”的新材质。
  • 将镜面设置更改为 Blinn 着色器,强度为 0.2。
  • 将着色->发射更改为 0.5。
  • 保持其他设置不变。
  • 注意:这些设置在 Trainz 中产生了合理的结果。这是你可以尝试不同设置以改善结果的一个领域。
  • 在属性编辑器中,选择纹理图标。
法线纹理设置
  • 使用图像或电影类型创建一个名为“normal”的新纹理。
  • 在图像卷曲中,选择最左边的按钮(浏览要链接的图像),并从列表中选择 rivets_normal。
  • 注意:这使用 Blender 中的“生成”图像。这可能需要在创建最终的法线贴图后更改为外部文件。
  • 在图像采样中选择法线贴图,并保持其他设置不变。
  • 在映射中将坐标设置更改为 UV。
  • 在影响中取消选中漫射->颜色并选中几何->法线。
  • 保存 Blender 文件。

我们现在可以开始烘焙过程了。

步骤 5 - 烘焙法线贴图

[编辑 | 编辑源代码]
对象模式
  • 转到图层 2 并将 hi poly 网格移动到图层 1。
  • 移动到图层 1 并选择 lo poly 网格。
  • 移动到编辑模式(Tab)并确保你已选择面选择模式。
编辑模式
  • 展开网格(U->展开),网格将被投影到 rivets_normal 图像上。由于 lo poly 网格上只有一个面,它只填充图像。
  • 返回对象模式。
对象模式
  • 确保你处于 Blender 渲染模式。此模式显示在 Blender 信息面板中 - 通常位于主 Blender 窗口的顶部。
  • 在属性编辑器中选择渲染图标(照相机)。
  • 关闭所有子窗口“卷曲”,并打开烘焙子窗口。
  • 烘焙窗口的设置如下:
  • 烘焙模式->法线
  • 从多分辨率烘焙->未选中
  • 法线空间->切线
  • 清除->选中
  • 选中到活动->选中
  • 边距->2
  • 距离->0
  • 分割->自动
  • 偏差->0.08(见注释 2)
  • 选择 hi poly 网格,然后 Shift 选择 lo poly 网格。确保 lo poly 网格是活动网格,因为我们将从选定网格烘焙到活动网格。


Ready to bake
准备烘焙


  • 选择烘焙选项,你应该会看到 rivets_normal 图像被转换为法线贴图。


After baking
烘焙后


  • 转到 UV/图像编辑器窗口,将法线贴图图像(另存为图像)保存为名为 rivets_normal.tga 的原始 Targa 文件。“原始 Targa”文件类型可以从窗口左侧“另存为图像”卷曲中的文件类型中选择。检查保存位置,因为 Blender 倾向于尝试将文件保存在 C: 驱动器的根目录中。
  • 将 hi poly 网格移动到图层 2。这样做是为了使网格不包含在 Trainz 的导出 IM 文件中。
  • 选择 lo poly 网格。注意,我们还看不到对象上的铆钉。
  • 在属性编辑器中,选择法线纹理并从磁盘重新加载 rivets_normal 文件。见注释 1。

注释 1:如果你已将图像打包到 Blender 中,则重新加载选项将不可用。如果发生这种情况,你需要解锁数据块。但如果你按照上述说明操作,则不需要这样做。

注释 2:默认偏差值为零,如果未更改,可能会导致凸起出现飞溅效果。这是作者观察到的视频教程中选择的数值。你可以尝试不同的数值,看看哪种效果最好。结果可能取决于正在建模的凸起和凹陷的类型。

步骤 6 - 创建漫射材质

[编辑 | 编辑源代码]
  • 在 3D 编辑器中选择低多边形网格。
  • 在属性编辑器中,选择纹理图标。
  • 使用图像或电影类型创建一个名为“diffuse”的新纹理。加载你简单的单色纹理文件。本例使用许多模型共有的 black.tga 文件。
  • 将映射 -> 坐标更改为 UV。
  • 影响 -> 颜色应被选中,这是默认设置。

此时,你可以将低多边形网格导出到 Trainz,但它会显示为一个平面。一个更有趣的对象是法线贴图立方体,因此我们将使用立方体进行导出。

步骤 7 - 创建铆接盒

[编辑 | 编辑源代码]
对象模式
  • 移动到图层 6 或包含立方体的图层。
  • 选择立方体,然后转到属性编辑器并选择材质图标。如果有现有的材质,则将其删除。
  • 将 rivets.m.tbumptex 材质应用于立方体。
  • 更改为编辑模式。
编辑模式
  • 选择立方体的所有面并展开立方体以映射到 rivets_normal 图像。
  • 如果需要,移动和调整每个立方体面以占据整个 rivets_normal 图像。
  • 更改为对象模式。


步骤 8 - 导出模型

[编辑 | 编辑源代码]
对象模式
  • 保存 Blender 文件。
  • 使用 Blender Trainz 导出器导出。你无需更改任何导出器设置,但确保它导出到你的 Normal_Test 文件夹中。

假设你没有错误,你现在就可以准备导入 Trainz 了。

步骤 9 - 创建或修改 config.txt 文件

[编辑 | 编辑源代码]
  • 使用你喜欢的编辑器打开 normal_test 文件夹中的 config.txt 文件。添加或更改文件以反映下面的示例 config.txt。记住不要删除或更改文件的首行。

kuid                  {your kuid number}
username              "Normal Test"
kind                  "scenery"
trainz-build          3.4  (or whatever was provided by your content manager)
mesh-table            {
                       default {
                                auto-create    1
                                mesh           "normal_test.im"
                               }
                      }
category-class        "XVG"
thumbnails            { 
                       0 {
                          image         "$screenshot$.jpg"
                          width         240
                          height        180
                         }
                      }



注意:假设你有一个合适的缩略图图像。你可以删除或省略该部分,但 TS12 会报错。PEV 的 AssetX 程序有一个缩略图生成功能。

步骤 10 - 资源文件检查

[编辑 | 编辑源代码]

我们现在需要将资源文件导入 Trainz 内容管理器。有几种方法可以做到这一点,但为了本教程的目的,我们将使用 Windows 复制功能复制文件。

  • 确保资源在内容管理器中是“可编辑”的。打开一个窗口到文件夹 …\Auran\TSxx\UserData\editing\Normal Test。
  • 打开包含 Blender 文件的开发文件夹。
  • 以下文件需要从开发文件夹复制(不要移动)到 Trainz 编辑文件夹。
  • Config.txt
  • Normal_test.im
  • Rivets_normal.tga
  • Rivets_normal.texture.txt
  • Black.tga(这是我的漫反射颜色文件 - 替换你使用的任何文件)
  • Black.texture.txt


以下图片显示了我的源文件夹,其中突出显示了要复制的文件,以及目标文件夹。

Source file folder
源文件文件夹
Trainz editing folder with asset files
包含资源文件的 Trainz 编辑文件夹


复制文件后,转到 Trainz 内容管理器,选择 Normal Test 资源并提交。如果出现错误,请检查你是否拥有所有文件以及 tga 文件是否未压缩。

步骤 11 - 在 Trainz 中显示

[编辑 | 编辑源代码]

从内容管理器启动 Trainz(Ctrl L),找到合适的测试路线和会话,并将“Normal Test”风景对象添加到你的会话中。灯光会影响法线贴图纹理的显示,并且在水平面上效果最佳。在某些灯光下,铆钉很难看到。以下是资源在我的 Trainz 会话(TS12)中的外观。你可能需要尝试不同的颜色和设置,以获得最适合你的效果。由于铆钉比较小,因此效果比较微妙,并且在某些光照条件下几乎不可见。

Blender normal mapped cube in Trainz
Trainz 中的 Blender 法线映射立方体




最后一张图片显示了 UV/图像编辑器中的法线图像,3D 编辑器中的纹理立方体以及属性编辑器 -> 纹理编辑器中法线材质的部分属性。请注意,在 3D 编辑器属性面板的着色面板中选择了 GLSL 选项。这只是为了拍摄这张图片,以便模型上同时显示两种纹理。

Normal map and GLSL view of cube
立方体的法线贴图和 GLSL 视图



备注和脚注

[编辑 | 编辑源代码]

其他阅读资料

[编辑 | 编辑源代码]

Blender 官方网站,网址为 http://www.blender.org
Van Gumster,Jason(2011)。Blender For Dummies 第 2 版。印第安纳波利斯,印第安纳州:Wiley Publishing,Inc. SBN 978-0470-58446-0。
WiKiBooks 还拥有一个 Blender 专属的集合,网址为 Blender 3D,包括“Blender:菜鸟到专家”,网址为 Blender 3D:菜鸟到专家,其中包含关于凹凸贴图和法线贴图的部分。

  • 所有技术和许多 HowTo 参考通常都来自
  1. TrainzOnline wiki,
  2. 它的模板形成一个外部链接到给定页面标题的 N3V Wiki HELP 命名空间页面。
  • 它向链接添加 NS 和 HowTo 参数,以链接到 Help 命名空间,例如

http://online.ts2009.com/mediaWiki/index.php/Help:Surveyor_Tools  

内部编码
<span class="plainlinks">[http://online.ts2009.com/mediaWiki/index.php/HowTo/{{{1|{{{URL|{{{url|}}}}}}}}} {{{p|{{{2|{{#replace:|{{{1|{{{URL|{{{url|}}}}}}}}}|_| }}}}}}}}]</span>

仔细阅读显示,作为{{{1}}} 或 URL= 或 url= 给定的链接字符串是 TrainzWiki Help TOC 页面列表 N3V 帮助文章后的子页面地址。

  • 就像大多数 Trainz 模板一样,它可以获得漂亮的文本参数“|p= some string”,它会形成优先输出,否则,该模板旨在将 url 中的下划线替换为空格,并显示页面标题,就像它是在任何基于维基百科的维基项目上的本地页面链接一样。
  • 它还为占位符参数 {{{2}}} 设计,以支持通常在维基标记语言中看到的更方便的管道分隔调用
{{HT|some_underscored_url_pagename |Some pretty name'}}'''

对于这个模板,由于子页面名称和 Trainz Wiki 分区都以主题清晰度命名,因此使用页面名称的更短形式可能是你想要的

{{HT|some_underscored_url_pagename}}


</noinclude>HowTo 页面

  1. 或各种 内容创建者指南(在线或在 Trainz 的旧版本中)。
  2. 许多 Trainz 数据模型 资源引用在此维基教科书中,位于页面标题栏中的 参考链接 下。

 

  1. AssetX 内置了 Windows 帮助文件,但如果你不熟悉 Trainz 行为以及多年来 Trainz 数据模型 的演变,它仍然很难掌握。另请参阅论坛主题:[AssetX] 以了解更多信息。

 

 

  1. Hobbs,Paul。 "第 2 部分 映射和纹理"Blender 教程 - 制作简单的机车. 检索于 2011 年 7 月 30 日.
  2. AssetX, Andi06,检索于 2015-0803 {{citation}}: 检查日期值:|accessdate= (帮助)文本“web”被忽略 (帮助)
  3. "3D交互,导航,图层", Blender 手册, Blender 基金会,检索于 2011年7月30日 {{citation}}: 文本“web”被忽略 (帮助)

   

华夏公益教科书