Unity图片导入趣事随笔

2024-01-13 15:04

本文主要是介绍Unity图片导入趣事随笔,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

像这样的png格式的图片,直接导入unity时unity会把没有像素的部分用黑色填充,并根据填充部分自动生成alpha通道。看起来alpha通道是不能手动覆盖的,即使在ps中手动添加一个alpha通道,并添加覆盖值。

导出后也会发现这没有任何意义,在unity中查看alpha通道依旧和以前一致。

有一个简单验证这个alpha生成原理的方法,只要在ps中添加一个图层(无论最后是否合并图层),并对添加的图层填满像素,随后保持图层打开的状态导出这张图片为png并导入unity,你会发现这张图片的alpha通道不见了,这是大概是因为unity检测这张图片上没有不存在像素的区域,所以没有为他生成alpha通道

当然你只要给这个满像素的图层随便扣一块下来,unity中的alpha通道就又出现了

所以想要覆盖alpha的操作在png是无法实现的,即使你在png图片导出时勾选了透明度,在unity中也无法看到alpha通道,但是如果png格式图片有这样的需求,可以复制图片出来自己做一个黑白图在unity中采样手动作为其他图片的alpha。

当然还有另一种方法,就是不导出png而是用psd格式文件,这样可以在unity中覆盖掉原文件的alpha通道,但这样的问题就是文件大了不少,有好多无用信息,不如png+一张alpha图省。

另外如果原本的图片在ps中做过裁切(扩充)或者修改图片大小的操作,比如在这里,我把像素大小为433X576的图片修改大小为符合unity的512X512像素,这在ps中看起来没有问题。但当你导入这张图片进入unity时,会呈现这样诡异的效果。

经过尝试和分析,可以确定的是在ps修改图片像素大小的时候,图片经过了裁切(扩充)和重新采样的操作,在这张诡异的图片中,白色是裁切(扩充)所留下的产物,而那些被拉伸的不规则线条是ps重新采样所造成的问题。当然如果不勾选重新采样,是无法根据像素对图片进行修改的。

要验证这两点也十分简单,首先这张图什么都不做直接导入unity是这个样子的

当在ps中对图片做了裁切(扩充)操作后,扩充的部分会以白色填充。比如这里我在ps中做了向右扩充的操作(并没有向上扩充)。

这样导入unity后,图片呈现这样的白边。明显可以看到右边裁切(扩充)的区域以白色铺满了,那为什么上面和左边也有白色填充呢,因为unity会把图片强制转化为最接近的2的阶乘大小的正方形图片,所以才会出现这样的状况。

在这里还有一个有趣的现象,最初我们导入图片时,上面到提过unity会以黑色填充不存在像素的区域。而现在扩充的区域unity却是以白色填充的,更有趣的是我根据图片在unity中呈现黑色的无像素区域在ps中对应框选删除后,这些黑色的区域变成了白色。我并不清楚这些黑白是根据什么条件填充的,但合理的猜想就是我在ps中对着黑色填充的区域框选删除确实删掉了什么东西,到底删掉的是什么还不明白。

继续刚才的话验证,在这时,我们对这张图片修改像素到512X512,根据重新采样产生了不规则的拉伸的线条,在unity中效果如下。

验证结束,还有一个重要的点需要说明,如果你在unity的文件预览窗口看到图片是这个样子的,那么在unity着色器中直接对这张图片进行采样输出也会呈现这样的状态。

return tex2D(texture,uv * texture_ST.xy + texture_ST.zw);

这就让人有些不舒服了,这种图片在alpha叠加的情况下使用并不会出现问题,但直接采样展示时也许需要借助clip(alpha - 0.01)这样的操作去除无像素部分。

当然为了让这些图片看起来不那么乱,根据前面不知道删掉了什么东西那段,我认为最好的是在ps中全选图片的所有像素,然后反选删除,这样可以让所有无像素的部分以白色填充。

这篇关于Unity图片导入趣事随笔的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/601859

相关文章

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

使用Python实现在PDF中添加、导入、复制、移动与删除页面

《使用Python实现在PDF中添加、导入、复制、移动与删除页面》在日常办公和自动化任务中,我们经常需要对PDF文件进行页面级的编辑,使用Python,你可以轻松实现这些操作,而无需依赖AdobeAc... 目录1. 向 PDF 添加空白页2. 从另一个 PDF 导入页面3. 删除 PDF 中的页面4. 在

Python多任务爬虫实现爬取图片和GDP数据

《Python多任务爬虫实现爬取图片和GDP数据》本文主要介绍了基于FastAPI开发Web站点的方法,包括搭建Web服务器、处理图片资源、实现多任务爬虫和数据可视化,同时,还简要介绍了Python爬... 目录一. 基于FastAPI之Web站点开发1. 基于FastAPI搭建Web服务器2. Web服务

MySQL 批量插入的原理和实战方法(快速提升大数据导入效率)

《MySQL批量插入的原理和实战方法(快速提升大数据导入效率)》在日常开发中,我们经常需要将大量数据批量插入到MySQL数据库中,本文将介绍批量插入的原理、实现方法,并结合Python和PyMySQ... 目录一、批量插入的优势二、mysql 表的创建示例三、python 实现批量插入1. 安装 PyMyS

利用Python将PDF文件转换为PNG图片的代码示例

《利用Python将PDF文件转换为PNG图片的代码示例》在日常工作和开发中,我们经常需要处理各种文档格式,PDF作为一种通用且跨平台的文档格式,被广泛应用于合同、报告、电子书等场景,然而,有时我们需... 目录引言为什么选择 python 进行 PDF 转 PNG?Spire.PDF for Python

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H