【问题标题】:How to load json 3d object and put it at origin in threejs如何加载json 3d对象并将其放在threejs中的原点
【发布时间】:2015-11-10 06:20:01
【问题描述】:

我们如何加载 json 对象并将其放置在原点。 object.position.x 和 mesh.position.x 都没有帮助我反对原点。我想获取对象的最大和最小 x、y 和 z 值,以便创建对象边界框。当我在以原点为中心的屏幕上绘制该框时,它将在其中包含整个对象。如果对象的位置不在原点,我现在这样做的方式不起作用。

【问题讨论】:

    标签: javascript json three.js


    【解决方案1】:

    如果未设置mesh.geometry.boundingBox 属性,请使用mesh.geometry.computeBoundingBox() 方法设置该属性。然后(显式写这个,你可以用Vector操作来做)

    var geometryCenter = new THREE.Vector3();
    geometryCenter.x = mesh.geometry.boundingBox.min.x + ( mesh.geometry.boundingBox.max.x - mesh.geometry.boundingBox.min.x ) / 2;
    geometryCenter.y = mesh.geometry.boundingBox.min.y + ( mesh.geometry.boundingBox.max.y - mesh.geometry.boundingBox.min.y ) / 2;
    geometryCenter.z = mesh.geometry.boundingBox.min.z + ( mesh.geometry.boundingBox.max.z - mesh.geometry.boundingBox.min.z ) / 2;
    
    mesh.position.set( -geometryCenter.x, -geometryCenter.y, -geometryCenter.z );
    

    应该将你的网格放在原点。

    【讨论】:

    • mesh.geometry.computeBoundingBox();给出未定义的。
    • 你需要链接未缩小版的three.js,并通过代码追踪找出原因。对象似乎有问题。
    【解决方案2】:

    调用mesh.geometry.center(),它会将几何体本身偏移到以原点为中心。

    【讨论】:

      猜你喜欢
      • 2019-06-26
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 2019-04-19
      • 2016-09-09
      • 2023-01-26
      • 2018-04-28
      • 2016-08-04
      相关资源
      最近更新 更多