Unity图片导入趣事随笔

这篇具有很好参考价值的文章主要介绍了Unity图片导入趣事随笔。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity图片导入趣事随笔,unity,着色器

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

Unity图片导入趣事随笔,unity,着色器

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

Unity图片导入趣事随笔,unity,着色器

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

Unity图片导入趣事随笔,unity,着色器Unity图片导入趣事随笔,unity,着色器

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

Unity图片导入趣事随笔,unity,着色器Unity图片导入趣事随笔,unity,着色器

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

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

Unity图片导入趣事随笔,unity,着色器

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

Unity图片导入趣事随笔,unity,着色器Unity图片导入趣事随笔,unity,着色器

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

Unity图片导入趣事随笔,unity,着色器

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

Unity图片导入趣事随笔,unity,着色器

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

Unity图片导入趣事随笔,unity,着色器Unity图片导入趣事随笔,unity,着色器

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

Unity图片导入趣事随笔,unity,着色器

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

Unity图片导入趣事随笔,unity,着色器

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

Unity图片导入趣事随笔,unity,着色器

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

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

Unity图片导入趣事随笔,unity,着色器

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

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

Unity图片导入趣事随笔,unity,着色器文章来源地址https://www.toymoban.com/news/detail-809990.html

到了这里,关于Unity图片导入趣事随笔的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity(三) Shader着色器初探

    学习3D开发技术的时候无可避免的要接触到Shader,那么Shader是个什么概念呢?其实对于开发同事来说还是比较难理解的,一般来说Shader是服务于图形渲染的一类技术,开发人员可以通过其shader语言来自定义显卡渲染页面的算法,从而达到按照自己的想法来渲染出目标效果。 不

    2024年02月07日
    浏览(49)
  • Unity使用着色器实现颜色渐变

    效果演示: 当前效果需要自己手动写一个shader,效果与unity版本无关,模型没有特别要求 在unity创建一个SurfaceShader类型的shader,命名为CotrolGradient_3Color,双击进入vs进行编辑,shader内容如下:

    2024年02月11日
    浏览(38)
  • Unity中URP下的SimpleLit顶点着色器

    在上一篇文章中,我们了解了URP下SimpleLit的整体框架。 Unity中URP下 SimpleLit框架 我们在这篇文章中,来了解一下URP下SimpleLit中,光照核心部分的顶点着色器干了什么,方便之后我们自定义自己的光照Shader。 因为被Unity封装的原因。所以,顶点着色器 和 片元着色器 主要是在这

    2024年01月17日
    浏览(41)
  • Unity | Shader(着色器)和material(材质)的关系

    一、前言 在上一篇文章中 【精选】Unity | Shader基础知识(什么是shader)_unity shader_菌菌巧乐兹的博客-CSDN博客 我们讲了什么是shader,今天我们讲一下shder和material的关系 二、在unity中shader的本质 unity中,shader就是一串代码,如下图shader(就是一个平平无奇的shader) 但是,这个sh

    2024年02月02日
    浏览(55)
  • Unity中URP下的SimpleLit片元着色器

    在上篇文章中,我们了解了Unity中URP下SimpleLit中的顶点着色器。 Unity中URP下的SimpleLit顶点着色器 我们在这篇文章中,来了解一下Unity中URP下SimpleLit中的片元着色器。有助于我们之后写自己的光照Shader。 这里传入参数为 顶点着色器输出的Varyings结构体 返回结果用 out修饰来代替

    2024年01月20日
    浏览(33)
  • Unity3D:内置着色器的用途和性能

    推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 Unity 中的着色器是通过__材质__来使用的,材质本质上结合了着色器代码与纹理等参数。此处提供了关于着色器/材质关系的深入说明。 当选择材质本身或选择一个使用材质的__游戏对象__时,材质属性将显

    2024年02月06日
    浏览(40)
  • Unity | HDRP高清渲染管线学习笔记:材质系统Lit着色器

    目录 一、Lit着色器 1. Surface Options 2. Surface Inputs(表面输入) 3. Transparency Inputs 二、HDRP渲染优先级 目录 一、Lit着色器 1. Surface Options 2. Surface Inputs(表面输入) 3. Transparency Inputs 4. Emission Inputs(自发光输入) 二、HDRP渲染优先级        我们可以把现实世界中的物体分成不

    2024年02月12日
    浏览(51)
  • Unity记录一些glsl和hlsl的着色器Shader逆向代码

    以下内容一般基于 GLSL 300 之后 以下某些代码行,是“伪代码“,绝大部分是renderDoc 逆向产生标准代码 本人OpenlGL零基础,也不打算重头学 目录 Clip() 剔除函数 discard; FS最终颜色输出 out 和最终颜色相加方程 从 discard; 命令可得知,一般通过透明度剔除, _26 == color.a _21.w 刚

    2024年02月07日
    浏览(46)
  • Unity随笔:在Unity中使用多线程需要注意什么

    Unity3D 支持多线程编程,但是在 Unity 中使用多线程需要注意一些限制和注意事项。以下是在 Unity 中使用多线程时需要注意的事项: 1. Unity 主线程限制: Unity 中的大部分操作必须在主线程进行,包括场景的修改、资源的加载、渲染相关的操作等。只有主线程能够直接修改 Un

    2024年04月10日
    浏览(41)
  • Unity面试题随笔(一)

    1.Unity中碰撞器(Collider)和触发器(Trigger)的区别? 碰撞器(Collider)有碰撞效果,IsTrigger=false,可以调用OnCollisionEnter/Stay/Exit函数 触发器(Trigger)没有碰撞效果,isTrigger=true,可以调用OnTriggerEnter/Stay/Exit函数 2.物体发生碰撞的必要条件? 必须带有collider碰撞器和rigibody刚体属性或者人

    2024年02月07日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包