【发布时间】:2018-09-30 02:19:22
【问题描述】:
我有一个 UV 坐标小于 0 且大于 1 的模型。我试图将这些坐标归一化到 0 和 1 范围内,但结果很差。 目前我正在使用此功能将任何 UV 坐标转换为我的目标范围
private convertNumberToUV(numb:number) {
let converted = 0;
if(numb < 0 || numb > 1) {
if(numb < 0){ numb = -numb; }
converted = numb - Math.floor(numb);
}
else if(numb > 1){
converted = numb - Math.floor(numb)
}
else {
converted = numb;
}
return converted;
}
结果是这样的
但预期的结果是这样的
我哪里错了?
@pailhead,我的目标是将第一个纹理移植到具有标准化 UV 点的图集上。我的问题是是否可以以这种方式工作。我将第一个 UV 坐标标准化为 0 和 1,为了避免“拉伸”效果,我还将纹理重复到第二个图集上的次数等于使用“重复”函数所做的次数
【问题讨论】:
-
是的,原始纹理是平铺的,坐标从 -3 到 +5,但我将原始纹理粘贴到更大的图集纹理中。最后一个纹理的坐标从 0 到 1,为此我想将平铺坐标转换为新范围
-
我不确定这是否应该像这样工作。在着色器中,您可以使用
fract来调制 uv,但取决于它们的布局方式,它是否被索引,我想这会导致奇怪的效果。我想一堵墙有 3 段,u 值为[0,1.5,3]。对此运行您的逻辑将产生[0,0.5,0],这看起来像是一个很大的延伸,然后是一个镜像回到开始。另外,你会达到第二个条件吗?
标签: javascript typescript three.js aframe uv-mapping