THREE.OBJLoader无法显示obj文件?

时间:2017-03-26 22:37:30

标签: three.js objloader

这是我的代码......我搜索了很多关于它...但我无法找到没有任何显示的问题!也没有任何错误!如果你能帮助我,我也可以把你的档案发给你......谢谢

    <body>
    <script src="Three.js"></script>
    <script src="DDSLoader.js"></script>
    <script src="MTLLoader.js"></script>
    <script src="OBJLoader.js"></script>


    <script>
     // Setup a new scene
     var scene = new THREE.Scene();


     // Setup the camera
    var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);
    camera.position.z = 0;
    camera.position.x = 0;
    camera.position.y = 0;
     // Setup the renderer
     var renderer = new THREE.WebGLRenderer();
     renderer.setSize(window.innerWidth, window.innerHeight);
     document.body.appendChild(renderer.domElement);

     var onProgress = function ( xhr ) {
                        if ( xhr.lengthComputable ) {
                            var percentComplete = xhr.loaded / xhr.total * 100;
                            console.log( Math.round(percentComplete, 2) + '% downloaded' );
                        }
                    };
                    var onError = function ( xhr ) { };

                    THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );

    var mtlLoader = new THREE.MTLLoader();
    mtlLoader.setPath( 'obj/table/' );
    mtlLoader.load( 'table.mtl', function( materials ) {
    materials.preload();
    var objLoader = new THREE.OBJLoader();
    objLoader.setMaterials( materials );
    objLoader.setPath( 'obj/table/' );
    objLoader.load( 'table.obj', function ( object ) {
                object.position.x = 0;
                object.position.y = 0;
                object.position.z = 0;
                scene.add( object );
            }, onProgress, onError );
        });



     // Render loop to rotate our sphere by a little bit each frame
     var render = function () {
         renderer.setClearColor( 0xa9db8b );
       renderer.render(scene, camera);
     };

     render();
     </script>
<canvas width="1366" height="662" style="width: 1366px; height: 662px;"></canvas>
    </body>

2 个答案:

答案 0 :(得分:0)

您将对象放在(0,0,0),相机放在同一位置。 请为您的相机试用此代码:

async run(message, args) {
    LolApi.init('censored', 'na');
    LolApi.setRateLimit(10, 500);
    var input = '';
    args = args.toLowerCase();
    LolApi.Summoner.getByName(args, function (err, summoner) {
        if (!err) {
            Name = summoner[args].name;
            Name = Name.toLowerCase();
            Id = summoner[Name].id;
            Level = summoner[Name].summonerLevel;

            input += "Name: " + summoner[Name].name + '\n' +
                "Level: " + Level + "\n";
            console.log(input);
            //message.reply(input);
            process.nextTick(LolApi.getLeagueData);
        }
        else {
            message.reply('Error fam.');
        }
    });

    setTimeout(function(){console.log('Waiting...')},2000);
    LolApi.getLeagueData(Id,'NA', function (err, summoner) {
        if (!err) {
            Tier = summoner[Id][0].tier;
            Division = summoner[Id][0].entries[0].division;
            input += "Tier: " + Tier + '\n' +
                "Division: " + Division;
            message.reply(input);
        } else {
            console.log(Name);
            console.log(err);
            message.reply('Error Fam' + Id + "test");
        }
    });
}

答案 1 :(得分:0)

作为选项:在模型加载之前调用render()

试试这个:

objLoader.load( 'table.obj', function ( object ) {
                object.position.x = 0;
                object.position.y = 0;
                object.position.z = 0;
                scene.add( object );
                render();  // call it in the callback function
            }, onProgress, onError );
        });