如何在three.js中将摄影机坐标设置为对象?使用“示例”;webgl obj+;mtl装载机“;

如何在three.js中将摄影机坐标设置为对象?使用“示例”;webgl obj+;mtl装载机“;,three.js,wavefront,Three.js,Wavefront,我有一个in.obj格式。但是,此三维模型的坐标不是(0,0,0)。这是无人机图像的3D渲染,因此坐标是实际的地理参考坐标 下面是Three.js中关于如何在webgl上加载带有mtl的obj的示例。我使用原始版本,只是简单地替换CerroPelaoLow列出的male02 obj,文件放在obj目录中。Firefox正确显示模型,但位置是问题所在 请注意,此渲染是由程序以这种方式生成的,即使我可以使用诸如Meshlab之类的程序操纵模型,我仍然希望尽可能少地操纵 那么,我如何使用对象的局部坐标

我有一个in.obj格式。但是,此三维模型的坐标不是(0,0,0)。这是无人机图像的3D渲染,因此坐标是实际的地理参考坐标

下面是Three.js中关于如何在webgl上加载带有mtl的obj的示例。我使用原始版本,只是简单地替换CerroPelaoLow列出的male02 obj,文件放在obj目录中。Firefox正确显示模型,但位置是问题所在

请注意,此渲染是由程序以这种方式生成的,即使我可以使用诸如Meshlab之类的程序操纵模型,我仍然希望尽可能少地操纵


那么,我如何使用对象的局部坐标或对焦摄影机,然后使用一组不同的控件呢?

您可以使用对象几何体的
边界球体
边界框
来确定摄影机的位置和位置。我已经实现了聚焦一个对象或一组对象的功能。因此,我在这里分享一些代码:

//假设以下变量:
//对象->您的obj模型(三个网格)
//照相机->透视照相机
//控制->我也在使用轨道控制
//如果尚未设置boundingSphere
object.computeBoundingSphere();
var sphere=object.geometry.boundingSphere.clone();
sphere.applyMatrix4(object.matrixWorld);
//从当前中心到摄影机位置的矢量(长度不应为零)
var s=新的三个.Vector3()子向量(camera.position,controls.center);
var h=sphere.radius/Math.tan(camera.fov/2*Math.PI/180);
var newPos=new THREE.Vector3().addVectors(sphere.center,s.setLength(h));
照相机.位置.复印件(newPos);
控件.center.copy(sphere.center);