Camera tracking fixes:
- Fixed incorrect memory access on distoritons more than 128 pixels - Do not use UNDO operators flags for delete proxy operator (files can't be restored form disk), and also do not use UNDO for set as background operator (background images are storing in 3d viewport which isn't getting re-loaded on undo which can lead to incorrect users count of movie clip user).
This commit is contained in:
@@ -24,7 +24,7 @@
|
||||
namespace libmv {
|
||||
|
||||
struct Offset {
|
||||
signed char ix, iy;
|
||||
short ix, iy;
|
||||
unsigned char fx,fy;
|
||||
};
|
||||
|
||||
@@ -201,20 +201,14 @@ void CameraIntrinsics::ComputeLookupGrid(Grid* grid, int width, int height, doub
|
||||
warp_y = warp_y*aspy + 0.5 * overscan * h;
|
||||
int ix = int(warp_x), iy = int(warp_y);
|
||||
int fx = round((warp_x-ix)*256), fy = round((warp_y-iy)*256);
|
||||
if(fx == 256) { fx=0; ix++; }
|
||||
if(fy == 256) { fy=0; iy++; }
|
||||
// Use nearest border pixel
|
||||
if( ix < 0 ) { ix = 0, fx = 0; }
|
||||
if( iy < 0 ) { iy = 0, fy = 0; }
|
||||
if( ix >= width-2 ) ix = width-2;
|
||||
if( iy >= height-2 ) iy = height-2;
|
||||
if ( ix-x > -128 && ix-x < 128 && iy-y > -128 && iy-y < 128 ) {
|
||||
Offset offset = { ix-x, iy-y, fx, fy };
|
||||
grid->offset[y*width+x] = offset;
|
||||
} else {
|
||||
Offset offset = { 0, 0, 0, 0 };
|
||||
grid->offset[y*width+x] = offset;
|
||||
}
|
||||
|
||||
Offset offset = { ix-x, iy-y, fx, fy };
|
||||
grid->offset[y*width+x] = offset;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -116,7 +116,7 @@ class CLIP_OT_delete_proxy(Operator):
|
||||
|
||||
bl_idname = "clip.delete_proxy"
|
||||
bl_label = "Delete Proxy"
|
||||
bl_options = {'UNDO', 'REGISTER'}
|
||||
bl_options = {'REGISTER'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
@@ -191,7 +191,7 @@ class CLIP_OT_set_viewport_background(Operator):
|
||||
|
||||
bl_idname = "clip.set_viewport_background"
|
||||
bl_label = "Set as Background"
|
||||
bl_options = {'UNDO', 'REGISTER'}
|
||||
bl_options = {'REGISTER'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
|
Reference in New Issue
Block a user