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

Three.js r71 is showing black screen when trying to load json object

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

  1. 我有一个文件 "pre.obj" 使用 convert_obj_three.py 脚本
    转换为 "pre.js" "pre.obj" 使用 "pre.mtl" 因为它有 material 个图像 "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();
    

就像你在这里看到的那样http://xsportfit.com/threejs/没有显示任何内容,我在控制台中收到这些警告:

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

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

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

一个选择是这样做:

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

three.js r.71