Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript three.js';s ExtradeGeometry.UVGenerator.generateSideWallUV?_Javascript_Three.js_Mesh - Fatal编程技术网

Javascript three.js';s ExtradeGeometry.UVGenerator.generateSideWallUV?

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 ) ];

在三个.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 )
        ];

    } 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