Javascript 将模型从Blender导出到Three.js时没有纹理
我正在尝试使用Blender导出到Three.js插件,从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
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程序目录中。除非它是程序性的,在这种情况下,您需要将其转换为图像。这似乎描述了导出程序纹理的过程: