【发布时间】:2010-10-18 11:22:48
【问题描述】:
我正在开发一个可以在不同尺寸的屏幕上运行的应用程序,我必须生成一个可以填满屏幕所有可用空间的纹理(如羊皮纸)。
一个非常简单的方法是包含一个纹理样本的小位图(256 x 256?),并在所有可用区域上重复它,但这最终会看起来平铺并且非常令人失望。
是否有任何方法可以生成看起来不平铺的大平铺纹理区域?
谢谢
【问题讨论】:
我正在开发一个可以在不同尺寸的屏幕上运行的应用程序,我必须生成一个可以填满屏幕所有可用空间的纹理(如羊皮纸)。
一个非常简单的方法是包含一个纹理样本的小位图(256 x 256?),并在所有可用区域上重复它,但这最终会看起来平铺并且非常令人失望。
是否有任何方法可以生成看起来不平铺的大平铺纹理区域?
谢谢
【问题讨论】:
我没有尝试过使用这些,但我对某些人使用程序纹理所做的事情印象深刻。
【讨论】:
我最好的建议(如果您采用平铺路线)是找到一个足够小以满足您的内存需求但又足够抛光以在平铺时看起来不会“平铺”的纹理样本。当您平铺任何图像时,除非边界可以在任何一侧无缝地相互流动,否则它将看起来是平铺的。也就是说,所有边都有一个共同的“边缘”,中间有一点变化,可以大大地使图像看起来不“平铺”。这对于羊皮纸之类的东西应该不会太难,并且确实适用于自然平铺的东西,例如砖块或混凝土。
如果你缺乏艺术天赋来完成这样的事情,你可以在网上找到一些很好的样本(也是免费的!)。
另一种方法是只使用您的图像的高分辨率版本并“拉伸”它以适应屏幕。分辨率越高,图像拉伸时得到的像素就越少。 (或尝试类似于 mip-mapping 的方法,在其中存储图像的多个不同分辨率版本,然后根据屏幕尺寸选择最佳版本。)
【讨论】:
这是我设计的一个配方,用于在图像编辑器(Photoshop、Paint.net、GIMP)中制作适合平铺(即周期性)的随机纹理。
一些样本here - 我按照这个程序制作了所有样本,没有进行其他图像编辑。
假设您要制作 256x256 的图像。
“局部 SI(空间不变)变换”(SI 类似于 LTI 过滤器中的“TI”部分)是任何图像变换(过滤器、调整、效果),它以某种基于确定性的方式改变每个像素值仅在当前值和相邻像素上,相对于平移不变。其中包括:
这不包括“全局”效果(纹理渲染、空间扭曲)
配方可以应用于不同的层,可以以任何“模式”组合。
某些步骤可以记录为宏或图像编辑器允许的任何内容。
非常有趣,一些有趣的纹理可以通过尝试和使用效果和图层来制作。
【讨论】: