首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >THREE.OBJLoader不能显示obj文件吗?

THREE.OBJLoader不能显示obj文件吗?
EN

Stack Overflow用户
提问于 2017-03-26 22:37:29
回答 2查看 926关注 0票数 0

这是我的密码..。我找了很多关于它的东西。但我找不到问题在哪里,什么也不会显示!也没有任何错误!如果你能帮我的话我也可以把我的文件寄给你..。谢谢

代码语言:javascript
复制
    <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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-27 08:07:14

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

试试这个:

代码语言:javascript
复制
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 );
        });
票数 0
EN

Stack Overflow用户

发布于 2017-03-26 23:34:58

您将您的对象放置在(0,0,0)和相机在同一位置。试试你的相机的代码:

代码语言:javascript
复制
// Place camera on x-axis
camera.position.set(10,0,0);
camera.up = new THREE.Vector3(0,0,1);
camera.lookAt(new THREE.Vector3(0,0,0));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43035413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档