Ver código fonte

Add calibration behavior

Nick Steyer 1 ano atrás
pai
commit
bc2da0b084

+ 1 - 0
Assembly-CSharp.csproj

@@ -209,6 +209,7 @@
     <Compile Include="Assets\ZED\Tools\Mixed Reality Calibration\Scripts\LookAtCameraPartialAxis.cs" />
     <Compile Include="Assets\ZED\SDK\Helpers\Scripts\PlaneDetection\ZEDPlaneDetectionManager.cs" />
     <Compile Include="Assets\ZED\SDK\Helpers\Scripts\Utilities\ZEDLogMessage.cs" />
+    <Compile Include="Assets\CalibrationMarkerBehavior.cs" />
   </ItemGroup>
   <ItemGroup>
     <None Include="Assets\ZED\Examples\GreenScreen\Shaders\Mask_Quad.shader" />

+ 61 - 0
Assets/CalibrationMarkerBehavior.cs

@@ -0,0 +1,61 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.Specialized;
+using System.Net;
+using TMPro;
+using Unity.VisualScripting;
+using UnityEngine;
+using UnityEngine.Timeline;
+
+public class CalibrationMarkerBehavior : MonoBehaviour
+{
+    Vector3[] frustumCorners;
+    List<Vector3> targetPositions;
+    float startTime;
+    float duration = 2.0f;
+    Vector3 startPoint;
+    Vector3 endPoint;
+
+    // Start is called before the first frame update
+    void Start()
+    {
+        var camera = Camera.main;
+        frustumCorners = new Vector3[4];
+        camera.CalculateFrustumCorners(camera.rect, camera.transform.position.y, camera.stereoActiveEye, frustumCorners);
+
+        targetPositions = new List<Vector3>()
+        {
+            new Vector3(frustumCorners[0].x, 0, frustumCorners[0].y),
+            new Vector3(frustumCorners[1].x, 0, frustumCorners[1].y),
+            new Vector3(frustumCorners[2].x, 0, frustumCorners[2].y),
+            new Vector3(frustumCorners[3].x, 0, frustumCorners[3].y),
+        };
+
+        currentTarget = GameObject.Find("CalibrationMarker").transform.position;
+    }
+
+    int targetIndex = -1;
+    Vector3 currentTarget = Vector3.zero;
+    Vector3 normalizedTranslationVector = Vector3.zero;
+
+    // Update is called once per frame
+    void Update()
+    {
+        var marker = GameObject.Find("CalibrationMarker");
+
+        var speed = 2.5f;
+
+        if (Vector3.Distance(marker.transform.position, currentTarget) >= 0.05f)
+        {
+            marker.transform.position = marker.transform.position + Vector3.ClampMagnitude(normalizedTranslationVector * Time.deltaTime * speed, (currentTarget - marker.transform.position).magnitude);
+        }
+        else if (targetIndex < targetPositions.Count - 1)
+        {
+            targetIndex++;
+            currentTarget = targetPositions[targetIndex];
+            normalizedTranslationVector = (currentTarget - marker.transform.position).normalized;
+        }
+
+
+    }
+}

+ 11 - 0
Assets/CalibrationMarkerBehavior.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1b4c4acdcaaafa446b01abd537ac6f64
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 32 - 67
Assets/Scenes/Calibration.unity

@@ -176,7 +176,7 @@ Camera:
   far clip plane: 10
   field of view: 60
   orthographic: 1
-  orthographic size: 5
+  orthographic size: 7
   m_Depth: 1
   m_CullingMask:
     serializedVersion: 2
@@ -207,71 +207,6 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
---- !u!1001 &1693434507
-PrefabInstance:
-  m_ObjectHideFlags: 0
-  serializedVersion: 2
-  m_Modification:
-    m_TransformParent: {fileID: 0}
-    m_Modifications:
-    - target: {fileID: 1180261165772202, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
-      propertyPath: m_Name
-      value: ZED_Rig_Mono
-      objectReference: {fileID: 0}
-    - target: {fileID: 4329734432191940, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
-      propertyPath: m_RootOrder
-      value: 2
-      objectReference: {fileID: 0}
-    - target: {fileID: 4329734432191940, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
-      propertyPath: m_LocalPosition.x
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 4329734432191940, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
-      propertyPath: m_LocalPosition.y
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 4329734432191940, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
-      propertyPath: m_LocalPosition.z
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 4329734432191940, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
-      propertyPath: m_LocalRotation.w
-      value: 1
-      objectReference: {fileID: 0}
-    - target: {fileID: 4329734432191940, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
-      propertyPath: m_LocalRotation.x
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 4329734432191940, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
-      propertyPath: m_LocalRotation.y
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 4329734432191940, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
-      propertyPath: m_LocalRotation.z
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 4329734432191940, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
-      propertyPath: m_LocalEulerAnglesHint.x
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 4329734432191940, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
-      propertyPath: m_LocalEulerAnglesHint.y
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 4329734432191940, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
-      propertyPath: m_LocalEulerAnglesHint.z
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 114491592745282986, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
-      propertyPath: inputType
-      value: 1
-      objectReference: {fileID: 0}
-    - target: {fileID: 114491592745282986, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
-      propertyPath: svoInputFileName
-      value: C:/Users/nick.steyer/Git/Files/HD1080_SN39598725_17-45-47.svo
-      objectReference: {fileID: 0}
-    m_RemovedComponents: []
-  m_SourcePrefab: {fileID: 100100000, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
 --- !u!1 &1915020868
 GameObject:
   m_ObjectHideFlags: 0
@@ -314,7 +249,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 3
+  m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &2057004203
 GameObject:
@@ -328,6 +263,8 @@ GameObject:
   - component: {fileID: 2057004206}
   - component: {fileID: 2057004205}
   - component: {fileID: 2057004204}
+  - component: {fileID: 2057004208}
+  - component: {fileID: 2057004209}
   m_Layer: 0
   m_Name: CalibrationMarker
   m_TagString: Untagged
@@ -413,3 +350,31 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2057004208
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2057004203}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1b4c4acdcaaafa446b01abd537ac6f64, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!54 &2057004209
+Rigidbody:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2057004203}
+  serializedVersion: 2
+  m_Mass: 1
+  m_Drag: 0
+  m_AngularDrag: 0.05
+  m_UseGravity: 0
+  m_IsKinematic: 0
+  m_Interpolate: 0
+  m_Constraints: 0
+  m_CollisionDetection: 0