three.js - 重复纹理图集的一部分

问题描述 投票:0回答:1

所以在three.js中,似乎我们需要使用texture.offset和texture.repeat属性来提取纹理(图集)的部分以应用于不同的网格。这工作正常,但据我所知,然后选择重复该部分的纹理是不可能的?因为repeat属性已经被用于定义纹理子部分的“边缘”。我的代码使用texture.offset和texture.repeat来提取纹理的一部分:`

var texture = atlasTexture.clone();
texture.repeat.set(section.w / atlasTexture.width, section.h / atlasTexture.height);
texture.offset.x = ((section.x) / atlasTexture.width);
texture.offset.y = 1 - (section.h / atlasTexture.height) - (section.y / atlasTexture.height);
three.js textures texture-mapping texture-atlas
1个回答
0
投票

简短的回答..你不能不使用自定义着色器......制作自定义着色器比IMO更痛苦。你必须通过使用固定大小的瓷砖在UV坐标或其他东西中编码一个瓷砖索引来使着色器可以看到区域信息。如果你想要纹理过滤,你还必须担心填充岛屿给你边缘的文物。我之前已经完成了这个我之前写过的hexmap tile渲染引擎...而且它非常繁琐但是当我这样做时,它表现得非常好......我有4k / 4k的地图以60fps的速度运行3层。

如果你想进一步讨论它,我会在这个三个开发者的闲聊中闲逛......我的昵称是thrax。

https://join.slack.com/t/threejs/shared_invite/enQtMzYxMzczODM2OTgxLWE5OTU4OTYxZTZlODk1ZGNjODIyMDZlODM4ZmUyMzNiOWIxMmFjNTYwOTc4MjU0ZmNiODk5MzZiMGJhMTkzZWI

© www.soinside.com 2019 - 2024. All rights reserved.