JSON模型纹理无法加载

时间:2012-12-27 21:49:13

标签: javascript webgl three.js

我已经使用python工具将obj文件转换为json模型 我试图加载它 这是代码

var camera, scene, renderer;
var mesh, aircraft;

function addModelToScene( geometry, materials )
{
    aircraft = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial( materials ) );
    scene.add( aircraft );
}

function init()
{
    camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 0.1, 20000 );
    camera.position.z = 30;
    scene = new THREE.Scene();

var jsonLoader = new THREE.JSONLoader( true );
jsonLoader.load( "XA-20.js", addModelToScene );
renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
}

function animate()
{
    requestAnimationFrame( animate );
    aircraft.rotation.y += 0.02;
    renderer.render( scene, camera );
}

模型正在加载,但没有纹理 模型文件很大所以我不能在这里发布 但有材料

"materials": [  {
"DbgColor" : 15658734,
"DbgIndex" : 0,
"DbgName" : "plane",
"colorAmbient" : [0.117647, 0.117647, 0.117647],
"colorDiffuse" : [1.0, 1.0, 1.0],
"colorSpecular" : [0.75294099999999997, 0.75294099999999997, 0.75294099999999997],
"illumination" : 2,
"mapBump" : "XA-20_Razorback_Strike_Fighter_N.png",
"mapDiffuse" : "XA-20_Razorback_Strike_Fighter_P01.png",
"specularCoef" : 8.0
},

{
"DbgColor" : 15597568,
"DbgIndex" : 1,
"DbgName" : "glass",
"colorAmbient" : [0.117647, 0.117647, 0.117647],
"colorDiffuse" : [1.0, 1.0, 1.0],
"colorSpecular" : [0.75294099999999997, 0.75294099999999997, 0.75294099999999997],
"illumination" : 2,
"mapDiffuse" : "Glass_Cockpit.png",
"specularCoef" : 8.0
},.......

和uvs以及

"uvs": [[0.72626,-0.65659,0.72655,-0.62558,0.72427,-0.6262,0.72391,-0.66141,0.73223,-0.62103,0.73212,.......

我可以寻找解决方案的任何线索?

2 个答案:

答案 0 :(得分:0)

jsonLoader.load有第三个参数来设置纹理路径。将此texturePath设置为具有纹理的文件夹,它应该可以工作。

https://github.com/mrdoob/three.js/blob/master/src/loaders/JSONLoader.js#L16

答案 1 :(得分:0)

在我的情况下,问题是我没有正确添加照明 所以模特没有足够的光线显得多彩 它确实加载了纹理,但在视觉上它因为光照而不可见

所以如果遇到类似的问题,请先检查你的照明