无法将three.js纹理应用于从blender导入的JSON模型

时间:2017-02-18 11:33:32

标签: three.js blender

我正在尝试将纹理应用于从Blender 2.78b导出的简单3维立方体模型(事实上,默认的搅拌机立方体)。我以标准的three.js JSON格式导出模型。我意识到我应该能够在Blender中在几何体的顶部应用纹理,但我想要" style"运行时在three.js中的blender模型。因此,我只对使用blender为我的网格提供几何图形感兴趣。

我创建了一个plunker来说明情况。

我在 blenderGeom 中加载一个blender模型,然后将一个MeshBasicMaterial应用 map 设置为一个砖纹理(不幸的是,我必须将纹理加载为Base64,因为plunker不允许你上传图像)。然后我将完全相同的材质/纹理应用于原生的three.js BoxGeometry nonBlenderCubeGeom

  function loadModel() {
    console.log('now in loadModel');
    var promise = new Promise( (resolve, reject) => {
      var loader = new THREE.JSONLoader();

      // load a resource

  loader.load(
    'cube.json', (blenderGeom, materials) => {
      console.log(`loadModel: now loading cube: geomery=${geometry}`);
      let cubeMaterial = new THREE.MeshBasicMaterial({
        color: 0xff8080,
        wireframe: false,
        map: brickTexture
      })

      nonBlenderCubeGeom = new THREE.BoxGeometry(50, 50, 50);
      blenderCubeGeom = blenderGeom;
      blenderCube = new THREE.Mesh(blenderGeom, cubeMaterial); //no work
      blenderCube.position.x = -20;
      nonBlenderCube = new THREE.Mesh(nonBlenderCubeGeom, cubeMaterial); //work
      nonBlenderCube.position.x = 20;

      blenderCube.scale.set(10, 10, 10);

      scene.add(blenderCube);
      scene.add(nonBlenderCube);

正如您在运行plunker时所看到的,只有右侧的原生three.js对象被纹理化,左侧的blender型号不是:

enter image description here

我做错了吗?它只是一个限制,你只能在Blender中构建一个模型吗?

Three.js r84。搅拌机2.78b。我在three.js方面假设这个,但我也打开了搅拌机。

非常感谢。

0 个答案:

没有答案