【问题标题】:Generate isometric tiles from flat textures从平面纹理生成等距平铺
【发布时间】:2018-10-28 17:32:16
【问题描述】:

是否有一个简单的工具(或代码)可以使用 1 个或 2 个(侧面/顶部)纹理生成等距图块(立方体格式):

以 Minecraft 草地顶部和侧面纹理为例:

并生成等距结果为:

我有一个包含所有块纹理的文件夹(如果需要,顶部和侧面,块可以是顶部/侧面相同)

我想从这个输入迭代并生成所有等距块,将它们保存为 .png 文件,但我不知道如何加入纹理并生成它。

是否有可以从我的迭代脚本中调用的现有软件、api、cli 工具?

【问题讨论】:

  • 我不确定你到底想要什么,但我有一个名为 3Dbox 的 Imagemagick bash unix 脚本,它可以容纳多达 6 个图像并将它们放在一个立方体形状上,并通过透视或正交视图查看调整透视夸大论点。见fmwconcepts.com/imagemagick/index.php

标签: iteration textures tiles isometric


【解决方案1】:

对于这样一个简单的3D立方体,你可以关注ImageMagick documentation

convert \
 \( tile_top.png -alpha set -virtual-pixel transparent \
    +distort Affine '0,512 0,0   0,0 -87,-50  512,512 87,-50' \) \
 \( tile_left.png -alpha set -virtual-pixel transparent \
    +distort Affine '512,0 0,0   0,0 -87,-50  512,512 0,100' \) \
 \( tile_right.jpg -alpha set -virtual-pixel transparent \
    +distort Affine '  0,0 0,0   0,320 0,100    320,0 87,-50' \) \
 \
 -background none -compose plus -layers merge +repage \
 -compose over isometric_cube.png

【讨论】:

    【解决方案2】:

    如果您不在乎源图像是否会变得模糊不清,那么请务必使用您想要的任何 2d 缩放/变换方法。尝试将低分辨率纹理旋转非 90 度,看看会发生什么——这很难看。

    如果您希望结果看起来像素完美,那么您需要使用(足够好的)3d 渲染器进行投影——并禁用抗锯齿。

    我愿意打赌 Blender 可以做到,而且那将是免费的,尽管我还没有尝试在 Blender 中做到这一点。可能有一种方法可以让您完全调整相机的任何 3d 渲染器。 您将源方形纹理放在方形平面 2d 表面上,然后使用创建的相机将其渲染为正交(不是透视)并适当倾斜 - 在您的情况下,因为瓷砖在我看来是二元的,旋转到任一侧 45 度并且还下降了 30 度。这将为您提供像素完美的渲染,您可以将其保存到文件或复制到剪贴板,以便在您想要的任何图像软件中进行编辑——例如,您仍然需要为其添加 Alpha 通道。

    如果您获得正确的摄像机角度,您只需要稍微调整一下摄像机距离,以使您的源对象+纹理适合渲染窗口,以及使其居中的高度——但这并不长或困难的过程,因为你已经知道你想要它的大小并且居中也不难。即使距离太远,它仍然看起来大部分是正确的——只是太小了。因此,您只需将相机移近目标对象(在局部坐标中,因此角度不会改变)并根据需要重新渲染和重复。您只需手动执行一次此步骤,然后在 Blender/3ds Max/Maya/Whatever 中加载保存的场景并交换纹理。

    这是一个很好的在线教程,可以在 3dsmax 中完全按照您的要求进行操作,但我再次认为它几乎可以在任何让您完全控制相机的实际 3d 渲染器中工作:

    http://www.pixelpilot.dk/isometric.htm

    请注意,如果您的图块的高度高于 0 平面(您的示例确实如此),那么您必须考虑到这一点 - 可能希望从更简单的东西开始并使其工作并在处理高度之前先了解它.

    这确实是正确执行并获得始终如一的好结果的唯一方法。唯一的选择是:a)成为一个有天赋的艺术家,只手绘你的精灵 b)精灵的分辨率很低,不需要任何值得注意的技能水平。

    否则,和我们其他人一样,你先在 3D 中建模,然后渲染它以获得投影,然后在完成繁重的工作后在图像编辑器中手动对其进行修饰。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多