2013-07-25 80 views
0

我是新手,我想我错过了一些东西。
有人可以检查吗?
HTML页面:http://xalien95.altervista.org/pkmnxy_engine/alisopoli.html
模型和纹理:http://xalien95.altervista.org/pkmnxy_engine/alisopoli/
我可以看到模型(用怪异的颜色),而不是纹理(它与多种材料网状)。

提前感谢!用JSONloader加载纹理

编辑: 我与所有的材料类型的尝试:

  • THREE.MeshBasicMaterial
  • THREE.MeshDepthMaterial
  • THREE.MeshLambertMaterial
  • THREE.MeshNormalMaterial
  • THREE.MeshPhongMaterial

但是没有人工作,所以我认为我错过了一些东西(或者材料路径不同)。 这里的脚本:

var camera, scene, renderer, mesh, loader; 

     init(); 
     animate(); 

     function init() { 

      camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 1, 10000); 
      camera.position.z = 1000; 

      scene = new THREE.Scene(); 

      loader = new THREE.JSONLoader(); 

      loader.load("./alisopoli/alisopoli.js", function(geometry, materials) { 
       var faceMaterial = new THREE.MeshPhongMaterial(materials); 
       mesh = new THREE.Mesh(geometry, faceMaterial); 
       mesh.scale.set(100, 100, 100); 
       mesh.position.y = -150; 
       mesh.position.x = 0; 
       mesh.rotation.x = 60; 
       scene.add(mesh); 
      }); 


      var ambientLight = new THREE.AmbientLight(0x555555); 
      scene.add(ambientLight); 

      //var directionalLight = new THREE.DirectionalLight(0xffffff); 
      //directionalLight.position.set(1, 1, 1).normalize(); 
      //scene.add(directionalLight); 

      renderer = new THREE.WebGLRenderer(); 
      renderer.setSize(window.innerWidth, window.innerHeight); 

      document.body.appendChild(renderer.domElement); 

     } 

     function animate() { 

      requestAnimationFrame(animate); 

      //mesh.rotation.y += 0.005; 

      renderer.render(scene, camera); 
     } 

提前感谢!

+0

'var faceMaterial = new THREE.MeshFaceMaterial(materials);'此外,出口商似乎已经分配了一个'lightMap'给每个材质。将它们设置为'null'。如果你仍然有问题,从一个更简单的项目开始,直到你得到它的工作。尝试提出有助于他人的问题。 – WestLangley

+0

@WestLangley谢谢!有用! 现在我遇到了THREE.DoubleSide和纹理的alpha通道问题。我试图添加 'faceMaterial.side = THREE.DoubleSide;' 但它不起作用。 再次感谢你:) – xAlien95

回答

0

怪异的颜色,因为要分配的加载过程中的每一个网格“MeshNormalMaterial”。你应该检查three.js的json加载器的例子或以某种方式得到正确的材料,而不是分配MeshNormalMaterials到子网格

+0

我不知道如何进行;我试图在其他示例中的搜索和本人得到这个'变种材料=新THREE.MeshPhongMaterial({地图:THREE.ImageUtils.loadTexture( '1.png'),环境:0x999999,颜色:0XFFFFFF,镜面:0XFFFFFF,反光:25 ,morphTargets:true});'。 我该怎么办? 感谢您的快速回复 – xAlien95