Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
了解.OBJ 3D对象的位置_3d_Three.js_.obj - Fatal编程技术网

了解.OBJ 3D对象的位置

了解.OBJ 3D对象的位置,3d,three.js,.obj,3d,Three.js,.obj,我正在尝试制作一个简单的可视化系统,以显示帝国大厦中各种物体的大小。所以我买了,它有几种格式,包括.obj。然后我用了三个来将它添加到场景中 container = document.getElementById("city"); camera = new THREE.PerspectiveCamera( 60, 1, 1, 2000 ); camera.position.set( 100, 0, -100 ); scene = new THREE.Scene(

我正在尝试制作一个简单的可视化系统,以显示帝国大厦中各种物体的大小。所以我买了,它有几种格式,包括
.obj
。然后我用了三个来将它添加到场景中

    container = document.getElementById("city");
    camera = new THREE.PerspectiveCamera( 60, 1, 1, 2000 );
    camera.position.set( 100, 0, -100 );

    scene = new THREE.Scene();
    scene.background = new THREE.Color( 0x87CEEB );

    var ambientLight = new THREE.AmbientLight( 0xcccccc, 0.4 );
    scene.add( ambientLight );

    // load the ESB model
    var loader = new THREE.OBJLoader();

    loader.load(
        'data/esb.obj',
        function ( object ) { // called when resource is loaded
            ESB = object;
            scene.add( object );
        },
        function ( xhr ) { // called when loading is in progresses
            console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );
        },
        function ( error ) {
            console.log(error);
        }
    );
这将成功加载OBJ文件--。(我会戴上密码笔,但没有重新分发OBJ的权利。请不要偷!)

但是,正如您所看到的,当我添加了一些在远处隐约可见的轴辅助对象时,ESB从左侧漂入:

显然,我不太理解.obj规范,尽管我已经试着读过了。我的问题是:

  • OBJ文件是否具有绝对坐标,因此,出于某种原因,ESB将远离文件的中心
  • 为什么它在移动?OBJ文件是否有动力,或者这是我在Three.js中所做的工作的产物

一如既往地谢谢你

是的,ESB的模型不是以原点为中心的。如果您将其导入Blender,您可以轻松地验证这一点。尝试通过以下方式将加载的
OBJ
重新定位到场景中心:

var boundingBox = new THREE.Box3().setFromObject( object );
boundingBox.getCenter( object.position ).negate();
对象的移动与
OBJ
格式无关。我猜某些应用程序级代码会导致这种行为