Browse Source

Fix normal positioning and rotation

Johannes Kreutz 2 years ago
parent
commit
f8e899078a

+ 6 - 4
track-client/TrackClient/Assets/TrackpointApp/ActionPoint.cs

@@ -6,13 +6,15 @@ namespace TrackpointApp
     {
         private GameObject cylinder;
         private const int divisor = Configuration.divisor;
-        
+
         public void setup()
         {
             cylinder = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
-            cylinder.transform.parent = this.transform;
-            size(2.5f / divisor, 2.0f / divisor);
+            cylinder.transform.parent = gameObject.transform;
+            cylinder.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f);
+            cylinder.transform.localRotation = new Quaternion(0.0f, 0.0f, 0.0f, 0.0f);
             cylinder.GetComponent<Renderer>().material.color = Color.blue;
+            size(2.5f / divisor, 2.0f / divisor);
         }
 
         private void size(float radius, float length)
@@ -27,4 +29,4 @@ namespace TrackpointApp
             cylinder.transform.localScale = rescale;
         }
     }
-}
+}

+ 1 - 1
track-client/TrackClient/Assets/TrackpointApp/Configuration.cs

@@ -2,6 +2,6 @@
 {
     public class Configuration
     {
-        public const int divisor = 1000;
+        public const int divisor = 100;
     }
 }

+ 5 - 5
track-client/TrackClient/Assets/TrackpointApp/SteamVRTrack.cs

@@ -17,7 +17,7 @@ public class SteamVRTrack : MonoBehaviour
     private List<ActionPoint> actionPoints = new List<ActionPoint>();
     private TrackpointMesh trackpointMesh;
     private SteamVR_TrackedObject tracking;
-    
+
     // Start is called before the first frame update
     void Start()
     {
@@ -48,7 +48,7 @@ public class SteamVRTrack : MonoBehaviour
         float[] normal = metaObject[0].normal;
         trackpointMesh.transform.localPosition = new Vector3(-(point[0] / divisor), -(point[1] / divisor), -(point[2] / divisor));
         Vector3 unityNormal = new Vector3(normal[0], normal[2], normal[1]);
-        Quaternion rotateObjectToTrackpoint = Quaternion.FromToRotation(Vector3.up, unityNormal); 
+        Quaternion rotateObjectToTrackpoint = Quaternion.FromToRotation(Vector3.up, unityNormal);
         Quaternion correction = Quaternion.AngleAxis(rotationCorrection, Vector3.back);
         Quaternion result = correction * rotateObjectToTrackpoint;
         rotationObject.transform.rotation = result;
@@ -66,8 +66,8 @@ public class SteamVRTrack : MonoBehaviour
             float[] point = actionPoint.Value.point;
             float[] normal = actionPoint.Value.normal;
             anchor.transform.localPosition = new Vector3(point[0] / divisor, point[1] / divisor, point[2] / divisor);
-            Vector3 unityNormal = new Vector3(normal[0], normal[2], normal[1]);
-            anchor.transform.rotation = Quaternion.FromToRotation(Vector3.up, unityNormal);
+            Vector3 unityNormal = new Vector3(normal[0], normal[1], normal[2]);
+            anchor.transform.localRotation = Quaternion.FromToRotation(Vector3.up, unityNormal);
             ActionPoint actionPointObject = anchor.AddComponent<ActionPoint>();
             actionPointObject.setup();
             actionPoints.Add(actionPointObject);
@@ -88,4 +88,4 @@ public class trackpoints
         get;
         set;
     }
-}
+}