mapillary / OpenSfM

Open source Structure-from-Motion pipeline
https://www.opensfm.org/
BSD 2-Clause "Simplified" License
3.38k stars 858 forks source link

how to show the imagePlane projection image a little smaller and a little before #227

Closed smeeteday closed 6 years ago

smeeteday commented 6 years ago

In opensfm's reconstruction.html The imagePlane display is too large. The display position is also displayed behind the pointcloud position much later. To show a little smaller a little before What should I do?

paulinus commented 6 years ago

There is a slider to set the size of the image plane under the "Controls" tab. Otherwise, you may want to load the reconstruction.meshed.json so that a coarse mesh is used instead of a plane.

smeeteday commented 6 years ago

thank you,so much.

Corresponds to shot_id in reconstruction.meshed.json I use vertixes to display ImagePlane frustumically. However, it is displayed in the atmosphere where the bottom of the frustum faces upward. The bottom edge of the image of the camera held horizontally becomes horizontal. Originally the bottom part, gradually downward, like a slide I want to display so that it goes gently downward.

my used imagePlaneGeo function:

function imagePlaneGeo(reconstruction, shot_id) {
var shot = reconstruction.shots[shot_id];
var cam = reconstruction.cameras[shot.camera];
if ('vertices' in shot) {
var geometry = new THREE.Geometry();
for (var i = 0; i < shot['vertices'].length; ++i) {
geometry.vertices.push(
new THREE.Vector3(
shot['vertices'][i][0],
shot['vertices'][i][1],
shot['vertices'][i][2]
)
);
}
for (var i = 0; i < shot['faces'].length; ++i) {
var v0 = shot['faces'][i][0];
var v1 = shot['faces'][i][1];
var v2 = shot['faces'][i][2];

    geometry.faces.push(
      new THREE.Face3(v0, v1, v2));                                      
   }                                                                                        
   return geometry;                                                                         

} else {
return imagePlaneGeoFlat(cam, shot); } }