尝试加载json对象时,Three.js r71显示黑屏

时间:2015-08-21 16:36:49

标签: three.js 3dsmax .obj

我将列举到目前为止所做的事情:

  1. 我使用convert_obj_three.py脚本将“pre.obj”文件转换为“pre.js” “pre.obj”使用“pre.mtl”,因为它具有图像材质“specular.jpg”

    “pre.obj”,“pre.mtl”和“specular.jpg”可以分别在这里查看

    xsportfit.com/threejs/pre.obj

    xsportfit.com/threejs/pre.mtl

    xsportfit.com/threejs/specular.jpg

  2. 我尝试使用这种方式使用three.js库加载“pre.js”文件:

    var scene = new THREE.Scene();
    var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 100);
    camera.position.z = 3;
    var renderer = new THREE.WebGLRenderer();
    renderer.setSize(window.innerWidth, window.innerHeight);
    document.body.appendChild(renderer.domElement);
    var jsonLoader = new THREE.JSONLoader();
    var mesh;
    jsonLoader.load('pre.js',function (geometry, materials) {
                        var material = new THREE.MeshFaceMaterial(materials);
                        mesh = new THREE.Mesh(geometry, material);
                        scene.add(mesh);
                    }
            );
    
    var render = function () {
    requestAnimationFrame(render);
    renderer.render(scene, camera);
    };
    
    render();
    
  3. 就像你在这里看到http://xsportfit.com/threejs/没有显示任何内容,我在控制台中收到这些警告:

    THREE.WebGLRenderer:不支持OES_texture_float_linear扩展。 three.js:11611 THREE.Loader:透明度已重命名为不透明度

    任何帮助都会很棒,谢谢!

1 个答案:

答案 0 :(得分:0)

您的materials数组包含MeshLambertMaterial的实例。 MeshLambertMaterial需要场景中的灯光。

一种选择是:

var light = new THREE.DirectionalLight( 0xffffff, 1 );
light.position.set( 10, 10, 10 );
scene.add( light );

three.js r.71