Javascript 将模型从Blender导出到Three.js时没有纹理

Javascript 将模型从Blender导出到Three.js时没有纹理,javascript,three.js,blender,Javascript,Three.js,Blender,我正在尝试使用Blender导出到Three.js插件,从Blender导出一个带有纹理的模型,以便在Three.js中使用 (红色)位于混合器内部,在导出之前,显示模型的外观 喜欢应用于模型的纹理为大理石 (蓝色)将模型导出为Three.js格式(文件名fullBoard.js)并在Blender中重新打开后 (绿色)将前面提到的导出与Three.js一起使用 用于初始化模型的My Javascript函数: function init2(){ container = doc

我正在尝试使用Blender导出到Three.js插件,从Blender导出一个带有纹理的模型,以便在Three.js中使用

  • (红色)位于混合器内部,在导出之前,显示模型的外观 喜欢应用于模型的纹理为大理石
  • (蓝色)将模型导出为Three.js格式(文件名fullBoard.js)并在Blender中重新打开后
  • (绿色)将前面提到的导出与Three.js一起使用
  • 用于初始化模型的My Javascript函数:

        function init2(){
        container = document.createElement( 'div' );
        document.body.appendChild( container );
        camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 2000 );
        camera.position.z = 100;
    
        scene = new THREE.Scene();
    
        var ambient = new THREE.AmbientLight( 0x101010 );
        scene.add( ambient );
    
        var directionalLight = new THREE.DirectionalLight( 0xffeedd );
        directionalLight.position.set( 0.5, 2, 1 ).normalize();
        scene.add( directionalLight );
    
        renderer = new THREE.WebGLRenderer();
        renderer.setSize( window.innerWidth, window.innerHeight );
        container.appendChild( renderer.domElement );
    
        var loader  = new THREE.JSONLoader();
    
        loader.load( 'objects/fullBoard.js', function ( geometry, materials ) {
            var material1 = materials[ 0 ]; //black
            var material2 = materials[ 1 ]; //white
            mesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
            mesh.scale.set(5,5,5);
            scene.add( mesh );
        }  );
    
        document.addEventListener( 'mousemove', onDocumentMouseMove, false );
        window.addEventListener( 'resize', onWindowResize, false );
    
    }
    

    我一直在努力寻找一种简单的方法来制作定制3D模型,以便与具有纹理的Three.js一起使用。我还尝试使用三个.ColladaLoader()导出.dae文件,但该方法也无法生成纹理

    默认情况下,混合器程序纹理不会导出。但是,可以将它们烘焙到常规纹理中,然后导出。网上有教程

    我还建议使用不同的导出器,如二进制GLTF(.glb)

    我曾经使用过three.js exporter,但发现它在three.js的修订版之间会相对过时,如果您使用现有的格式,如gltf或collada,那么如果您以后需要进行更改但丢失了原始格式,您将与其他程序具有更好的互操作性


    GLTF还有一个很好的优点,就是压缩网格,这可以对网络交付的内容产生巨大的影响。

    你看了吗?是的,但我不认为它完全适用,因为我尝试使用预设的混合器纹理,因此,当我导出到Three.js格式时,没有要尝试加载的“texture.jpg”。当然,大理石纹理也存在于某个地方,可能在Blender程序目录中。除非它是程序性的,在这种情况下,您需要将其转换为图像。这似乎描述了导出程序纹理的过程: