问题标签 [texture-atlas]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
865 浏览

sprite-kit - 如何从另一个已经在 SpriteKit 中旋转的纹理创建旋转纹理

我正在从 a 创建一个精灵SKTexture,而它又是从从图集加载的另一个纹理创建的,如下所示:

textureFromAtlas碰巧被旋转了,因为在应用程序包中的文件夹Images.atlasc中, Images.1.png显示MyImage.png已旋转,并且Images.plist的关键textureRotated为该子图像设置为 YES

如何创建MySprite以使其具有正确的旋转?

在此处输入图像描述

(A)是人们所期望的,因为 SpriteKit 做了自动旋转的事情; (B)是实际结果,即从上面的代码得到什么

编辑:

我不得不添加一些代码来获取MyImage.png的大小,但是图集中包含旋转的,看它是否旋转,然后计算一个新的旋转myRect用于mySrpite

这有效地将矩形“移动”到Image.1.png中旋转图像的左上角,因此这mySprite将是(A)中的那个,但是这只适用于 MyImage.png 完全不透明或没有透明边框,因为 SpriteKit 对那些具有透明度的图像做了一些优化,并且 textureRect 比图集中的实际帧小。

0 投票
0 回答
719 浏览

ios - iPhone 6+ 模拟器无法从 atlas 加载 @3x 图像

在 iPhone 6+ 模拟器上运行项目时,我注意到模拟器无法获取正确的图像。使用@2x 图像代替@3x。

我尝试重置模拟器内容和设置,清理项目并从管理器中删除派生数据,但同样的事情仍然发生。

当我在路径的 myapp.app(显示包内容)中查找 myatlas.atlasc 文件夹时:

/Users/username/Library/Developer/Xcode/DerivedData/appname-appspecificgeneratedstring/Build/Products/Debug-iphonesimulator/appname.app

我可以看到 myatlas.atlasc(注意这不是 myatlas.atlas),里面有两个文件而不是三个。有atlas.1.pngatlas.1@2x.png

我想应该有三个文件,一个用于 1@x 图像,一个用于@2x 图像,另一个用于@3x 图像。

第一张图片(atlas.1.png)的内容都是@1x 图片和@3x 图片。atlas.1@2x.png的内容是@2x 图片。

接下来我尝试使用 Texturepacker 为我们正确生成图集。生成的文件有 atlasfilename.1.png、atlasfilename.1@2x.png 和 atlasfilename.1@3x.png。还有一个正确生成的 .plist 文件。我将 atlasc 文件夹添加到我的项目中,并选中了“创建文件夹引用”而不是“创建组”。但是模拟器仍然选择@2x 图像。

然后我尝试制作我自己的名为 HD_atlas.atlas 和 XHD_atlas.atlas 的图集,并根据屏幕比例因子选择正确的图集。在这种情况下,选择了正确的图集,但屏幕上出现了 MissingResource.png。如果我将@3x 图像命名为 image.png 而不是 image@3x.png 并将它们放在 XHD_atlas.atlas 文件夹中,那么会加载@3x 图像,但它会大 3 倍。目前,在解决此问题之前,我最终使用@2x 资产而不是@3x,因为一切看起来仍然相当不错,即使它被放大了。

我想这不应该是这样的,如果有人知道如何让 Spritekit 生成正确的图集或有一些解决方法以使用 @3x 资产,请随时发表建议。

0 投票
1 回答
388 浏览

ios - Sprite Atlas 未在 Xcode 中显示

我一直在使用 Sprite 套件快速创建一个 Sprite 游戏。我已经宣布该项目为游戏类型。我创建了一个文件夹,并在其末尾附加了 .atlas。我已将此文件夹添加到我的项目中。我为 TextureAtlas 创建的变量效果很好,但是文件夹内的所有图像都显示为空白,并且实际的 sprite 具有内部带有红色箭头的白色框。我已经看过很多关于如何解决这个问题的教程,我还没有做的最后一件事是在构建配置中启用纹理图集。当遵循苹果文档时,他们说在搜索中输入“精灵”,但什么也没有出现。我还看到有人说要输入“SPRITE_TEXTURE_ATLAS”这样的内容,但仍然无济于事。

0 投票
1 回答
46 浏览

java - 加载 TextureAtlas 的状态

我在基于 LibGdx 的游戏中使用 TextureAtlas。随着地图集大小的增加,加载时间也会增加,因此在显示我在游戏中设置的动画时会有延迟。

因此,我希望获得我的 TextureAtlas 加载过程的状态。1.无论如何要获得状态?2. 有听众吗?

0 投票
1 回答
1091 浏览

three.js - 从现有纹理创建 2D 纹理

我有一个应用程序,我在其中加载一系列医学图像 (jpg),为每个图像创建一个纹理对象并在 3D 平面上显示这些纹理。图像的数量取决于 CT 扫描仪的分辨率,但我的原型最多可以使用 512。

作为一项附加任务,我想使用这些纹理在单独的 3D 画布上执行体积渲染。

所有解决 WebGL 中缺少 3D 纹理的算法都有一个“静默”的先决条件,即图像格式的纹理图集已经存在。

