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形状材质纹理显示错误_Javascript_Three.js_Textures - Fatal编程技术网

Javascript Three.js形状材质纹理显示错误

Javascript Three.js形状材质纹理显示错误,javascript,three.js,textures,Javascript,Three.js,Textures,我在Three.js中是新手,在Shape对象上使用图像纹理时遇到了一个问题。以下是我的功能: function addShape( shape, extrudeSettings, color, x, y, z, rx, ry, rz, s ) { // 3d shape var geometry = new THREE.ExtrudeGeometry( shape, extrudeSettings ); //var mesh = THREE.

我在Three.js中是新手,在Shape对象上使用图像纹理时遇到了一个问题。以下是我的功能:

function addShape( shape, extrudeSettings, color, x, y, z, rx, ry, rz, s ) {

        // 3d shape
        var geometry = new THREE.ExtrudeGeometry( shape, extrudeSettings );

        //var mesh = THREE.SceneUtils.createMultiMaterialObject( geometry, [ new THREE.MeshLambertMaterial( { map: OBJECT3D.tableLegTexture, ambient: color, shading: THREE.FlatShading } ) ] );
        var mesh_mat    = new THREE.MeshLambertMaterial( { map: OBJECT3D.tableLegTexture,ambient: 0x999999 } );
        mesh        = new THREE.Mesh(geometry, mesh_mat);

        mesh.position.set( x, y, z );
        mesh.rotation.set( rx, ry, rz );
        //mesh.scale.set( s, s, s );
        group.add( mesh );
    }

function createBein(position) {

        group = new THREE.Object3D();
        group.position.y = 50;


        if (position == "right") {

            var circleRadius = 400;
            var circleShape = new THREE.Shape();
            circleShape.moveTo( 0, circleRadius );
            circleShape.quadraticCurveTo( 40, circleRadius, 40, 0 );
            circleShape.quadraticCurveTo( 40, -circleRadius, 0, -circleRadius );
            circleShape.quadraticCurveTo( -40, -circleRadius, -40, 0 );
            circleShape.quadraticCurveTo( -40, circleRadius, 0, circleRadius );

            var extrudeSettings = { amount: OBJECT3D.heightTable };
            extrudeSettings.bevelEnabled = false;
            extrudeSettings.bevelSegments = 2;
            extrudeSettings.steps = 1;

            x_pos = 0;
            y_pos = OBJECT3D.heightTable;
            z_pos = 40-Math.round(OBJECT3D.lengthTableTop/2)+300;

            rot_x = Math.PI/2;
            rot_y = 0;
            rot_z = Math.PI/2;

            var result = addShape( circleShape, extrudeSettings, 0x999999, x_pos, y_pos, z_pos, rot_x, rot_y, rot_z, 1 ); // addShape( shape, extrudeSettings, color, x, y, z, rx, ry, rz, s )

            return result;
        }

    }
在这里你可以看到结果:

桌腿的纹理应该看起来像桌面的纹理。
有人知道我如何解决这个纹理问题吗

看看这些是否有帮助。谢谢韦斯特兰利的回答。是的,我已经看过这篇文章了,但我不确定这是否应该和如何与紫外线一起工作。你有一个基本的方法给我吗?你需要了解UV是如何工作的,如果你还不了解它们,然后适当地设置UV。另一种方法是使用Blender或Clara.io等建模工具,将模型导入three.js。js主要是一个渲染引擎,而不是一个建模工具。。。如果你想创建一个活生生的例子,我会看一看。非常感谢韦斯特兰利!我会用紫外线试一试!:)