Javascript three.js';s ExtradeGeometry.UVGenerator.generateSideWallUV?
在三个.js中,有一个条件:Javascript three.js';s ExtradeGeometry.UVGenerator.generateSideWallUV?,javascript,three.js,mesh,Javascript,Three.js,Mesh,在三个.js中,有一个条件: if ( Math.abs( a.y - b.y ) < 0.01 ) { return [ new Vector2( a.x, 1 - a.z ), new Vector2( b.x, 1 - b.z ), new Vector2( c.x, 1 - c.z ), new Vector2( d.x, 1 - d.z ) ];
if ( Math.abs( a.y - b.y ) < 0.01 ) {
return [
new Vector2( a.x, 1 - a.z ),
new Vector2( b.x, 1 - b.z ),
new Vector2( c.x, 1 - c.z ),
new Vector2( d.x, 1 - d.z )
];
} else {
return [
new Vector2( a.y, 1 - a.z ),
new Vector2( b.y, 1 - b.z ),
new Vector2( c.y, 1 - c.z ),
new Vector2( d.y, 1 - d.z )
];
}
if(数学绝对值(a.y-b.y)<0.01){
返回[
新矢量2(a.x,1-a.z),
新矢量2(b.x,1-b.z),
新矢量2(c.x,1-c.z),
新矢量2(d.x,1-d.z)
];
}否则{
返回[
新矢量2(a.y,1-a.z),
新矢量2(b.y,1-b.z),
新矢量2(c.y,1-c.z),
新矢量2(d.y,1-d.z)
];
}
例如,这会在uv中产生奇怪的不连续性(仅显示此形状上红色和绿色通道处的uv坐标):
删除此块(并始终使用
else
块)将使一切按预期运行。有人能告诉我为什么首先存在此块吗?挤出计量的默认UV生成器基于顶点的位置设置UV
请注意,extractegeometry
的侧壁由一系列链接在一起的矩形组成
如果侧壁在XYZ空间中基本垂直,则根据位置的YZ坐标确定UV;否则,将使用XZ坐标
这不是一个容易的问题。此处的UV生成是合理的,但会导致拉伸
如果有更好的算法,您可以自由指定自己的UV生成器
3.js r.82