然而,就我而言,我没有这样的地图集。

  1. 假设硬件支持这个 2D 纹理图集的最终大小,我如何将已经加载的纹理定制为一个 2D 纹理并将其提供给着色器?

  2. 我考虑将每个图像的数据合并到一个数组中,并用它创建 THREE.DataTexture。但是我找不到从使用它的纹理中读取图像数据的方法。还有其他方法可以提取加载图像的数据吗?

0 投票
0 回答
249 浏览

ios - Spritekit 纹理图集裁剪/透明度问题

我了解创建 Atlas 时,图像是:

a) 旋转

b) 修剪多余的透明像素

c) 颜色格式可能会改变等

因此,如果我有一个 50 像素高的图像,但只有图像的顶部是纯色,而底部是完全透明的。该图像将存储在高度为 25 像素的图集中,透明像素将被丢弃)。

我很难理解的是...

当您将此图像从地图集显示到屏幕时应该发生什么?

我应该取回原始图像的精确副本(在高度降低到 25 像素之前)吗?

在 Xcode 6.x 及以下版本中,这似乎正是会发生的情况:

  • 如果我在 xcode 6 中用此图像填充整个屏幕(顶部为 50% 纯色,底部为 50% 透明),我会看到屏幕的上半部分为纯色,而底部将是透明的。

如果我使用最新的 SDK 做同样的事情,屏幕的顶部 25% 是透明的,中间 50% 是我的纯色,底部 25% 是透明的。

我不知道透明像素是否被添加回图像,如果我实际上正在处理我现在在图集中看到的完全相同的图像(透明像素的裁剪/修剪),或者图像我'从图集回来的是我的图像,透明空间平等地返回到每一侧 vs(在一侧或另一侧)。

我真的很想了解正在发生的事情(现在看起来像是一个错误)。

我知道很多人建议在透明空间的角落使用 1% 的 alpha 像素,以确保图像完全按照他们想要的方式返回,但我认为这不是一个好的解决方案(使 atlas 图像更大,像素是如果你足够努力的话,在 1% 处可见)

谁能告诉我这是否是一个错误,是否有原因为什么我的所有带有透明像素的图像现在都返回位于宽度 x 高度框架底部的图像?

0 投票
1 回答
63 浏览

ios - 如何使我的 spriteNode 纹理通用?

我一直在用 SpriteKit 开发一个通用游戏,我的图像是 .gif 我有@2x 和@3x 的正常定义,我需要知道如何创建图集以及如何在图集之间切换设备更大或更小,哪些定义(@2x,@3x)适用于什么设备

0 投票
0 回答
89 浏览

java - TextureAtlas 的过滤比 Texture 差?

当我使用 texture.setFilter(linear, linear) 过滤图像时,它会被完美地过滤。但是当我把它放在纹理图上时,过滤器更糟,我仍然可以看到像素化。

我尝试了下面的方法,但没有奏效

我还尝试编辑 .pack 文件以将过滤器设置为:(这也不起作用)

请提出这些失败的原因?

0 投票
1 回答
1158 浏览

swift - 如何在操作期间替换 SKSpriteNode 的图像,然后将其返回到原始纹理图集循环

我正在尝试在 SpriteKit 中制作一个基本的跑步和跳跃游戏。

当视图加载时,我希望精灵节点Run使用来自纹理图集的图像。这是我设法做到的。

当触摸屏幕时,我希望此图像更改为纹理图集中的另一个图像,称为Jump.

当角色回到地面时,我希望它回到原来的纹理图集循环。

到目前为止,我已经编写了以下代码:

我试图在该touchesBegan部分中添加代码,以将精灵节点的图像纹理更改为我的图像集中名为Jump.

然后,我希望纹理图集在调用 touches end 动作后返回动画。

任何帮助将不胜感激。

更新:

我已经实现了你的建议,但它仍然不能完全正确地工作。英雄正在切换到跳跃图像,但实际上并没有跳跃并且卡在跳跃图像中。

我创建了一个 JumpImages.atlas 并将“Jump”图像添加到该文件夹​​中。

我已将代码修改为以下内容:

导入 UIKit 导入 SpriteKit

级别 1:SKScene {

}

}

}

有什么明显的我做错了吗?谢谢你的帮助。

0 投票
1 回答
1388 浏览

android - 如何在 libgdx 中使用纹理区域设置图像

我刚刚开始使用TexturePacker,TextureAtlasTextureRegions在我的应用程序中。

我目前有一个名为 card 的类,它 extends Image,我希望能够将卡片上的图形设置为我的地图集中的东西。

当我将卡片创建为Imageis的众多构造函数之一时,我可以做到这一点Image(TextureRegion textureRegion)

但是,我的卡需要在我的游戏过程中更改图形,我也需要能够从地图集进行设置。

我目前只能Image通过设置来找到改变Drawable它的方法。

这是唯一的方法吗,因为有一个使用 a 设置图形的构造函数TextureRegion,我觉得奇怪的是我不能用 setter 方法做同样的事情?

如果没有,我该怎么做?我可以将 a 转换TextureRegion为 aDrawable吗?我应该将其缓存在某处以保存每次处理TextureRegion到 a中吗?Drawable我正在使用 anAssetManager来给我TextureAtlas,所以我认为只有一个 的实例,但是如果我一直不得不将 转换为意志TextureAtlas,那将不成立吗?我必须自己缓存这个,不是吗?TextureRegionDrawable