Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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
Javascript 我们如何计算物体的边界框_Javascript_3d_Three.js - Fatal编程技术网

Javascript 我们如何计算物体的边界框

Javascript 我们如何计算物体的边界框,javascript,3d,three.js,Javascript,3d,Three.js,} } 我试图计算3d json模型的边界框。现在我只是用一个球体。当我尝试获取边界框时,它会显示null。如何获取边界框,以便即使加载复杂模型,它也会计算整个模型的边界框。好的,我编写了这个方法来获取最大值和最小值。现在我将尝试处理这个问题。但是如果有人能回答为什么boundingBox不工作,我将不胜感激。 function callBack(object3D_geometry){ var material = new THREE.MeshLambertMaterial( { co

}

}


我试图计算3d json模型的边界框。现在我只是用一个球体。当我尝试获取边界框时,它会显示null。如何获取边界框,以便即使加载复杂模型,它也会计算整个模型的边界框。

好的,我编写了这个方法来获取最大值和最小值。现在我将尝试处理这个问题。但是如果有人能回答为什么boundingBox不工作,我将不胜感激。

function callBack(object3D_geometry){ 
    var material = new THREE.MeshLambertMaterial( { color:0x000000 } );
    var model = new THREE.Mesh( object3D_geometry, material);
    scene.add(model);

    console.log(object3D_geometry);
    //console.log(object3D_geometry.boundingBox); 
    //model.geometry.computeBoundingBox;
    modelBoundingBox = model.geometry.boundingBox;

    console.log("model Bounding box");
    console.log(modelBoundingBox);

    renderer.render( scene, camera );   
函数计算最大最小值(模型顶点){
var min_X=模型顶点[0].X;
var max_X=模型顶点[0].X;
var min_Y=模型顶点[0].Y;
var max_Y=模型顶点[0].Y;
var min_Z=模型顶点[0].Z;
var max_Z=模型顶点[0].Z;
对于(var i=1;imax\ux)max\ux=模型顶点[i].x;
如果(模型顶点[i].xmax_y)max_y=modelVertices[i].y;
如果(modelVertices[i].ymax_z)max_z=modelVertices[i].z;
如果(modelVertices[i].z
几何体。computeBoundingBox
是一种声明。要执行方法,您需要括号>
geometry.computeBoundingBox()
我尝试使用括号,但它仍然表示未定义。如何在原点加载对象。我尝试将几何体和网格x、y、z位置设置为0。但它不起作用。仅供参考,你发布的代码不起作用。你发现错误了吗<代码>如果(模型顶点[i].x>max_Y)max_Y=模型顶点[i].Y哦,是的,我明白了。非常感谢。
function callBack(object3D_geometry){ 
    var material = new THREE.MeshLambertMaterial( { color:0x000000 } );
    var model = new THREE.Mesh( object3D_geometry, material);
    scene.add(model);

    console.log(object3D_geometry);
    //console.log(object3D_geometry.boundingBox); 
    //model.geometry.computeBoundingBox;
    modelBoundingBox = model.geometry.boundingBox;

    console.log("model Bounding box");
    console.log(modelBoundingBox);

    renderer.render( scene, camera );   
function calculate_XYZ_Max_Min(modelVertices){
    var min_X = modelVertices[0].x;
    var max_X = modelVertices[0].x;
    var min_Y = modelVertices[0].y;
    var max_Y = modelVertices[0].y;
    var min_Z = modelVertices[0].z;
    var max_Z = modelVertices[0].z;


    for (var i=1; i< modelVertices.length; i++){

        if (modelVertices[i].x > max_X)     max_X = modelVertices[i].x;
        if (modelVertices[i].x < min_X)     min_X = modelVertices[i].x;
        if (modelVertices[i].y > max_Y)     max_Y = modelVertices[i].y;
        if (modelVertices[i].y < min_Y)     min_Y = modelVertices[i].y;
        if (modelVertices[i].z > max_Z)     max_Z = modelVertices[i].z;
        if (modelVertices[i].z < min_Z)     min_Z = modelVertices[i].z;
    }

    return{
        xMin: Math.floor(min_X);
        xMax: Math.ceil(max_X); 
        yMin: Math.floor(min_Y);
        yMax: Math.ceil(max_Y);
        zMin: Math.floor(min_Z);
        zMax: Math.ceil(max_Z);
    }
}