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);
}
}