Browse Source

fix bug-多次同步分辨率

ZIM 1 year ago
parent
commit
376b99d2f5

+ 10 - 1
Assets/InfraredProject/WebCamera/Script/ZIM/ScreenLocate.cs

@@ -431,7 +431,7 @@ public partial class ScreenLocate : MonoBehaviour
             //infraredLocate.SetBrightnessThreshold(redfilterValue);     // 参数是 红外灯的亮度阈值,阈值越小能够检测到的亮度就越低,默认值是0.93
         }
 
-        if (screenIdentification.Screen.RefreshCameraSize(getUVCCameraInfoSize))       // 同步分辨率, 分辨率变化后还需同步到InfraredDemo
+        if (RefreshCameraSize())       // 同步分辨率, 分辨率变化后还需同步到InfraredDemo
         {
             quadUnityVectorList = screenIdentification.Screen.QuadInCamera.GetUnityVertexNormalizedList();
 
@@ -693,6 +693,15 @@ public partial class ScreenLocate : MonoBehaviour
 
     }
 
+    private bool RefreshCameraSize()
+    {
+        var sizeNew = getUVCCameraInfoSize.o0Vector();
+        screenIdentification.QuadAuto?.ReSize(sizeNew, ScreenMap.ViewAspectRatioSetting);
+        screenIdentification.QuadManual?.ReSize(sizeNew, ScreenMap.ViewAspectRatioSetting);
+        screenIdentification.QuadSemiAuto?.ReSize(sizeNew, ScreenMap.ViewAspectRatioSetting);
+        return screenIdentification.Screen.RefreshCameraSize(getUVCCameraInfoSize);
+    }
+
     Vector2 targetPos = Vector2.zero;
     Vector2 movePos = Vector2.zero;
     int moveSpeed = 20;

+ 10 - 10
Assets/SmartBow/Scripts/Views/InfraredViewParts/InfraredScreenPositioningView.cs

@@ -792,16 +792,16 @@ public class InfraredScreenPositioningView : JCUnityLib.ViewBase
                 2 * (targetList[3] + lo) };
 
         // 记录手动数据
-        var size = ScreenLocate.Main.getUVCCameraInfoSize;
-        var quad = new QuadrilateralInCamera(
-                new o0.Geometry2D.Float.Vector(targetList[0].x * size.x, targetList[0].y * size.y),
-                new o0.Geometry2D.Float.Vector(targetList[1].x * size.x, targetList[1].y * size.y),
-                new o0.Geometry2D.Float.Vector(targetList[3].x * size.x, targetList[3].y * size.y),
-                new o0.Geometry2D.Float.Vector(targetList[2].x * size.x, targetList[2].y * size.y),
-                size.o0Vector()
-            );
-        ScreenLocate.Main.ScreenIdentification.QuadManual = quad;
-        Debug.Log("<color=aqua>[ScreenLocate] 记录手动数据</color>");
+        //var size = ScreenLocate.Main.getUVCCameraInfoSize;
+        //var quad = new QuadrilateralInCamera(
+        //        new o0.Geometry2D.Float.Vector(targetList[0].x * size.x, targetList[0].y * size.y),
+        //        new o0.Geometry2D.Float.Vector(targetList[1].x * size.x, targetList[1].y * size.y),
+        //        new o0.Geometry2D.Float.Vector(targetList[3].x * size.x, targetList[3].y * size.y),
+        //        new o0.Geometry2D.Float.Vector(targetList[2].x * size.x, targetList[2].y * size.y),
+        //        size.o0Vector()
+        //    );
+        //ScreenLocate.Main.ScreenIdentification.QuadManual = quad;
+        //Debug.Log("<color=aqua>[ScreenLocate] 记录手动数据</color>");
     }
 
     void SaveLocalPos()