Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.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 使用UV映射在平面几何体上将纹理旋转45度_Javascript_Three.js - Fatal编程技术网

Javascript 使用UV映射在平面几何体上将纹理旋转45度

Javascript 使用UV映射在平面几何体上将纹理旋转45度,javascript,three.js,Javascript,Three.js,我正在尝试将旋转纹理映射到平面几何体上 基本上,我有一个44x44钻石纹理,看起来像这样: 我想使用UV将图像中的钻石映射到我的平面几何体上。使用Three.js可以做到这一点吗?本质上,将texel(0,22)映射到uv(0,0),将texel(22,0)映射到uv(1.0,0),等等 以下是我正在使用的代码: 可以修改几何体的UV,如下所示: geometry = new THREE.PlaneGeometry( 1, 1 ); geometry.faceVertexUvs[ 0 ][

我正在尝试将旋转纹理映射到平面几何体上

基本上,我有一个44x44钻石纹理,看起来像这样:

我想使用UV将图像中的钻石映射到我的平面几何体上。使用Three.js可以做到这一点吗?本质上,将texel(0,22)映射到uv(0,0),将texel(22,0)映射到uv(1.0,0),等等

以下是我正在使用的代码:


可以修改几何体的UV,如下所示:

geometry = new THREE.PlaneGeometry( 1, 1 );

geometry.faceVertexUvs[ 0 ][ 0 ][ 0 ].set( 0.5, 1.0 );
geometry.faceVertexUvs[ 0 ][ 0 ][ 1 ].set( 0.0, 0.5 );
geometry.faceVertexUvs[ 0 ][ 0 ][ 2 ].set( 1.0, 0.5 );
geometry.faceVertexUvs[ 0 ][ 1 ][ 0 ].set( 0.0, 0.5 );
geometry.faceVertexUvs[ 0 ][ 1 ][ 1 ].set( 0.5, 0.0 );
geometry.faceVertexUvs[ 0 ][ 1 ][ 2 ].set( 1.0, 0.5 );  
BufferGeometry
更有效。你不妨用它

geometry = new THREE.PlaneBufferGeometry( 1, 1 );

geometry.attributes.uv.setXY( 0, 0.5, 1.0 );
geometry.attributes.uv.setXY( 1, 1.0, 0.5 );
geometry.attributes.uv.setXY( 2, 0.0, 0.5 );
geometry.attributes.uv.setXY( 3, 0.5, 0.0 );

three.js r.83

您可以修改几何体的UV,如下所示:

geometry = new THREE.PlaneGeometry( 1, 1 );

geometry.faceVertexUvs[ 0 ][ 0 ][ 0 ].set( 0.5, 1.0 );
geometry.faceVertexUvs[ 0 ][ 0 ][ 1 ].set( 0.0, 0.5 );
geometry.faceVertexUvs[ 0 ][ 0 ][ 2 ].set( 1.0, 0.5 );
geometry.faceVertexUvs[ 0 ][ 1 ][ 0 ].set( 0.0, 0.5 );
geometry.faceVertexUvs[ 0 ][ 1 ][ 1 ].set( 0.5, 0.0 );
geometry.faceVertexUvs[ 0 ][ 1 ][ 2 ].set( 1.0, 0.5 );  
BufferGeometry
更有效。你不妨用它

geometry = new THREE.PlaneBufferGeometry( 1, 1 );

geometry.attributes.uv.setXY( 0, 0.5, 1.0 );
geometry.attributes.uv.setXY( 1, 1.0, 0.5 );
geometry.attributes.uv.setXY( 2, 0.0, 0.5 );
geometry.attributes.uv.setXY( 3, 0.5, 0.0 );

three.js r.83

这就是你的意思吗?是的。你能回答这个问题吗?这就是你的意思吗?是的。你能把它写进一个答案吗?