diff --git a/Assets/AXIP/AILIA-MODELS/PoseEstimation/AiliaMediapipePoseWorldLamdmarksAnchors.cs b/Assets/AXIP/AILIA-MODELS/PoseEstimation/AiliaMediapipePoseWorldLamdmarksAnchors.cs new file mode 100644 index 0000000..9cbad75 --- /dev/null +++ b/Assets/AXIP/AILIA-MODELS/PoseEstimation/AiliaMediapipePoseWorldLamdmarksAnchors.cs @@ -0,0 +1,9037 @@ +/* AILIA Unity Plugin Blazeface Anchors */ +/* Copyright 2022 AXELL CORPORATION */ + +using System.Collections; +using System.Collections.Generic; +using System; +using System.IO; +using System.Runtime.InteropServices; + +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.Video; + +namespace ailiaSDK +{ + public class AiliaMediapipePoseWorldLandmarksAnchors + { + public double[] anchors = { + 0.01785714365541935, + 0.01785714365541935, + 1, + 1, + 0.01785714365541935, + 0.01785714365541935, + 1, + 1, + 0.0535714291036129, + 0.01785714365541935, + 1, + 1, + 0.0535714291036129, + 0.01785714365541935, + 1, + 1, + 0.0892857164144516, + 0.01785714365541935, + 1, + 1, + 0.0892857164144516, + 0.01785714365541935, + 1, + 1, + 0.125, + 0.01785714365541935, + 1, + 1, + 0.125, + 0.01785714365541935, + 1, + 1, + 0.1607142835855484, + 0.01785714365541935, + 1, + 1, + 0.1607142835855484, + 0.01785714365541935, + 1, + 1, + 0.1964285671710968, + 0.01785714365541935, + 1, + 1, + 0.1964285671710968, + 0.01785714365541935, + 1, + 1, + 0.2321428507566452, + 0.01785714365541935, + 1, + 1, + 0.2321428507566452, + 0.01785714365541935, + 1, + 1, + 0.2678571343421936, + 0.01785714365541935, + 1, + 1, + 0.2678571343421936, + 0.01785714365541935, + 1, + 1, + 0.3035714328289032, + 0.01785714365541935, + 1, + 1, + 0.3035714328289032, + 0.01785714365541935, + 1, + 1, + 0.3392857015132904, + 0.01785714365541935, + 1, + 1, + 0.3392857015132904, + 0.01785714365541935, + 1, + 1, + 0.375, + 0.01785714365541935, + 1, + 1, + 0.375, + 0.01785714365541935, + 1, + 1, + 0.4107142984867096, + 0.01785714365541935, + 1, + 1, + 0.4107142984867096, + 0.01785714365541935, + 1, + 1, + 0.4464285671710968, + 0.01785714365541935, + 1, + 1, + 0.4464285671710968, + 0.01785714365541935, + 1, + 1, + 0.4821428656578064, + 0.01785714365541935, + 1, + 1, + 0.4821428656578064, + 0.01785714365541935, + 1, + 1, + 0.5178571343421936, + 0.01785714365541935, + 1, + 1, + 0.5178571343421936, + 0.01785714365541935, + 1, + 1, + 0.5535714030265808, + 0.01785714365541935, + 1, + 1, + 0.5535714030265808, + 0.01785714365541935, + 1, + 1, + 0.5892857313156128, + 0.01785714365541935, + 1, + 1, + 0.5892857313156128, + 0.01785714365541935, + 1, + 1, + 0.625, + 0.01785714365541935, + 1, + 1, + 0.625, + 0.01785714365541935, + 1, + 1, + 0.6607142686843872, + 0.01785714365541935, + 1, + 1, + 0.6607142686843872, + 0.01785714365541935, + 1, + 1, + 0.6964285969734192, + 0.01785714365541935, + 1, + 1, + 0.6964285969734192, + 0.01785714365541935, + 1, + 1, + 0.7321428656578064, + 0.01785714365541935, + 1, + 1, + 0.7321428656578064, + 0.01785714365541935, + 1, + 1, + 0.7678571343421936, + 0.01785714365541935, + 1, + 1, + 0.7678571343421936, + 0.01785714365541935, + 1, + 1, + 0.8035714030265808, + 0.01785714365541935, + 1, + 1, + 0.8035714030265808, + 0.01785714365541935, + 1, + 1, + 0.8392857313156128, + 0.01785714365541935, + 1, + 1, + 0.8392857313156128, + 0.01785714365541935, + 1, + 1, + 0.875, + 0.01785714365541935, + 1, + 1, + 0.875, + 0.01785714365541935, + 1, + 1, + 0.9107142686843872, + 0.01785714365541935, + 1, + 1, + 0.9107142686843872, + 0.01785714365541935, + 1, + 1, + 0.9464285969734192, + 0.01785714365541935, + 1, + 1, + 0.9464285969734192, + 0.01785714365541935, + 1, + 1, + 0.9821428656578064, + 0.01785714365541935, + 1, + 1, + 0.9821428656578064, + 0.01785714365541935, + 1, + 1, + 0.01785714365541935, + 0.0535714291036129, + 1, + 1, + 0.01785714365541935, + 0.0535714291036129, + 1, + 1, + 0.0535714291036129, + 0.0535714291036129, + 1, + 1, + 0.0535714291036129, + 0.0535714291036129, + 1, + 1, + 0.0892857164144516, + 0.0535714291036129, + 1, + 1, + 0.0892857164144516, + 0.0535714291036129, + 1, + 1, + 0.125, + 0.0535714291036129, + 1, + 1, + 0.125, + 0.0535714291036129, + 1, + 1, + 0.1607142835855484, + 0.0535714291036129, + 1, + 1, + 0.1607142835855484, + 0.0535714291036129, + 1, + 1, + 0.1964285671710968, + 0.0535714291036129, + 1, + 1, + 0.1964285671710968, + 0.0535714291036129, + 1, + 1, + 0.2321428507566452, + 0.0535714291036129, + 1, + 1, + 0.2321428507566452, + 0.0535714291036129, + 1, + 1, + 0.2678571343421936, + 0.0535714291036129, + 1, + 1, + 0.2678571343421936, + 0.0535714291036129, + 1, + 1, + 0.3035714328289032, + 0.0535714291036129, + 1, + 1, + 0.3035714328289032, + 0.0535714291036129, + 1, + 1, + 0.3392857015132904, + 0.0535714291036129, + 1, + 1, + 0.3392857015132904, + 0.0535714291036129, + 1, + 1, + 0.375, + 0.0535714291036129, + 1, + 1, + 0.375, + 0.0535714291036129, + 1, + 1, + 0.4107142984867096, + 0.0535714291036129, + 1, + 1, + 0.4107142984867096, + 0.0535714291036129, + 1, + 1, + 0.4464285671710968, + 0.0535714291036129, + 1, + 1, + 0.4464285671710968, + 0.0535714291036129, + 1, + 1, + 0.4821428656578064, + 0.0535714291036129, + 1, + 1, + 0.4821428656578064, + 0.0535714291036129, + 1, + 1, + 0.5178571343421936, + 0.0535714291036129, + 1, + 1, + 0.5178571343421936, + 0.0535714291036129, + 1, + 1, + 0.5535714030265808, + 0.0535714291036129, + 1, + 1, + 0.5535714030265808, + 0.0535714291036129, + 1, + 1, + 0.5892857313156128, + 0.0535714291036129, + 1, + 1, + 0.5892857313156128, + 0.0535714291036129, + 1, + 1, + 0.625, + 0.0535714291036129, + 1, + 1, + 0.625, + 0.0535714291036129, + 1, + 1, + 0.6607142686843872, + 0.0535714291036129, + 1, + 1, + 0.6607142686843872, + 0.0535714291036129, + 1, + 1, + 0.6964285969734192, + 0.0535714291036129, + 1, + 1, + 0.6964285969734192, + 0.0535714291036129, + 1, + 1, + 0.7321428656578064, + 0.0535714291036129, + 1, + 1, + 0.7321428656578064, + 0.0535714291036129, + 1, + 1, + 0.7678571343421936, + 0.0535714291036129, + 1, + 1, + 0.7678571343421936, + 0.0535714291036129, + 1, + 1, + 0.8035714030265808, + 0.0535714291036129, + 1, + 1, + 0.8035714030265808, + 0.0535714291036129, + 1, + 1, + 0.8392857313156128, + 0.0535714291036129, + 1, + 1, + 0.8392857313156128, + 0.0535714291036129, + 1, + 1, + 0.875, + 0.0535714291036129, + 1, + 1, + 0.875, + 0.0535714291036129, + 1, + 1, + 0.9107142686843872, + 0.0535714291036129, + 1, + 1, + 0.9107142686843872, + 0.0535714291036129, + 1, + 1, + 0.9464285969734192, + 0.0535714291036129, + 1, + 1, + 0.9464285969734192, + 0.0535714291036129, + 1, + 1, + 0.9821428656578064, + 0.0535714291036129, + 1, + 1, + 0.9821428656578064, + 0.0535714291036129, + 1, + 1, + 0.01785714365541935, + 0.0892857164144516, + 1, + 1, + 0.01785714365541935, + 0.0892857164144516, + 1, + 1, + 0.0535714291036129, + 0.0892857164144516, + 1, + 1, + 0.0535714291036129, + 0.0892857164144516, + 1, + 1, + 0.0892857164144516, + 0.0892857164144516, + 1, + 1, + 0.0892857164144516, + 0.0892857164144516, + 1, + 1, + 0.125, + 0.0892857164144516, + 1, + 1, + 0.125, + 0.0892857164144516, + 1, + 1, + 0.1607142835855484, + 0.0892857164144516, + 1, + 1, + 0.1607142835855484, + 0.0892857164144516, + 1, + 1, + 0.1964285671710968, + 0.0892857164144516, + 1, + 1, + 0.1964285671710968, + 0.0892857164144516, + 1, + 1, + 0.2321428507566452, + 0.0892857164144516, + 1, + 1, + 0.2321428507566452, + 0.0892857164144516, + 1, + 1, + 0.2678571343421936, + 0.0892857164144516, + 1, + 1, + 0.2678571343421936, + 0.0892857164144516, + 1, + 1, + 0.3035714328289032, + 0.0892857164144516, + 1, + 1, + 0.3035714328289032, + 0.0892857164144516, + 1, + 1, + 0.3392857015132904, + 0.0892857164144516, + 1, + 1, + 0.3392857015132904, + 0.0892857164144516, + 1, + 1, + 0.375, + 0.0892857164144516, + 1, + 1, + 0.375, + 0.0892857164144516, + 1, + 1, + 0.4107142984867096, + 0.0892857164144516, + 1, + 1, + 0.4107142984867096, + 0.0892857164144516, + 1, + 1, + 0.4464285671710968, + 0.0892857164144516, + 1, + 1, + 0.4464285671710968, + 0.0892857164144516, + 1, + 1, + 0.4821428656578064, + 0.0892857164144516, + 1, + 1, + 0.4821428656578064, + 0.0892857164144516, + 1, + 1, + 0.5178571343421936, + 0.0892857164144516, + 1, + 1, + 0.5178571343421936, + 0.0892857164144516, + 1, + 1, + 0.5535714030265808, + 0.0892857164144516, + 1, + 1, + 0.5535714030265808, + 0.0892857164144516, + 1, + 1, + 0.5892857313156128, + 0.0892857164144516, + 1, + 1, + 0.5892857313156128, + 0.0892857164144516, + 1, + 1, + 0.625, + 0.0892857164144516, + 1, + 1, + 0.625, + 0.0892857164144516, + 1, + 1, + 0.6607142686843872, + 0.0892857164144516, + 1, + 1, + 0.6607142686843872, + 0.0892857164144516, + 1, + 1, + 0.6964285969734192, + 0.0892857164144516, + 1, + 1, + 0.6964285969734192, + 0.0892857164144516, + 1, + 1, + 0.7321428656578064, + 0.0892857164144516, + 1, + 1, + 0.7321428656578064, + 0.0892857164144516, + 1, + 1, + 0.7678571343421936, + 0.0892857164144516, + 1, + 1, + 0.7678571343421936, + 0.0892857164144516, + 1, + 1, + 0.8035714030265808, + 0.0892857164144516, + 1, + 1, + 0.8035714030265808, + 0.0892857164144516, + 1, + 1, + 0.8392857313156128, + 0.0892857164144516, + 1, + 1, + 0.8392857313156128, + 0.0892857164144516, + 1, + 1, + 0.875, + 0.0892857164144516, + 1, + 1, + 0.875, + 0.0892857164144516, + 1, + 1, + 0.9107142686843872, + 0.0892857164144516, + 1, + 1, + 0.9107142686843872, + 0.0892857164144516, + 1, + 1, + 0.9464285969734192, + 0.0892857164144516, + 1, + 1, + 0.9464285969734192, + 0.0892857164144516, + 1, + 1, + 0.9821428656578064, + 0.0892857164144516, + 1, + 1, + 0.9821428656578064, + 0.0892857164144516, + 1, + 1, + 0.01785714365541935, + 0.125, + 1, + 1, + 0.01785714365541935, + 0.125, + 1, + 1, + 0.0535714291036129, + 0.125, + 1, + 1, + 0.0535714291036129, + 0.125, + 1, + 1, + 0.0892857164144516, + 0.125, + 1, + 1, + 0.0892857164144516, + 0.125, + 1, + 1, + 0.125, + 0.125, + 1, + 1, + 0.125, + 0.125, + 1, + 1, + 0.1607142835855484, + 0.125, + 1, + 1, + 0.1607142835855484, + 0.125, + 1, + 1, + 0.1964285671710968, + 0.125, + 1, + 1, + 0.1964285671710968, + 0.125, + 1, + 1, + 0.2321428507566452, + 0.125, + 1, + 1, + 0.2321428507566452, + 0.125, + 1, + 1, + 0.2678571343421936, + 0.125, + 1, + 1, + 0.2678571343421936, + 0.125, + 1, + 1, + 0.3035714328289032, + 0.125, + 1, + 1, + 0.3035714328289032, + 0.125, + 1, + 1, + 0.3392857015132904, + 0.125, + 1, + 1, + 0.3392857015132904, + 0.125, + 1, + 1, + 0.375, + 0.125, + 1, + 1, + 0.375, + 0.125, + 1, + 1, + 0.4107142984867096, + 0.125, + 1, + 1, + 0.4107142984867096, + 0.125, + 1, + 1, + 0.4464285671710968, + 0.125, + 1, + 1, + 0.4464285671710968, + 0.125, + 1, + 1, + 0.4821428656578064, + 0.125, + 1, + 1, + 0.4821428656578064, + 0.125, + 1, + 1, + 0.5178571343421936, + 0.125, + 1, + 1, + 0.5178571343421936, + 0.125, + 1, + 1, + 0.5535714030265808, + 0.125, + 1, + 1, + 0.5535714030265808, + 0.125, + 1, + 1, + 0.5892857313156128, + 0.125, + 1, + 1, + 0.5892857313156128, + 0.125, + 1, + 1, + 0.625, + 0.125, + 1, + 1, + 0.625, + 0.125, + 1, + 1, + 0.6607142686843872, + 0.125, + 1, + 1, + 0.6607142686843872, + 0.125, + 1, + 1, + 0.6964285969734192, + 0.125, + 1, + 1, + 0.6964285969734192, + 0.125, + 1, + 1, + 0.7321428656578064, + 0.125, + 1, + 1, + 0.7321428656578064, + 0.125, + 1, + 1, + 0.7678571343421936, + 0.125, + 1, + 1, + 0.7678571343421936, + 0.125, + 1, + 1, + 0.8035714030265808, + 0.125, + 1, + 1, + 0.8035714030265808, + 0.125, + 1, + 1, + 0.8392857313156128, + 0.125, + 1, + 1, + 0.8392857313156128, + 0.125, + 1, + 1, + 0.875, + 0.125, + 1, + 1, + 0.875, + 0.125, + 1, + 1, + 0.9107142686843872, + 0.125, + 1, + 1, + 0.9107142686843872, + 0.125, + 1, + 1, + 0.9464285969734192, + 0.125, + 1, + 1, + 0.9464285969734192, + 0.125, + 1, + 1, + 0.9821428656578064, + 0.125, + 1, + 1, + 0.9821428656578064, + 0.125, + 1, + 1, + 0.01785714365541935, + 0.1607142835855484, + 1, + 1, + 0.01785714365541935, + 0.1607142835855484, + 1, + 1, + 0.0535714291036129, + 0.1607142835855484, + 1, + 1, + 0.0535714291036129, + 0.1607142835855484, + 1, + 1, + 0.0892857164144516, + 0.1607142835855484, + 1, + 1, + 0.0892857164144516, + 0.1607142835855484, + 1, + 1, + 0.125, + 0.1607142835855484, + 1, + 1, + 0.125, + 0.1607142835855484, + 1, + 1, + 0.1607142835855484, + 0.1607142835855484, + 1, + 1, + 0.1607142835855484, + 0.1607142835855484, + 1, + 1, + 0.1964285671710968, + 0.1607142835855484, + 1, + 1, + 0.1964285671710968, + 0.1607142835855484, + 1, + 1, + 0.2321428507566452, + 0.1607142835855484, + 1, + 1, + 0.2321428507566452, + 0.1607142835855484, + 1, + 1, + 0.2678571343421936, + 0.1607142835855484, + 1, + 1, + 0.2678571343421936, + 0.1607142835855484, + 1, + 1, + 0.3035714328289032, + 0.1607142835855484, + 1, + 1, + 0.3035714328289032, + 0.1607142835855484, + 1, + 1, + 0.3392857015132904, + 0.1607142835855484, + 1, + 1, + 0.3392857015132904, + 0.1607142835855484, + 1, + 1, + 0.375, + 0.1607142835855484, + 1, + 1, + 0.375, + 0.1607142835855484, + 1, + 1, + 0.4107142984867096, + 0.1607142835855484, + 1, + 1, + 0.4107142984867096, + 0.1607142835855484, + 1, + 1, + 0.4464285671710968, + 0.1607142835855484, + 1, + 1, + 0.4464285671710968, + 0.1607142835855484, + 1, + 1, + 0.4821428656578064, + 0.1607142835855484, + 1, + 1, + 0.4821428656578064, + 0.1607142835855484, + 1, + 1, + 0.5178571343421936, + 0.1607142835855484, + 1, + 1, + 0.5178571343421936, + 0.1607142835855484, + 1, + 1, + 0.5535714030265808, + 0.1607142835855484, + 1, + 1, + 0.5535714030265808, + 0.1607142835855484, + 1, + 1, + 0.5892857313156128, + 0.1607142835855484, + 1, + 1, + 0.5892857313156128, + 0.1607142835855484, + 1, + 1, + 0.625, + 0.1607142835855484, + 1, + 1, + 0.625, + 0.1607142835855484, + 1, + 1, + 0.6607142686843872, + 0.1607142835855484, + 1, + 1, + 0.6607142686843872, + 0.1607142835855484, + 1, + 1, + 0.6964285969734192, + 0.1607142835855484, + 1, + 1, + 0.6964285969734192, + 0.1607142835855484, + 1, + 1, + 0.7321428656578064, + 0.1607142835855484, + 1, + 1, + 0.7321428656578064, + 0.1607142835855484, + 1, + 1, + 0.7678571343421936, + 0.1607142835855484, + 1, + 1, + 0.7678571343421936, + 0.1607142835855484, + 1, + 1, + 0.8035714030265808, + 0.1607142835855484, + 1, + 1, + 0.8035714030265808, + 0.1607142835855484, + 1, + 1, + 0.8392857313156128, + 0.1607142835855484, + 1, + 1, + 0.8392857313156128, + 0.1607142835855484, + 1, + 1, + 0.875, + 0.1607142835855484, + 1, + 1, + 0.875, + 0.1607142835855484, + 1, + 1, + 0.9107142686843872, + 0.1607142835855484, + 1, + 1, + 0.9107142686843872, + 0.1607142835855484, + 1, + 1, + 0.9464285969734192, + 0.1607142835855484, + 1, + 1, + 0.9464285969734192, + 0.1607142835855484, + 1, + 1, + 0.9821428656578064, + 0.1607142835855484, + 1, + 1, + 0.9821428656578064, + 0.1607142835855484, + 1, + 1, + 0.01785714365541935, + 0.1964285671710968, + 1, + 1, + 0.01785714365541935, + 0.1964285671710968, + 1, + 1, + 0.0535714291036129, + 0.1964285671710968, + 1, + 1, + 0.0535714291036129, + 0.1964285671710968, + 1, + 1, + 0.0892857164144516, + 0.1964285671710968, + 1, + 1, + 0.0892857164144516, + 0.1964285671710968, + 1, + 1, + 0.125, + 0.1964285671710968, + 1, + 1, + 0.125, + 0.1964285671710968, + 1, + 1, + 0.1607142835855484, + 0.1964285671710968, + 1, + 1, + 0.1607142835855484, + 0.1964285671710968, + 1, + 1, + 0.1964285671710968, + 0.1964285671710968, + 1, + 1, + 0.1964285671710968, + 0.1964285671710968, + 1, + 1, + 0.2321428507566452, + 0.1964285671710968, + 1, + 1, + 0.2321428507566452, + 0.1964285671710968, + 1, + 1, + 0.2678571343421936, + 0.1964285671710968, + 1, + 1, + 0.2678571343421936, + 0.1964285671710968, + 1, + 1, + 0.3035714328289032, + 0.1964285671710968, + 1, + 1, + 0.3035714328289032, + 0.1964285671710968, + 1, + 1, + 0.3392857015132904, + 0.1964285671710968, + 1, + 1, + 0.3392857015132904, + 0.1964285671710968, + 1, + 1, + 0.375, + 0.1964285671710968, + 1, + 1, + 0.375, + 0.1964285671710968, + 1, + 1, + 0.4107142984867096, + 0.1964285671710968, + 1, + 1, + 0.4107142984867096, + 0.1964285671710968, + 1, + 1, + 0.4464285671710968, + 0.1964285671710968, + 1, + 1, + 0.4464285671710968, + 0.1964285671710968, + 1, + 1, + 0.4821428656578064, + 0.1964285671710968, + 1, + 1, + 0.4821428656578064, + 0.1964285671710968, + 1, + 1, + 0.5178571343421936, + 0.1964285671710968, + 1, + 1, + 0.5178571343421936, + 0.1964285671710968, + 1, + 1, + 0.5535714030265808, + 0.1964285671710968, + 1, + 1, + 0.5535714030265808, + 0.1964285671710968, + 1, + 1, + 0.5892857313156128, + 0.1964285671710968, + 1, + 1, + 0.5892857313156128, + 0.1964285671710968, + 1, + 1, + 0.625, + 0.1964285671710968, + 1, + 1, + 0.625, + 0.1964285671710968, + 1, + 1, + 0.6607142686843872, + 0.1964285671710968, + 1, + 1, + 0.6607142686843872, + 0.1964285671710968, + 1, + 1, + 0.6964285969734192, + 0.1964285671710968, + 1, + 1, + 0.6964285969734192, + 0.1964285671710968, + 1, + 1, + 0.7321428656578064, + 0.1964285671710968, + 1, + 1, + 0.7321428656578064, + 0.1964285671710968, + 1, + 1, + 0.7678571343421936, + 0.1964285671710968, + 1, + 1, + 0.7678571343421936, + 0.1964285671710968, + 1, + 1, + 0.8035714030265808, + 0.1964285671710968, + 1, + 1, + 0.8035714030265808, + 0.1964285671710968, + 1, + 1, + 0.8392857313156128, + 0.1964285671710968, + 1, + 1, + 0.8392857313156128, + 0.1964285671710968, + 1, + 1, + 0.875, + 0.1964285671710968, + 1, + 1, + 0.875, + 0.1964285671710968, + 1, + 1, + 0.9107142686843872, + 0.1964285671710968, + 1, + 1, + 0.9107142686843872, + 0.1964285671710968, + 1, + 1, + 0.9464285969734192, + 0.1964285671710968, + 1, + 1, + 0.9464285969734192, + 0.1964285671710968, + 1, + 1, + 0.9821428656578064, + 0.1964285671710968, + 1, + 1, + 0.9821428656578064, + 0.1964285671710968, + 1, + 1, + 0.01785714365541935, + 0.2321428507566452, + 1, + 1, + 0.01785714365541935, + 0.2321428507566452, + 1, + 1, + 0.0535714291036129, + 0.2321428507566452, + 1, + 1, + 0.0535714291036129, + 0.2321428507566452, + 1, + 1, + 0.0892857164144516, + 0.2321428507566452, + 1, + 1, + 0.0892857164144516, + 0.2321428507566452, + 1, + 1, + 0.125, + 0.2321428507566452, + 1, + 1, + 0.125, + 0.2321428507566452, + 1, + 1, + 0.1607142835855484, + 0.2321428507566452, + 1, + 1, + 0.1607142835855484, + 0.2321428507566452, + 1, + 1, + 0.1964285671710968, + 0.2321428507566452, + 1, + 1, + 0.1964285671710968, + 0.2321428507566452, + 1, + 1, + 0.2321428507566452, + 0.2321428507566452, + 1, + 1, + 0.2321428507566452, + 0.2321428507566452, + 1, + 1, + 0.2678571343421936, + 0.2321428507566452, + 1, + 1, + 0.2678571343421936, + 0.2321428507566452, + 1, + 1, + 0.3035714328289032, + 0.2321428507566452, + 1, + 1, + 0.3035714328289032, + 0.2321428507566452, + 1, + 1, + 0.3392857015132904, + 0.2321428507566452, + 1, + 1, + 0.3392857015132904, + 0.2321428507566452, + 1, + 1, + 0.375, + 0.2321428507566452, + 1, + 1, + 0.375, + 0.2321428507566452, + 1, + 1, + 0.4107142984867096, + 0.2321428507566452, + 1, + 1, + 0.4107142984867096, + 0.2321428507566452, + 1, + 1, + 0.4464285671710968, + 0.2321428507566452, + 1, + 1, + 0.4464285671710968, + 0.2321428507566452, + 1, + 1, + 0.4821428656578064, + 0.2321428507566452, + 1, + 1, + 0.4821428656578064, + 0.2321428507566452, + 1, + 1, + 0.5178571343421936, + 0.2321428507566452, + 1, + 1, + 0.5178571343421936, + 0.2321428507566452, + 1, + 1, + 0.5535714030265808, + 0.2321428507566452, + 1, + 1, + 0.5535714030265808, + 0.2321428507566452, + 1, + 1, + 0.5892857313156128, + 0.2321428507566452, + 1, + 1, + 0.5892857313156128, + 0.2321428507566452, + 1, + 1, + 0.625, + 0.2321428507566452, + 1, + 1, + 0.625, + 0.2321428507566452, + 1, + 1, + 0.6607142686843872, + 0.2321428507566452, + 1, + 1, + 0.6607142686843872, + 0.2321428507566452, + 1, + 1, + 0.6964285969734192, + 0.2321428507566452, + 1, + 1, + 0.6964285969734192, + 0.2321428507566452, + 1, + 1, + 0.7321428656578064, + 0.2321428507566452, + 1, + 1, + 0.7321428656578064, + 0.2321428507566452, + 1, + 1, + 0.7678571343421936, + 0.2321428507566452, + 1, + 1, + 0.7678571343421936, + 0.2321428507566452, + 1, + 1, + 0.8035714030265808, + 0.2321428507566452, + 1, + 1, + 0.8035714030265808, + 0.2321428507566452, + 1, + 1, + 0.8392857313156128, + 0.2321428507566452, + 1, + 1, + 0.8392857313156128, + 0.2321428507566452, + 1, + 1, + 0.875, + 0.2321428507566452, + 1, + 1, + 0.875, + 0.2321428507566452, + 1, + 1, + 0.9107142686843872, + 0.2321428507566452, + 1, + 1, + 0.9107142686843872, + 0.2321428507566452, + 1, + 1, + 0.9464285969734192, + 0.2321428507566452, + 1, + 1, + 0.9464285969734192, + 0.2321428507566452, + 1, + 1, + 0.9821428656578064, + 0.2321428507566452, + 1, + 1, + 0.9821428656578064, + 0.2321428507566452, + 1, + 1, + 0.01785714365541935, + 0.2678571343421936, + 1, + 1, + 0.01785714365541935, + 0.2678571343421936, + 1, + 1, + 0.0535714291036129, + 0.2678571343421936, + 1, + 1, + 0.0535714291036129, + 0.2678571343421936, + 1, + 1, + 0.0892857164144516, + 0.2678571343421936, + 1, + 1, + 0.0892857164144516, + 0.2678571343421936, + 1, + 1, + 0.125, + 0.2678571343421936, + 1, + 1, + 0.125, + 0.2678571343421936, + 1, + 1, + 0.1607142835855484, + 0.2678571343421936, + 1, + 1, + 0.1607142835855484, + 0.2678571343421936, + 1, + 1, + 0.1964285671710968, + 0.2678571343421936, + 1, + 1, + 0.1964285671710968, + 0.2678571343421936, + 1, + 1, + 0.2321428507566452, + 0.2678571343421936, + 1, + 1, + 0.2321428507566452, + 0.2678571343421936, + 1, + 1, + 0.2678571343421936, + 0.2678571343421936, + 1, + 1, + 0.2678571343421936, + 0.2678571343421936, + 1, + 1, + 0.3035714328289032, + 0.2678571343421936, + 1, + 1, + 0.3035714328289032, + 0.2678571343421936, + 1, + 1, + 0.3392857015132904, + 0.2678571343421936, + 1, + 1, + 0.3392857015132904, + 0.2678571343421936, + 1, + 1, + 0.375, + 0.2678571343421936, + 1, + 1, + 0.375, + 0.2678571343421936, + 1, + 1, + 0.4107142984867096, + 0.2678571343421936, + 1, + 1, + 0.4107142984867096, + 0.2678571343421936, + 1, + 1, + 0.4464285671710968, + 0.2678571343421936, + 1, + 1, + 0.4464285671710968, + 0.2678571343421936, + 1, + 1, + 0.4821428656578064, + 0.2678571343421936, + 1, + 1, + 0.4821428656578064, + 0.2678571343421936, + 1, + 1, + 0.5178571343421936, + 0.2678571343421936, + 1, + 1, + 0.5178571343421936, + 0.2678571343421936, + 1, + 1, + 0.5535714030265808, + 0.2678571343421936, + 1, + 1, + 0.5535714030265808, + 0.2678571343421936, + 1, + 1, + 0.5892857313156128, + 0.2678571343421936, + 1, + 1, + 0.5892857313156128, + 0.2678571343421936, + 1, + 1, + 0.625, + 0.2678571343421936, + 1, + 1, + 0.625, + 0.2678571343421936, + 1, + 1, + 0.6607142686843872, + 0.2678571343421936, + 1, + 1, + 0.6607142686843872, + 0.2678571343421936, + 1, + 1, + 0.6964285969734192, + 0.2678571343421936, + 1, + 1, + 0.6964285969734192, + 0.2678571343421936, + 1, + 1, + 0.7321428656578064, + 0.2678571343421936, + 1, + 1, + 0.7321428656578064, + 0.2678571343421936, + 1, + 1, + 0.7678571343421936, + 0.2678571343421936, + 1, + 1, + 0.7678571343421936, + 0.2678571343421936, + 1, + 1, + 0.8035714030265808, + 0.2678571343421936, + 1, + 1, + 0.8035714030265808, + 0.2678571343421936, + 1, + 1, + 0.8392857313156128, + 0.2678571343421936, + 1, + 1, + 0.8392857313156128, + 0.2678571343421936, + 1, + 1, + 0.875, + 0.2678571343421936, + 1, + 1, + 0.875, + 0.2678571343421936, + 1, + 1, + 0.9107142686843872, + 0.2678571343421936, + 1, + 1, + 0.9107142686843872, + 0.2678571343421936, + 1, + 1, + 0.9464285969734192, + 0.2678571343421936, + 1, + 1, + 0.9464285969734192, + 0.2678571343421936, + 1, + 1, + 0.9821428656578064, + 0.2678571343421936, + 1, + 1, + 0.9821428656578064, + 0.2678571343421936, + 1, + 1, + 0.01785714365541935, + 0.3035714328289032, + 1, + 1, + 0.01785714365541935, + 0.3035714328289032, + 1, + 1, + 0.0535714291036129, + 0.3035714328289032, + 1, + 1, + 0.0535714291036129, + 0.3035714328289032, + 1, + 1, + 0.0892857164144516, + 0.3035714328289032, + 1, + 1, + 0.0892857164144516, + 0.3035714328289032, + 1, + 1, + 0.125, + 0.3035714328289032, + 1, + 1, + 0.125, + 0.3035714328289032, + 1, + 1, + 0.1607142835855484, + 0.3035714328289032, + 1, + 1, + 0.1607142835855484, + 0.3035714328289032, + 1, + 1, + 0.1964285671710968, + 0.3035714328289032, + 1, + 1, + 0.1964285671710968, + 0.3035714328289032, + 1, + 1, + 0.2321428507566452, + 0.3035714328289032, + 1, + 1, + 0.2321428507566452, + 0.3035714328289032, + 1, + 1, + 0.2678571343421936, + 0.3035714328289032, + 1, + 1, + 0.2678571343421936, + 0.3035714328289032, + 1, + 1, + 0.3035714328289032, + 0.3035714328289032, + 1, + 1, + 0.3035714328289032, + 0.3035714328289032, + 1, + 1, + 0.3392857015132904, + 0.3035714328289032, + 1, + 1, + 0.3392857015132904, + 0.3035714328289032, + 1, + 1, + 0.375, + 0.3035714328289032, + 1, + 1, + 0.375, + 0.3035714328289032, + 1, + 1, + 0.4107142984867096, + 0.3035714328289032, + 1, + 1, + 0.4107142984867096, + 0.3035714328289032, + 1, + 1, + 0.4464285671710968, + 0.3035714328289032, + 1, + 1, + 0.4464285671710968, + 0.3035714328289032, + 1, + 1, + 0.4821428656578064, + 0.3035714328289032, + 1, + 1, + 0.4821428656578064, + 0.3035714328289032, + 1, + 1, + 0.5178571343421936, + 0.3035714328289032, + 1, + 1, + 0.5178571343421936, + 0.3035714328289032, + 1, + 1, + 0.5535714030265808, + 0.3035714328289032, + 1, + 1, + 0.5535714030265808, + 0.3035714328289032, + 1, + 1, + 0.5892857313156128, + 0.3035714328289032, + 1, + 1, + 0.5892857313156128, + 0.3035714328289032, + 1, + 1, + 0.625, + 0.3035714328289032, + 1, + 1, + 0.625, + 0.3035714328289032, + 1, + 1, + 0.6607142686843872, + 0.3035714328289032, + 1, + 1, + 0.6607142686843872, + 0.3035714328289032, + 1, + 1, + 0.6964285969734192, + 0.3035714328289032, + 1, + 1, + 0.6964285969734192, + 0.3035714328289032, + 1, + 1, + 0.7321428656578064, + 0.3035714328289032, + 1, + 1, + 0.7321428656578064, + 0.3035714328289032, + 1, + 1, + 0.7678571343421936, + 0.3035714328289032, + 1, + 1, + 0.7678571343421936, + 0.3035714328289032, + 1, + 1, + 0.8035714030265808, + 0.3035714328289032, + 1, + 1, + 0.8035714030265808, + 0.3035714328289032, + 1, + 1, + 0.8392857313156128, + 0.3035714328289032, + 1, + 1, + 0.8392857313156128, + 0.3035714328289032, + 1, + 1, + 0.875, + 0.3035714328289032, + 1, + 1, + 0.875, + 0.3035714328289032, + 1, + 1, + 0.9107142686843872, + 0.3035714328289032, + 1, + 1, + 0.9107142686843872, + 0.3035714328289032, + 1, + 1, + 0.9464285969734192, + 0.3035714328289032, + 1, + 1, + 0.9464285969734192, + 0.3035714328289032, + 1, + 1, + 0.9821428656578064, + 0.3035714328289032, + 1, + 1, + 0.9821428656578064, + 0.3035714328289032, + 1, + 1, + 0.01785714365541935, + 0.3392857015132904, + 1, + 1, + 0.01785714365541935, + 0.3392857015132904, + 1, + 1, + 0.0535714291036129, + 0.3392857015132904, + 1, + 1, + 0.0535714291036129, + 0.3392857015132904, + 1, + 1, + 0.0892857164144516, + 0.3392857015132904, + 1, + 1, + 0.0892857164144516, + 0.3392857015132904, + 1, + 1, + 0.125, + 0.3392857015132904, + 1, + 1, + 0.125, + 0.3392857015132904, + 1, + 1, + 0.1607142835855484, + 0.3392857015132904, + 1, + 1, + 0.1607142835855484, + 0.3392857015132904, + 1, + 1, + 0.1964285671710968, + 0.3392857015132904, + 1, + 1, + 0.1964285671710968, + 0.3392857015132904, + 1, + 1, + 0.2321428507566452, + 0.3392857015132904, + 1, + 1, + 0.2321428507566452, + 0.3392857015132904, + 1, + 1, + 0.2678571343421936, + 0.3392857015132904, + 1, + 1, + 0.2678571343421936, + 0.3392857015132904, + 1, + 1, + 0.3035714328289032, + 0.3392857015132904, + 1, + 1, + 0.3035714328289032, + 0.3392857015132904, + 1, + 1, + 0.3392857015132904, + 0.3392857015132904, + 1, + 1, + 0.3392857015132904, + 0.3392857015132904, + 1, + 1, + 0.375, + 0.3392857015132904, + 1, + 1, + 0.375, + 0.3392857015132904, + 1, + 1, + 0.4107142984867096, + 0.3392857015132904, + 1, + 1, + 0.4107142984867096, + 0.3392857015132904, + 1, + 1, + 0.4464285671710968, + 0.3392857015132904, + 1, + 1, + 0.4464285671710968, + 0.3392857015132904, + 1, + 1, + 0.4821428656578064, + 0.3392857015132904, + 1, + 1, + 0.4821428656578064, + 0.3392857015132904, + 1, + 1, + 0.5178571343421936, + 0.3392857015132904, + 1, + 1, + 0.5178571343421936, + 0.3392857015132904, + 1, + 1, + 0.5535714030265808, + 0.3392857015132904, + 1, + 1, + 0.5535714030265808, + 0.3392857015132904, + 1, + 1, + 0.5892857313156128, + 0.3392857015132904, + 1, + 1, + 0.5892857313156128, + 0.3392857015132904, + 1, + 1, + 0.625, + 0.3392857015132904, + 1, + 1, + 0.625, + 0.3392857015132904, + 1, + 1, + 0.6607142686843872, + 0.3392857015132904, + 1, + 1, + 0.6607142686843872, + 0.3392857015132904, + 1, + 1, + 0.6964285969734192, + 0.3392857015132904, + 1, + 1, + 0.6964285969734192, + 0.3392857015132904, + 1, + 1, + 0.7321428656578064, + 0.3392857015132904, + 1, + 1, + 0.7321428656578064, + 0.3392857015132904, + 1, + 1, + 0.7678571343421936, + 0.3392857015132904, + 1, + 1, + 0.7678571343421936, + 0.3392857015132904, + 1, + 1, + 0.8035714030265808, + 0.3392857015132904, + 1, + 1, + 0.8035714030265808, + 0.3392857015132904, + 1, + 1, + 0.8392857313156128, + 0.3392857015132904, + 1, + 1, + 0.8392857313156128, + 0.3392857015132904, + 1, + 1, + 0.875, + 0.3392857015132904, + 1, + 1, + 0.875, + 0.3392857015132904, + 1, + 1, + 0.9107142686843872, + 0.3392857015132904, + 1, + 1, + 0.9107142686843872, + 0.3392857015132904, + 1, + 1, + 0.9464285969734192, + 0.3392857015132904, + 1, + 1, + 0.9464285969734192, + 0.3392857015132904, + 1, + 1, + 0.9821428656578064, + 0.3392857015132904, + 1, + 1, + 0.9821428656578064, + 0.3392857015132904, + 1, + 1, + 0.01785714365541935, + 0.375, + 1, + 1, + 0.01785714365541935, + 0.375, + 1, + 1, + 0.0535714291036129, + 0.375, + 1, + 1, + 0.0535714291036129, + 0.375, + 1, + 1, + 0.0892857164144516, + 0.375, + 1, + 1, + 0.0892857164144516, + 0.375, + 1, + 1, + 0.125, + 0.375, + 1, + 1, + 0.125, + 0.375, + 1, + 1, + 0.1607142835855484, + 0.375, + 1, + 1, + 0.1607142835855484, + 0.375, + 1, + 1, + 0.1964285671710968, + 0.375, + 1, + 1, + 0.1964285671710968, + 0.375, + 1, + 1, + 0.2321428507566452, + 0.375, + 1, + 1, + 0.2321428507566452, + 0.375, + 1, + 1, + 0.2678571343421936, + 0.375, + 1, + 1, + 0.2678571343421936, + 0.375, + 1, + 1, + 0.3035714328289032, + 0.375, + 1, + 1, + 0.3035714328289032, + 0.375, + 1, + 1, + 0.3392857015132904, + 0.375, + 1, + 1, + 0.3392857015132904, + 0.375, + 1, + 1, + 0.375, + 0.375, + 1, + 1, + 0.375, + 0.375, + 1, + 1, + 0.4107142984867096, + 0.375, + 1, + 1, + 0.4107142984867096, + 0.375, + 1, + 1, + 0.4464285671710968, + 0.375, + 1, + 1, + 0.4464285671710968, + 0.375, + 1, + 1, + 0.4821428656578064, + 0.375, + 1, + 1, + 0.4821428656578064, + 0.375, + 1, + 1, + 0.5178571343421936, + 0.375, + 1, + 1, + 0.5178571343421936, + 0.375, + 1, + 1, + 0.5535714030265808, + 0.375, + 1, + 1, + 0.5535714030265808, + 0.375, + 1, + 1, + 0.5892857313156128, + 0.375, + 1, + 1, + 0.5892857313156128, + 0.375, + 1, + 1, + 0.625, + 0.375, + 1, + 1, + 0.625, + 0.375, + 1, + 1, + 0.6607142686843872, + 0.375, + 1, + 1, + 0.6607142686843872, + 0.375, + 1, + 1, + 0.6964285969734192, + 0.375, + 1, + 1, + 0.6964285969734192, + 0.375, + 1, + 1, + 0.7321428656578064, + 0.375, + 1, + 1, + 0.7321428656578064, + 0.375, + 1, + 1, + 0.7678571343421936, + 0.375, + 1, + 1, + 0.7678571343421936, + 0.375, + 1, + 1, + 0.8035714030265808, + 0.375, + 1, + 1, + 0.8035714030265808, + 0.375, + 1, + 1, + 0.8392857313156128, + 0.375, + 1, + 1, + 0.8392857313156128, + 0.375, + 1, + 1, + 0.875, + 0.375, + 1, + 1, + 0.875, + 0.375, + 1, + 1, + 0.9107142686843872, + 0.375, + 1, + 1, + 0.9107142686843872, + 0.375, + 1, + 1, + 0.9464285969734192, + 0.375, + 1, + 1, + 0.9464285969734192, + 0.375, + 1, + 1, + 0.9821428656578064, + 0.375, + 1, + 1, + 0.9821428656578064, + 0.375, + 1, + 1, + 0.01785714365541935, + 0.4107142984867096, + 1, + 1, + 0.01785714365541935, + 0.4107142984867096, + 1, + 1, + 0.0535714291036129, + 0.4107142984867096, + 1, + 1, + 0.0535714291036129, + 0.4107142984867096, + 1, + 1, + 0.0892857164144516, + 0.4107142984867096, + 1, + 1, + 0.0892857164144516, + 0.4107142984867096, + 1, + 1, + 0.125, + 0.4107142984867096, + 1, + 1, + 0.125, + 0.4107142984867096, + 1, + 1, + 0.1607142835855484, + 0.4107142984867096, + 1, + 1, + 0.1607142835855484, + 0.4107142984867096, + 1, + 1, + 0.1964285671710968, + 0.4107142984867096, + 1, + 1, + 0.1964285671710968, + 0.4107142984867096, + 1, + 1, + 0.2321428507566452, + 0.4107142984867096, + 1, + 1, + 0.2321428507566452, + 0.4107142984867096, + 1, + 1, + 0.2678571343421936, + 0.4107142984867096, + 1, + 1, + 0.2678571343421936, + 0.4107142984867096, + 1, + 1, + 0.3035714328289032, + 0.4107142984867096, + 1, + 1, + 0.3035714328289032, + 0.4107142984867096, + 1, + 1, + 0.3392857015132904, + 0.4107142984867096, + 1, + 1, + 0.3392857015132904, + 0.4107142984867096, + 1, + 1, + 0.375, + 0.4107142984867096, + 1, + 1, + 0.375, + 0.4107142984867096, + 1, + 1, + 0.4107142984867096, + 0.4107142984867096, + 1, + 1, + 0.4107142984867096, + 0.4107142984867096, + 1, + 1, + 0.4464285671710968, + 0.4107142984867096, + 1, + 1, + 0.4464285671710968, + 0.4107142984867096, + 1, + 1, + 0.4821428656578064, + 0.4107142984867096, + 1, + 1, + 0.4821428656578064, + 0.4107142984867096, + 1, + 1, + 0.5178571343421936, + 0.4107142984867096, + 1, + 1, + 0.5178571343421936, + 0.4107142984867096, + 1, + 1, + 0.5535714030265808, + 0.4107142984867096, + 1, + 1, + 0.5535714030265808, + 0.4107142984867096, + 1, + 1, + 0.5892857313156128, + 0.4107142984867096, + 1, + 1, + 0.5892857313156128, + 0.4107142984867096, + 1, + 1, + 0.625, + 0.4107142984867096, + 1, + 1, + 0.625, + 0.4107142984867096, + 1, + 1, + 0.6607142686843872, + 0.4107142984867096, + 1, + 1, + 0.6607142686843872, + 0.4107142984867096, + 1, + 1, + 0.6964285969734192, + 0.4107142984867096, + 1, + 1, + 0.6964285969734192, + 0.4107142984867096, + 1, + 1, + 0.7321428656578064, + 0.4107142984867096, + 1, + 1, + 0.7321428656578064, + 0.4107142984867096, + 1, + 1, + 0.7678571343421936, + 0.4107142984867096, + 1, + 1, + 0.7678571343421936, + 0.4107142984867096, + 1, + 1, + 0.8035714030265808, + 0.4107142984867096, + 1, + 1, + 0.8035714030265808, + 0.4107142984867096, + 1, + 1, + 0.8392857313156128, + 0.4107142984867096, + 1, + 1, + 0.8392857313156128, + 0.4107142984867096, + 1, + 1, + 0.875, + 0.4107142984867096, + 1, + 1, + 0.875, + 0.4107142984867096, + 1, + 1, + 0.9107142686843872, + 0.4107142984867096, + 1, + 1, + 0.9107142686843872, + 0.4107142984867096, + 1, + 1, + 0.9464285969734192, + 0.4107142984867096, + 1, + 1, + 0.9464285969734192, + 0.4107142984867096, + 1, + 1, + 0.9821428656578064, + 0.4107142984867096, + 1, + 1, + 0.9821428656578064, + 0.4107142984867096, + 1, + 1, + 0.01785714365541935, + 0.4464285671710968, + 1, + 1, + 0.01785714365541935, + 0.4464285671710968, + 1, + 1, + 0.0535714291036129, + 0.4464285671710968, + 1, + 1, + 0.0535714291036129, + 0.4464285671710968, + 1, + 1, + 0.0892857164144516, + 0.4464285671710968, + 1, + 1, + 0.0892857164144516, + 0.4464285671710968, + 1, + 1, + 0.125, + 0.4464285671710968, + 1, + 1, + 0.125, + 0.4464285671710968, + 1, + 1, + 0.1607142835855484, + 0.4464285671710968, + 1, + 1, + 0.1607142835855484, + 0.4464285671710968, + 1, + 1, + 0.1964285671710968, + 0.4464285671710968, + 1, + 1, + 0.1964285671710968, + 0.4464285671710968, + 1, + 1, + 0.2321428507566452, + 0.4464285671710968, + 1, + 1, + 0.2321428507566452, + 0.4464285671710968, + 1, + 1, + 0.2678571343421936, + 0.4464285671710968, + 1, + 1, + 0.2678571343421936, + 0.4464285671710968, + 1, + 1, + 0.3035714328289032, + 0.4464285671710968, + 1, + 1, + 0.3035714328289032, + 0.4464285671710968, + 1, + 1, + 0.3392857015132904, + 0.4464285671710968, + 1, + 1, + 0.3392857015132904, + 0.4464285671710968, + 1, + 1, + 0.375, + 0.4464285671710968, + 1, + 1, + 0.375, + 0.4464285671710968, + 1, + 1, + 0.4107142984867096, + 0.4464285671710968, + 1, + 1, + 0.4107142984867096, + 0.4464285671710968, + 1, + 1, + 0.4464285671710968, + 0.4464285671710968, + 1, + 1, + 0.4464285671710968, + 0.4464285671710968, + 1, + 1, + 0.4821428656578064, + 0.4464285671710968, + 1, + 1, + 0.4821428656578064, + 0.4464285671710968, + 1, + 1, + 0.5178571343421936, + 0.4464285671710968, + 1, + 1, + 0.5178571343421936, + 0.4464285671710968, + 1, + 1, + 0.5535714030265808, + 0.4464285671710968, + 1, + 1, + 0.5535714030265808, + 0.4464285671710968, + 1, + 1, + 0.5892857313156128, + 0.4464285671710968, + 1, + 1, + 0.5892857313156128, + 0.4464285671710968, + 1, + 1, + 0.625, + 0.4464285671710968, + 1, + 1, + 0.625, + 0.4464285671710968, + 1, + 1, + 0.6607142686843872, + 0.4464285671710968, + 1, + 1, + 0.6607142686843872, + 0.4464285671710968, + 1, + 1, + 0.6964285969734192, + 0.4464285671710968, + 1, + 1, + 0.6964285969734192, + 0.4464285671710968, + 1, + 1, + 0.7321428656578064, + 0.4464285671710968, + 1, + 1, + 0.7321428656578064, + 0.4464285671710968, + 1, + 1, + 0.7678571343421936, + 0.4464285671710968, + 1, + 1, + 0.7678571343421936, + 0.4464285671710968, + 1, + 1, + 0.8035714030265808, + 0.4464285671710968, + 1, + 1, + 0.8035714030265808, + 0.4464285671710968, + 1, + 1, + 0.8392857313156128, + 0.4464285671710968, + 1, + 1, + 0.8392857313156128, + 0.4464285671710968, + 1, + 1, + 0.875, + 0.4464285671710968, + 1, + 1, + 0.875, + 0.4464285671710968, + 1, + 1, + 0.9107142686843872, + 0.4464285671710968, + 1, + 1, + 0.9107142686843872, + 0.4464285671710968, + 1, + 1, + 0.9464285969734192, + 0.4464285671710968, + 1, + 1, + 0.9464285969734192, + 0.4464285671710968, + 1, + 1, + 0.9821428656578064, + 0.4464285671710968, + 1, + 1, + 0.9821428656578064, + 0.4464285671710968, + 1, + 1, + 0.01785714365541935, + 0.4821428656578064, + 1, + 1, + 0.01785714365541935, + 0.4821428656578064, + 1, + 1, + 0.0535714291036129, + 0.4821428656578064, + 1, + 1, + 0.0535714291036129, + 0.4821428656578064, + 1, + 1, + 0.0892857164144516, + 0.4821428656578064, + 1, + 1, + 0.0892857164144516, + 0.4821428656578064, + 1, + 1, + 0.125, + 0.4821428656578064, + 1, + 1, + 0.125, + 0.4821428656578064, + 1, + 1, + 0.1607142835855484, + 0.4821428656578064, + 1, + 1, + 0.1607142835855484, + 0.4821428656578064, + 1, + 1, + 0.1964285671710968, + 0.4821428656578064, + 1, + 1, + 0.1964285671710968, + 0.4821428656578064, + 1, + 1, + 0.2321428507566452, + 0.4821428656578064, + 1, + 1, + 0.2321428507566452, + 0.4821428656578064, + 1, + 1, + 0.2678571343421936, + 0.4821428656578064, + 1, + 1, + 0.2678571343421936, + 0.4821428656578064, + 1, + 1, + 0.3035714328289032, + 0.4821428656578064, + 1, + 1, + 0.3035714328289032, + 0.4821428656578064, + 1, + 1, + 0.3392857015132904, + 0.4821428656578064, + 1, + 1, + 0.3392857015132904, + 0.4821428656578064, + 1, + 1, + 0.375, + 0.4821428656578064, + 1, + 1, + 0.375, + 0.4821428656578064, + 1, + 1, + 0.4107142984867096, + 0.4821428656578064, + 1, + 1, + 0.4107142984867096, + 0.4821428656578064, + 1, + 1, + 0.4464285671710968, + 0.4821428656578064, + 1, + 1, + 0.4464285671710968, + 0.4821428656578064, + 1, + 1, + 0.4821428656578064, + 0.4821428656578064, + 1, + 1, + 0.4821428656578064, + 0.4821428656578064, + 1, + 1, + 0.5178571343421936, + 0.4821428656578064, + 1, + 1, + 0.5178571343421936, + 0.4821428656578064, + 1, + 1, + 0.5535714030265808, + 0.4821428656578064, + 1, + 1, + 0.5535714030265808, + 0.4821428656578064, + 1, + 1, + 0.5892857313156128, + 0.4821428656578064, + 1, + 1, + 0.5892857313156128, + 0.4821428656578064, + 1, + 1, + 0.625, + 0.4821428656578064, + 1, + 1, + 0.625, + 0.4821428656578064, + 1, + 1, + 0.6607142686843872, + 0.4821428656578064, + 1, + 1, + 0.6607142686843872, + 0.4821428656578064, + 1, + 1, + 0.6964285969734192, + 0.4821428656578064, + 1, + 1, + 0.6964285969734192, + 0.4821428656578064, + 1, + 1, + 0.7321428656578064, + 0.4821428656578064, + 1, + 1, + 0.7321428656578064, + 0.4821428656578064, + 1, + 1, + 0.7678571343421936, + 0.4821428656578064, + 1, + 1, + 0.7678571343421936, + 0.4821428656578064, + 1, + 1, + 0.8035714030265808, + 0.4821428656578064, + 1, + 1, + 0.8035714030265808, + 0.4821428656578064, + 1, + 1, + 0.8392857313156128, + 0.4821428656578064, + 1, + 1, + 0.8392857313156128, + 0.4821428656578064, + 1, + 1, + 0.875, + 0.4821428656578064, + 1, + 1, + 0.875, + 0.4821428656578064, + 1, + 1, + 0.9107142686843872, + 0.4821428656578064, + 1, + 1, + 0.9107142686843872, + 0.4821428656578064, + 1, + 1, + 0.9464285969734192, + 0.4821428656578064, + 1, + 1, + 0.9464285969734192, + 0.4821428656578064, + 1, + 1, + 0.9821428656578064, + 0.4821428656578064, + 1, + 1, + 0.9821428656578064, + 0.4821428656578064, + 1, + 1, + 0.01785714365541935, + 0.5178571343421936, + 1, + 1, + 0.01785714365541935, + 0.5178571343421936, + 1, + 1, + 0.0535714291036129, + 0.5178571343421936, + 1, + 1, + 0.0535714291036129, + 0.5178571343421936, + 1, + 1, + 0.0892857164144516, + 0.5178571343421936, + 1, + 1, + 0.0892857164144516, + 0.5178571343421936, + 1, + 1, + 0.125, + 0.5178571343421936, + 1, + 1, + 0.125, + 0.5178571343421936, + 1, + 1, + 0.1607142835855484, + 0.5178571343421936, + 1, + 1, + 0.1607142835855484, + 0.5178571343421936, + 1, + 1, + 0.1964285671710968, + 0.5178571343421936, + 1, + 1, + 0.1964285671710968, + 0.5178571343421936, + 1, + 1, + 0.2321428507566452, + 0.5178571343421936, + 1, + 1, + 0.2321428507566452, + 0.5178571343421936, + 1, + 1, + 0.2678571343421936, + 0.5178571343421936, + 1, + 1, + 0.2678571343421936, + 0.5178571343421936, + 1, + 1, + 0.3035714328289032, + 0.5178571343421936, + 1, + 1, + 0.3035714328289032, + 0.5178571343421936, + 1, + 1, + 0.3392857015132904, + 0.5178571343421936, + 1, + 1, + 0.3392857015132904, + 0.5178571343421936, + 1, + 1, + 0.375, + 0.5178571343421936, + 1, + 1, + 0.375, + 0.5178571343421936, + 1, + 1, + 0.4107142984867096, + 0.5178571343421936, + 1, + 1, + 0.4107142984867096, + 0.5178571343421936, + 1, + 1, + 0.4464285671710968, + 0.5178571343421936, + 1, + 1, + 0.4464285671710968, + 0.5178571343421936, + 1, + 1, + 0.4821428656578064, + 0.5178571343421936, + 1, + 1, + 0.4821428656578064, + 0.5178571343421936, + 1, + 1, + 0.5178571343421936, + 0.5178571343421936, + 1, + 1, + 0.5178571343421936, + 0.5178571343421936, + 1, + 1, + 0.5535714030265808, + 0.5178571343421936, + 1, + 1, + 0.5535714030265808, + 0.5178571343421936, + 1, + 1, + 0.5892857313156128, + 0.5178571343421936, + 1, + 1, + 0.5892857313156128, + 0.5178571343421936, + 1, + 1, + 0.625, + 0.5178571343421936, + 1, + 1, + 0.625, + 0.5178571343421936, + 1, + 1, + 0.6607142686843872, + 0.5178571343421936, + 1, + 1, + 0.6607142686843872, + 0.5178571343421936, + 1, + 1, + 0.6964285969734192, + 0.5178571343421936, + 1, + 1, + 0.6964285969734192, + 0.5178571343421936, + 1, + 1, + 0.7321428656578064, + 0.5178571343421936, + 1, + 1, + 0.7321428656578064, + 0.5178571343421936, + 1, + 1, + 0.7678571343421936, + 0.5178571343421936, + 1, + 1, + 0.7678571343421936, + 0.5178571343421936, + 1, + 1, + 0.8035714030265808, + 0.5178571343421936, + 1, + 1, + 0.8035714030265808, + 0.5178571343421936, + 1, + 1, + 0.8392857313156128, + 0.5178571343421936, + 1, + 1, + 0.8392857313156128, + 0.5178571343421936, + 1, + 1, + 0.875, + 0.5178571343421936, + 1, + 1, + 0.875, + 0.5178571343421936, + 1, + 1, + 0.9107142686843872, + 0.5178571343421936, + 1, + 1, + 0.9107142686843872, + 0.5178571343421936, + 1, + 1, + 0.9464285969734192, + 0.5178571343421936, + 1, + 1, + 0.9464285969734192, + 0.5178571343421936, + 1, + 1, + 0.9821428656578064, + 0.5178571343421936, + 1, + 1, + 0.9821428656578064, + 0.5178571343421936, + 1, + 1, + 0.01785714365541935, + 0.5535714030265808, + 1, + 1, + 0.01785714365541935, + 0.5535714030265808, + 1, + 1, + 0.0535714291036129, + 0.5535714030265808, + 1, + 1, + 0.0535714291036129, + 0.5535714030265808, + 1, + 1, + 0.0892857164144516, + 0.5535714030265808, + 1, + 1, + 0.0892857164144516, + 0.5535714030265808, + 1, + 1, + 0.125, + 0.5535714030265808, + 1, + 1, + 0.125, + 0.5535714030265808, + 1, + 1, + 0.1607142835855484, + 0.5535714030265808, + 1, + 1, + 0.1607142835855484, + 0.5535714030265808, + 1, + 1, + 0.1964285671710968, + 0.5535714030265808, + 1, + 1, + 0.1964285671710968, + 0.5535714030265808, + 1, + 1, + 0.2321428507566452, + 0.5535714030265808, + 1, + 1, + 0.2321428507566452, + 0.5535714030265808, + 1, + 1, + 0.2678571343421936, + 0.5535714030265808, + 1, + 1, + 0.2678571343421936, + 0.5535714030265808, + 1, + 1, + 0.3035714328289032, + 0.5535714030265808, + 1, + 1, + 0.3035714328289032, + 0.5535714030265808, + 1, + 1, + 0.3392857015132904, + 0.5535714030265808, + 1, + 1, + 0.3392857015132904, + 0.5535714030265808, + 1, + 1, + 0.375, + 0.5535714030265808, + 1, + 1, + 0.375, + 0.5535714030265808, + 1, + 1, + 0.4107142984867096, + 0.5535714030265808, + 1, + 1, + 0.4107142984867096, + 0.5535714030265808, + 1, + 1, + 0.4464285671710968, + 0.5535714030265808, + 1, + 1, + 0.4464285671710968, + 0.5535714030265808, + 1, + 1, + 0.4821428656578064, + 0.5535714030265808, + 1, + 1, + 0.4821428656578064, + 0.5535714030265808, + 1, + 1, + 0.5178571343421936, + 0.5535714030265808, + 1, + 1, + 0.5178571343421936, + 0.5535714030265808, + 1, + 1, + 0.5535714030265808, + 0.5535714030265808, + 1, + 1, + 0.5535714030265808, + 0.5535714030265808, + 1, + 1, + 0.5892857313156128, + 0.5535714030265808, + 1, + 1, + 0.5892857313156128, + 0.5535714030265808, + 1, + 1, + 0.625, + 0.5535714030265808, + 1, + 1, + 0.625, + 0.5535714030265808, + 1, + 1, + 0.6607142686843872, + 0.5535714030265808, + 1, + 1, + 0.6607142686843872, + 0.5535714030265808, + 1, + 1, + 0.6964285969734192, + 0.5535714030265808, + 1, + 1, + 0.6964285969734192, + 0.5535714030265808, + 1, + 1, + 0.7321428656578064, + 0.5535714030265808, + 1, + 1, + 0.7321428656578064, + 0.5535714030265808, + 1, + 1, + 0.7678571343421936, + 0.5535714030265808, + 1, + 1, + 0.7678571343421936, + 0.5535714030265808, + 1, + 1, + 0.8035714030265808, + 0.5535714030265808, + 1, + 1, + 0.8035714030265808, + 0.5535714030265808, + 1, + 1, + 0.8392857313156128, + 0.5535714030265808, + 1, + 1, + 0.8392857313156128, + 0.5535714030265808, + 1, + 1, + 0.875, + 0.5535714030265808, + 1, + 1, + 0.875, + 0.5535714030265808, + 1, + 1, + 0.9107142686843872, + 0.5535714030265808, + 1, + 1, + 0.9107142686843872, + 0.5535714030265808, + 1, + 1, + 0.9464285969734192, + 0.5535714030265808, + 1, + 1, + 0.9464285969734192, + 0.5535714030265808, + 1, + 1, + 0.9821428656578064, + 0.5535714030265808, + 1, + 1, + 0.9821428656578064, + 0.5535714030265808, + 1, + 1, + 0.01785714365541935, + 0.5892857313156128, + 1, + 1, + 0.01785714365541935, + 0.5892857313156128, + 1, + 1, + 0.0535714291036129, + 0.5892857313156128, + 1, + 1, + 0.0535714291036129, + 0.5892857313156128, + 1, + 1, + 0.0892857164144516, + 0.5892857313156128, + 1, + 1, + 0.0892857164144516, + 0.5892857313156128, + 1, + 1, + 0.125, + 0.5892857313156128, + 1, + 1, + 0.125, + 0.5892857313156128, + 1, + 1, + 0.1607142835855484, + 0.5892857313156128, + 1, + 1, + 0.1607142835855484, + 0.5892857313156128, + 1, + 1, + 0.1964285671710968, + 0.5892857313156128, + 1, + 1, + 0.1964285671710968, + 0.5892857313156128, + 1, + 1, + 0.2321428507566452, + 0.5892857313156128, + 1, + 1, + 0.2321428507566452, + 0.5892857313156128, + 1, + 1, + 0.2678571343421936, + 0.5892857313156128, + 1, + 1, + 0.2678571343421936, + 0.5892857313156128, + 1, + 1, + 0.3035714328289032, + 0.5892857313156128, + 1, + 1, + 0.3035714328289032, + 0.5892857313156128, + 1, + 1, + 0.3392857015132904, + 0.5892857313156128, + 1, + 1, + 0.3392857015132904, + 0.5892857313156128, + 1, + 1, + 0.375, + 0.5892857313156128, + 1, + 1, + 0.375, + 0.5892857313156128, + 1, + 1, + 0.4107142984867096, + 0.5892857313156128, + 1, + 1, + 0.4107142984867096, + 0.5892857313156128, + 1, + 1, + 0.4464285671710968, + 0.5892857313156128, + 1, + 1, + 0.4464285671710968, + 0.5892857313156128, + 1, + 1, + 0.4821428656578064, + 0.5892857313156128, + 1, + 1, + 0.4821428656578064, + 0.5892857313156128, + 1, + 1, + 0.5178571343421936, + 0.5892857313156128, + 1, + 1, + 0.5178571343421936, + 0.5892857313156128, + 1, + 1, + 0.5535714030265808, + 0.5892857313156128, + 1, + 1, + 0.5535714030265808, + 0.5892857313156128, + 1, + 1, + 0.5892857313156128, + 0.5892857313156128, + 1, + 1, + 0.5892857313156128, + 0.5892857313156128, + 1, + 1, + 0.625, + 0.5892857313156128, + 1, + 1, + 0.625, + 0.5892857313156128, + 1, + 1, + 0.6607142686843872, + 0.5892857313156128, + 1, + 1, + 0.6607142686843872, + 0.5892857313156128, + 1, + 1, + 0.6964285969734192, + 0.5892857313156128, + 1, + 1, + 0.6964285969734192, + 0.5892857313156128, + 1, + 1, + 0.7321428656578064, + 0.5892857313156128, + 1, + 1, + 0.7321428656578064, + 0.5892857313156128, + 1, + 1, + 0.7678571343421936, + 0.5892857313156128, + 1, + 1, + 0.7678571343421936, + 0.5892857313156128, + 1, + 1, + 0.8035714030265808, + 0.5892857313156128, + 1, + 1, + 0.8035714030265808, + 0.5892857313156128, + 1, + 1, + 0.8392857313156128, + 0.5892857313156128, + 1, + 1, + 0.8392857313156128, + 0.5892857313156128, + 1, + 1, + 0.875, + 0.5892857313156128, + 1, + 1, + 0.875, + 0.5892857313156128, + 1, + 1, + 0.9107142686843872, + 0.5892857313156128, + 1, + 1, + 0.9107142686843872, + 0.5892857313156128, + 1, + 1, + 0.9464285969734192, + 0.5892857313156128, + 1, + 1, + 0.9464285969734192, + 0.5892857313156128, + 1, + 1, + 0.9821428656578064, + 0.5892857313156128, + 1, + 1, + 0.9821428656578064, + 0.5892857313156128, + 1, + 1, + 0.01785714365541935, + 0.625, + 1, + 1, + 0.01785714365541935, + 0.625, + 1, + 1, + 0.0535714291036129, + 0.625, + 1, + 1, + 0.0535714291036129, + 0.625, + 1, + 1, + 0.0892857164144516, + 0.625, + 1, + 1, + 0.0892857164144516, + 0.625, + 1, + 1, + 0.125, + 0.625, + 1, + 1, + 0.125, + 0.625, + 1, + 1, + 0.1607142835855484, + 0.625, + 1, + 1, + 0.1607142835855484, + 0.625, + 1, + 1, + 0.1964285671710968, + 0.625, + 1, + 1, + 0.1964285671710968, + 0.625, + 1, + 1, + 0.2321428507566452, + 0.625, + 1, + 1, + 0.2321428507566452, + 0.625, + 1, + 1, + 0.2678571343421936, + 0.625, + 1, + 1, + 0.2678571343421936, + 0.625, + 1, + 1, + 0.3035714328289032, + 0.625, + 1, + 1, + 0.3035714328289032, + 0.625, + 1, + 1, + 0.3392857015132904, + 0.625, + 1, + 1, + 0.3392857015132904, + 0.625, + 1, + 1, + 0.375, + 0.625, + 1, + 1, + 0.375, + 0.625, + 1, + 1, + 0.4107142984867096, + 0.625, + 1, + 1, + 0.4107142984867096, + 0.625, + 1, + 1, + 0.4464285671710968, + 0.625, + 1, + 1, + 0.4464285671710968, + 0.625, + 1, + 1, + 0.4821428656578064, + 0.625, + 1, + 1, + 0.4821428656578064, + 0.625, + 1, + 1, + 0.5178571343421936, + 0.625, + 1, + 1, + 0.5178571343421936, + 0.625, + 1, + 1, + 0.5535714030265808, + 0.625, + 1, + 1, + 0.5535714030265808, + 0.625, + 1, + 1, + 0.5892857313156128, + 0.625, + 1, + 1, + 0.5892857313156128, + 0.625, + 1, + 1, + 0.625, + 0.625, + 1, + 1, + 0.625, + 0.625, + 1, + 1, + 0.6607142686843872, + 0.625, + 1, + 1, + 0.6607142686843872, + 0.625, + 1, + 1, + 0.6964285969734192, + 0.625, + 1, + 1, + 0.6964285969734192, + 0.625, + 1, + 1, + 0.7321428656578064, + 0.625, + 1, + 1, + 0.7321428656578064, + 0.625, + 1, + 1, + 0.7678571343421936, + 0.625, + 1, + 1, + 0.7678571343421936, + 0.625, + 1, + 1, + 0.8035714030265808, + 0.625, + 1, + 1, + 0.8035714030265808, + 0.625, + 1, + 1, + 0.8392857313156128, + 0.625, + 1, + 1, + 0.8392857313156128, + 0.625, + 1, + 1, + 0.875, + 0.625, + 1, + 1, + 0.875, + 0.625, + 1, + 1, + 0.9107142686843872, + 0.625, + 1, + 1, + 0.9107142686843872, + 0.625, + 1, + 1, + 0.9464285969734192, + 0.625, + 1, + 1, + 0.9464285969734192, + 0.625, + 1, + 1, + 0.9821428656578064, + 0.625, + 1, + 1, + 0.9821428656578064, + 0.625, + 1, + 1, + 0.01785714365541935, + 0.6607142686843872, + 1, + 1, + 0.01785714365541935, + 0.6607142686843872, + 1, + 1, + 0.0535714291036129, + 0.6607142686843872, + 1, + 1, + 0.0535714291036129, + 0.6607142686843872, + 1, + 1, + 0.0892857164144516, + 0.6607142686843872, + 1, + 1, + 0.0892857164144516, + 0.6607142686843872, + 1, + 1, + 0.125, + 0.6607142686843872, + 1, + 1, + 0.125, + 0.6607142686843872, + 1, + 1, + 0.1607142835855484, + 0.6607142686843872, + 1, + 1, + 0.1607142835855484, + 0.6607142686843872, + 1, + 1, + 0.1964285671710968, + 0.6607142686843872, + 1, + 1, + 0.1964285671710968, + 0.6607142686843872, + 1, + 1, + 0.2321428507566452, + 0.6607142686843872, + 1, + 1, + 0.2321428507566452, + 0.6607142686843872, + 1, + 1, + 0.2678571343421936, + 0.6607142686843872, + 1, + 1, + 0.2678571343421936, + 0.6607142686843872, + 1, + 1, + 0.3035714328289032, + 0.6607142686843872, + 1, + 1, + 0.3035714328289032, + 0.6607142686843872, + 1, + 1, + 0.3392857015132904, + 0.6607142686843872, + 1, + 1, + 0.3392857015132904, + 0.6607142686843872, + 1, + 1, + 0.375, + 0.6607142686843872, + 1, + 1, + 0.375, + 0.6607142686843872, + 1, + 1, + 0.4107142984867096, + 0.6607142686843872, + 1, + 1, + 0.4107142984867096, + 0.6607142686843872, + 1, + 1, + 0.4464285671710968, + 0.6607142686843872, + 1, + 1, + 0.4464285671710968, + 0.6607142686843872, + 1, + 1, + 0.4821428656578064, + 0.6607142686843872, + 1, + 1, + 0.4821428656578064, + 0.6607142686843872, + 1, + 1, + 0.5178571343421936, + 0.6607142686843872, + 1, + 1, + 0.5178571343421936, + 0.6607142686843872, + 1, + 1, + 0.5535714030265808, + 0.6607142686843872, + 1, + 1, + 0.5535714030265808, + 0.6607142686843872, + 1, + 1, + 0.5892857313156128, + 0.6607142686843872, + 1, + 1, + 0.5892857313156128, + 0.6607142686843872, + 1, + 1, + 0.625, + 0.6607142686843872, + 1, + 1, + 0.625, + 0.6607142686843872, + 1, + 1, + 0.6607142686843872, + 0.6607142686843872, + 1, + 1, + 0.6607142686843872, + 0.6607142686843872, + 1, + 1, + 0.6964285969734192, + 0.6607142686843872, + 1, + 1, + 0.6964285969734192, + 0.6607142686843872, + 1, + 1, + 0.7321428656578064, + 0.6607142686843872, + 1, + 1, + 0.7321428656578064, + 0.6607142686843872, + 1, + 1, + 0.7678571343421936, + 0.6607142686843872, + 1, + 1, + 0.7678571343421936, + 0.6607142686843872, + 1, + 1, + 0.8035714030265808, + 0.6607142686843872, + 1, + 1, + 0.8035714030265808, + 0.6607142686843872, + 1, + 1, + 0.8392857313156128, + 0.6607142686843872, + 1, + 1, + 0.8392857313156128, + 0.6607142686843872, + 1, + 1, + 0.875, + 0.6607142686843872, + 1, + 1, + 0.875, + 0.6607142686843872, + 1, + 1, + 0.9107142686843872, + 0.6607142686843872, + 1, + 1, + 0.9107142686843872, + 0.6607142686843872, + 1, + 1, + 0.9464285969734192, + 0.6607142686843872, + 1, + 1, + 0.9464285969734192, + 0.6607142686843872, + 1, + 1, + 0.9821428656578064, + 0.6607142686843872, + 1, + 1, + 0.9821428656578064, + 0.6607142686843872, + 1, + 1, + 0.01785714365541935, + 0.6964285969734192, + 1, + 1, + 0.01785714365541935, + 0.6964285969734192, + 1, + 1, + 0.0535714291036129, + 0.6964285969734192, + 1, + 1, + 0.0535714291036129, + 0.6964285969734192, + 1, + 1, + 0.0892857164144516, + 0.6964285969734192, + 1, + 1, + 0.0892857164144516, + 0.6964285969734192, + 1, + 1, + 0.125, + 0.6964285969734192, + 1, + 1, + 0.125, + 0.6964285969734192, + 1, + 1, + 0.1607142835855484, + 0.6964285969734192, + 1, + 1, + 0.1607142835855484, + 0.6964285969734192, + 1, + 1, + 0.1964285671710968, + 0.6964285969734192, + 1, + 1, + 0.1964285671710968, + 0.6964285969734192, + 1, + 1, + 0.2321428507566452, + 0.6964285969734192, + 1, + 1, + 0.2321428507566452, + 0.6964285969734192, + 1, + 1, + 0.2678571343421936, + 0.6964285969734192, + 1, + 1, + 0.2678571343421936, + 0.6964285969734192, + 1, + 1, + 0.3035714328289032, + 0.6964285969734192, + 1, + 1, + 0.3035714328289032, + 0.6964285969734192, + 1, + 1, + 0.3392857015132904, + 0.6964285969734192, + 1, + 1, + 0.3392857015132904, + 0.6964285969734192, + 1, + 1, + 0.375, + 0.6964285969734192, + 1, + 1, + 0.375, + 0.6964285969734192, + 1, + 1, + 0.4107142984867096, + 0.6964285969734192, + 1, + 1, + 0.4107142984867096, + 0.6964285969734192, + 1, + 1, + 0.4464285671710968, + 0.6964285969734192, + 1, + 1, + 0.4464285671710968, + 0.6964285969734192, + 1, + 1, + 0.4821428656578064, + 0.6964285969734192, + 1, + 1, + 0.4821428656578064, + 0.6964285969734192, + 1, + 1, + 0.5178571343421936, + 0.6964285969734192, + 1, + 1, + 0.5178571343421936, + 0.6964285969734192, + 1, + 1, + 0.5535714030265808, + 0.6964285969734192, + 1, + 1, + 0.5535714030265808, + 0.6964285969734192, + 1, + 1, + 0.5892857313156128, + 0.6964285969734192, + 1, + 1, + 0.5892857313156128, + 0.6964285969734192, + 1, + 1, + 0.625, + 0.6964285969734192, + 1, + 1, + 0.625, + 0.6964285969734192, + 1, + 1, + 0.6607142686843872, + 0.6964285969734192, + 1, + 1, + 0.6607142686843872, + 0.6964285969734192, + 1, + 1, + 0.6964285969734192, + 0.6964285969734192, + 1, + 1, + 0.6964285969734192, + 0.6964285969734192, + 1, + 1, + 0.7321428656578064, + 0.6964285969734192, + 1, + 1, + 0.7321428656578064, + 0.6964285969734192, + 1, + 1, + 0.7678571343421936, + 0.6964285969734192, + 1, + 1, + 0.7678571343421936, + 0.6964285969734192, + 1, + 1, + 0.8035714030265808, + 0.6964285969734192, + 1, + 1, + 0.8035714030265808, + 0.6964285969734192, + 1, + 1, + 0.8392857313156128, + 0.6964285969734192, + 1, + 1, + 0.8392857313156128, + 0.6964285969734192, + 1, + 1, + 0.875, + 0.6964285969734192, + 1, + 1, + 0.875, + 0.6964285969734192, + 1, + 1, + 0.9107142686843872, + 0.6964285969734192, + 1, + 1, + 0.9107142686843872, + 0.6964285969734192, + 1, + 1, + 0.9464285969734192, + 0.6964285969734192, + 1, + 1, + 0.9464285969734192, + 0.6964285969734192, + 1, + 1, + 0.9821428656578064, + 0.6964285969734192, + 1, + 1, + 0.9821428656578064, + 0.6964285969734192, + 1, + 1, + 0.01785714365541935, + 0.7321428656578064, + 1, + 1, + 0.01785714365541935, + 0.7321428656578064, + 1, + 1, + 0.0535714291036129, + 0.7321428656578064, + 1, + 1, + 0.0535714291036129, + 0.7321428656578064, + 1, + 1, + 0.0892857164144516, + 0.7321428656578064, + 1, + 1, + 0.0892857164144516, + 0.7321428656578064, + 1, + 1, + 0.125, + 0.7321428656578064, + 1, + 1, + 0.125, + 0.7321428656578064, + 1, + 1, + 0.1607142835855484, + 0.7321428656578064, + 1, + 1, + 0.1607142835855484, + 0.7321428656578064, + 1, + 1, + 0.1964285671710968, + 0.7321428656578064, + 1, + 1, + 0.1964285671710968, + 0.7321428656578064, + 1, + 1, + 0.2321428507566452, + 0.7321428656578064, + 1, + 1, + 0.2321428507566452, + 0.7321428656578064, + 1, + 1, + 0.2678571343421936, + 0.7321428656578064, + 1, + 1, + 0.2678571343421936, + 0.7321428656578064, + 1, + 1, + 0.3035714328289032, + 0.7321428656578064, + 1, + 1, + 0.3035714328289032, + 0.7321428656578064, + 1, + 1, + 0.3392857015132904, + 0.7321428656578064, + 1, + 1, + 0.3392857015132904, + 0.7321428656578064, + 1, + 1, + 0.375, + 0.7321428656578064, + 1, + 1, + 0.375, + 0.7321428656578064, + 1, + 1, + 0.4107142984867096, + 0.7321428656578064, + 1, + 1, + 0.4107142984867096, + 0.7321428656578064, + 1, + 1, + 0.4464285671710968, + 0.7321428656578064, + 1, + 1, + 0.4464285671710968, + 0.7321428656578064, + 1, + 1, + 0.4821428656578064, + 0.7321428656578064, + 1, + 1, + 0.4821428656578064, + 0.7321428656578064, + 1, + 1, + 0.5178571343421936, + 0.7321428656578064, + 1, + 1, + 0.5178571343421936, + 0.7321428656578064, + 1, + 1, + 0.5535714030265808, + 0.7321428656578064, + 1, + 1, + 0.5535714030265808, + 0.7321428656578064, + 1, + 1, + 0.5892857313156128, + 0.7321428656578064, + 1, + 1, + 0.5892857313156128, + 0.7321428656578064, + 1, + 1, + 0.625, + 0.7321428656578064, + 1, + 1, + 0.625, + 0.7321428656578064, + 1, + 1, + 0.6607142686843872, + 0.7321428656578064, + 1, + 1, + 0.6607142686843872, + 0.7321428656578064, + 1, + 1, + 0.6964285969734192, + 0.7321428656578064, + 1, + 1, + 0.6964285969734192, + 0.7321428656578064, + 1, + 1, + 0.7321428656578064, + 0.7321428656578064, + 1, + 1, + 0.7321428656578064, + 0.7321428656578064, + 1, + 1, + 0.7678571343421936, + 0.7321428656578064, + 1, + 1, + 0.7678571343421936, + 0.7321428656578064, + 1, + 1, + 0.8035714030265808, + 0.7321428656578064, + 1, + 1, + 0.8035714030265808, + 0.7321428656578064, + 1, + 1, + 0.8392857313156128, + 0.7321428656578064, + 1, + 1, + 0.8392857313156128, + 0.7321428656578064, + 1, + 1, + 0.875, + 0.7321428656578064, + 1, + 1, + 0.875, + 0.7321428656578064, + 1, + 1, + 0.9107142686843872, + 0.7321428656578064, + 1, + 1, + 0.9107142686843872, + 0.7321428656578064, + 1, + 1, + 0.9464285969734192, + 0.7321428656578064, + 1, + 1, + 0.9464285969734192, + 0.7321428656578064, + 1, + 1, + 0.9821428656578064, + 0.7321428656578064, + 1, + 1, + 0.9821428656578064, + 0.7321428656578064, + 1, + 1, + 0.01785714365541935, + 0.7678571343421936, + 1, + 1, + 0.01785714365541935, + 0.7678571343421936, + 1, + 1, + 0.0535714291036129, + 0.7678571343421936, + 1, + 1, + 0.0535714291036129, + 0.7678571343421936, + 1, + 1, + 0.0892857164144516, + 0.7678571343421936, + 1, + 1, + 0.0892857164144516, + 0.7678571343421936, + 1, + 1, + 0.125, + 0.7678571343421936, + 1, + 1, + 0.125, + 0.7678571343421936, + 1, + 1, + 0.1607142835855484, + 0.7678571343421936, + 1, + 1, + 0.1607142835855484, + 0.7678571343421936, + 1, + 1, + 0.1964285671710968, + 0.7678571343421936, + 1, + 1, + 0.1964285671710968, + 0.7678571343421936, + 1, + 1, + 0.2321428507566452, + 0.7678571343421936, + 1, + 1, + 0.2321428507566452, + 0.7678571343421936, + 1, + 1, + 0.2678571343421936, + 0.7678571343421936, + 1, + 1, + 0.2678571343421936, + 0.7678571343421936, + 1, + 1, + 0.3035714328289032, + 0.7678571343421936, + 1, + 1, + 0.3035714328289032, + 0.7678571343421936, + 1, + 1, + 0.3392857015132904, + 0.7678571343421936, + 1, + 1, + 0.3392857015132904, + 0.7678571343421936, + 1, + 1, + 0.375, + 0.7678571343421936, + 1, + 1, + 0.375, + 0.7678571343421936, + 1, + 1, + 0.4107142984867096, + 0.7678571343421936, + 1, + 1, + 0.4107142984867096, + 0.7678571343421936, + 1, + 1, + 0.4464285671710968, + 0.7678571343421936, + 1, + 1, + 0.4464285671710968, + 0.7678571343421936, + 1, + 1, + 0.4821428656578064, + 0.7678571343421936, + 1, + 1, + 0.4821428656578064, + 0.7678571343421936, + 1, + 1, + 0.5178571343421936, + 0.7678571343421936, + 1, + 1, + 0.5178571343421936, + 0.7678571343421936, + 1, + 1, + 0.5535714030265808, + 0.7678571343421936, + 1, + 1, + 0.5535714030265808, + 0.7678571343421936, + 1, + 1, + 0.5892857313156128, + 0.7678571343421936, + 1, + 1, + 0.5892857313156128, + 0.7678571343421936, + 1, + 1, + 0.625, + 0.7678571343421936, + 1, + 1, + 0.625, + 0.7678571343421936, + 1, + 1, + 0.6607142686843872, + 0.7678571343421936, + 1, + 1, + 0.6607142686843872, + 0.7678571343421936, + 1, + 1, + 0.6964285969734192, + 0.7678571343421936, + 1, + 1, + 0.6964285969734192, + 0.7678571343421936, + 1, + 1, + 0.7321428656578064, + 0.7678571343421936, + 1, + 1, + 0.7321428656578064, + 0.7678571343421936, + 1, + 1, + 0.7678571343421936, + 0.7678571343421936, + 1, + 1, + 0.7678571343421936, + 0.7678571343421936, + 1, + 1, + 0.8035714030265808, + 0.7678571343421936, + 1, + 1, + 0.8035714030265808, + 0.7678571343421936, + 1, + 1, + 0.8392857313156128, + 0.7678571343421936, + 1, + 1, + 0.8392857313156128, + 0.7678571343421936, + 1, + 1, + 0.875, + 0.7678571343421936, + 1, + 1, + 0.875, + 0.7678571343421936, + 1, + 1, + 0.9107142686843872, + 0.7678571343421936, + 1, + 1, + 0.9107142686843872, + 0.7678571343421936, + 1, + 1, + 0.9464285969734192, + 0.7678571343421936, + 1, + 1, + 0.9464285969734192, + 0.7678571343421936, + 1, + 1, + 0.9821428656578064, + 0.7678571343421936, + 1, + 1, + 0.9821428656578064, + 0.7678571343421936, + 1, + 1, + 0.01785714365541935, + 0.8035714030265808, + 1, + 1, + 0.01785714365541935, + 0.8035714030265808, + 1, + 1, + 0.0535714291036129, + 0.8035714030265808, + 1, + 1, + 0.0535714291036129, + 0.8035714030265808, + 1, + 1, + 0.0892857164144516, + 0.8035714030265808, + 1, + 1, + 0.0892857164144516, + 0.8035714030265808, + 1, + 1, + 0.125, + 0.8035714030265808, + 1, + 1, + 0.125, + 0.8035714030265808, + 1, + 1, + 0.1607142835855484, + 0.8035714030265808, + 1, + 1, + 0.1607142835855484, + 0.8035714030265808, + 1, + 1, + 0.1964285671710968, + 0.8035714030265808, + 1, + 1, + 0.1964285671710968, + 0.8035714030265808, + 1, + 1, + 0.2321428507566452, + 0.8035714030265808, + 1, + 1, + 0.2321428507566452, + 0.8035714030265808, + 1, + 1, + 0.2678571343421936, + 0.8035714030265808, + 1, + 1, + 0.2678571343421936, + 0.8035714030265808, + 1, + 1, + 0.3035714328289032, + 0.8035714030265808, + 1, + 1, + 0.3035714328289032, + 0.8035714030265808, + 1, + 1, + 0.3392857015132904, + 0.8035714030265808, + 1, + 1, + 0.3392857015132904, + 0.8035714030265808, + 1, + 1, + 0.375, + 0.8035714030265808, + 1, + 1, + 0.375, + 0.8035714030265808, + 1, + 1, + 0.4107142984867096, + 0.8035714030265808, + 1, + 1, + 0.4107142984867096, + 0.8035714030265808, + 1, + 1, + 0.4464285671710968, + 0.8035714030265808, + 1, + 1, + 0.4464285671710968, + 0.8035714030265808, + 1, + 1, + 0.4821428656578064, + 0.8035714030265808, + 1, + 1, + 0.4821428656578064, + 0.8035714030265808, + 1, + 1, + 0.5178571343421936, + 0.8035714030265808, + 1, + 1, + 0.5178571343421936, + 0.8035714030265808, + 1, + 1, + 0.5535714030265808, + 0.8035714030265808, + 1, + 1, + 0.5535714030265808, + 0.8035714030265808, + 1, + 1, + 0.5892857313156128, + 0.8035714030265808, + 1, + 1, + 0.5892857313156128, + 0.8035714030265808, + 1, + 1, + 0.625, + 0.8035714030265808, + 1, + 1, + 0.625, + 0.8035714030265808, + 1, + 1, + 0.6607142686843872, + 0.8035714030265808, + 1, + 1, + 0.6607142686843872, + 0.8035714030265808, + 1, + 1, + 0.6964285969734192, + 0.8035714030265808, + 1, + 1, + 0.6964285969734192, + 0.8035714030265808, + 1, + 1, + 0.7321428656578064, + 0.8035714030265808, + 1, + 1, + 0.7321428656578064, + 0.8035714030265808, + 1, + 1, + 0.7678571343421936, + 0.8035714030265808, + 1, + 1, + 0.7678571343421936, + 0.8035714030265808, + 1, + 1, + 0.8035714030265808, + 0.8035714030265808, + 1, + 1, + 0.8035714030265808, + 0.8035714030265808, + 1, + 1, + 0.8392857313156128, + 0.8035714030265808, + 1, + 1, + 0.8392857313156128, + 0.8035714030265808, + 1, + 1, + 0.875, + 0.8035714030265808, + 1, + 1, + 0.875, + 0.8035714030265808, + 1, + 1, + 0.9107142686843872, + 0.8035714030265808, + 1, + 1, + 0.9107142686843872, + 0.8035714030265808, + 1, + 1, + 0.9464285969734192, + 0.8035714030265808, + 1, + 1, + 0.9464285969734192, + 0.8035714030265808, + 1, + 1, + 0.9821428656578064, + 0.8035714030265808, + 1, + 1, + 0.9821428656578064, + 0.8035714030265808, + 1, + 1, + 0.01785714365541935, + 0.8392857313156128, + 1, + 1, + 0.01785714365541935, + 0.8392857313156128, + 1, + 1, + 0.0535714291036129, + 0.8392857313156128, + 1, + 1, + 0.0535714291036129, + 0.8392857313156128, + 1, + 1, + 0.0892857164144516, + 0.8392857313156128, + 1, + 1, + 0.0892857164144516, + 0.8392857313156128, + 1, + 1, + 0.125, + 0.8392857313156128, + 1, + 1, + 0.125, + 0.8392857313156128, + 1, + 1, + 0.1607142835855484, + 0.8392857313156128, + 1, + 1, + 0.1607142835855484, + 0.8392857313156128, + 1, + 1, + 0.1964285671710968, + 0.8392857313156128, + 1, + 1, + 0.1964285671710968, + 0.8392857313156128, + 1, + 1, + 0.2321428507566452, + 0.8392857313156128, + 1, + 1, + 0.2321428507566452, + 0.8392857313156128, + 1, + 1, + 0.2678571343421936, + 0.8392857313156128, + 1, + 1, + 0.2678571343421936, + 0.8392857313156128, + 1, + 1, + 0.3035714328289032, + 0.8392857313156128, + 1, + 1, + 0.3035714328289032, + 0.8392857313156128, + 1, + 1, + 0.3392857015132904, + 0.8392857313156128, + 1, + 1, + 0.3392857015132904, + 0.8392857313156128, + 1, + 1, + 0.375, + 0.8392857313156128, + 1, + 1, + 0.375, + 0.8392857313156128, + 1, + 1, + 0.4107142984867096, + 0.8392857313156128, + 1, + 1, + 0.4107142984867096, + 0.8392857313156128, + 1, + 1, + 0.4464285671710968, + 0.8392857313156128, + 1, + 1, + 0.4464285671710968, + 0.8392857313156128, + 1, + 1, + 0.4821428656578064, + 0.8392857313156128, + 1, + 1, + 0.4821428656578064, + 0.8392857313156128, + 1, + 1, + 0.5178571343421936, + 0.8392857313156128, + 1, + 1, + 0.5178571343421936, + 0.8392857313156128, + 1, + 1, + 0.5535714030265808, + 0.8392857313156128, + 1, + 1, + 0.5535714030265808, + 0.8392857313156128, + 1, + 1, + 0.5892857313156128, + 0.8392857313156128, + 1, + 1, + 0.5892857313156128, + 0.8392857313156128, + 1, + 1, + 0.625, + 0.8392857313156128, + 1, + 1, + 0.625, + 0.8392857313156128, + 1, + 1, + 0.6607142686843872, + 0.8392857313156128, + 1, + 1, + 0.6607142686843872, + 0.8392857313156128, + 1, + 1, + 0.6964285969734192, + 0.8392857313156128, + 1, + 1, + 0.6964285969734192, + 0.8392857313156128, + 1, + 1, + 0.7321428656578064, + 0.8392857313156128, + 1, + 1, + 0.7321428656578064, + 0.8392857313156128, + 1, + 1, + 0.7678571343421936, + 0.8392857313156128, + 1, + 1, + 0.7678571343421936, + 0.8392857313156128, + 1, + 1, + 0.8035714030265808, + 0.8392857313156128, + 1, + 1, + 0.8035714030265808, + 0.8392857313156128, + 1, + 1, + 0.8392857313156128, + 0.8392857313156128, + 1, + 1, + 0.8392857313156128, + 0.8392857313156128, + 1, + 1, + 0.875, + 0.8392857313156128, + 1, + 1, + 0.875, + 0.8392857313156128, + 1, + 1, + 0.9107142686843872, + 0.8392857313156128, + 1, + 1, + 0.9107142686843872, + 0.8392857313156128, + 1, + 1, + 0.9464285969734192, + 0.8392857313156128, + 1, + 1, + 0.9464285969734192, + 0.8392857313156128, + 1, + 1, + 0.9821428656578064, + 0.8392857313156128, + 1, + 1, + 0.9821428656578064, + 0.8392857313156128, + 1, + 1, + 0.01785714365541935, + 0.875, + 1, + 1, + 0.01785714365541935, + 0.875, + 1, + 1, + 0.0535714291036129, + 0.875, + 1, + 1, + 0.0535714291036129, + 0.875, + 1, + 1, + 0.0892857164144516, + 0.875, + 1, + 1, + 0.0892857164144516, + 0.875, + 1, + 1, + 0.125, + 0.875, + 1, + 1, + 0.125, + 0.875, + 1, + 1, + 0.1607142835855484, + 0.875, + 1, + 1, + 0.1607142835855484, + 0.875, + 1, + 1, + 0.1964285671710968, + 0.875, + 1, + 1, + 0.1964285671710968, + 0.875, + 1, + 1, + 0.2321428507566452, + 0.875, + 1, + 1, + 0.2321428507566452, + 0.875, + 1, + 1, + 0.2678571343421936, + 0.875, + 1, + 1, + 0.2678571343421936, + 0.875, + 1, + 1, + 0.3035714328289032, + 0.875, + 1, + 1, + 0.3035714328289032, + 0.875, + 1, + 1, + 0.3392857015132904, + 0.875, + 1, + 1, + 0.3392857015132904, + 0.875, + 1, + 1, + 0.375, + 0.875, + 1, + 1, + 0.375, + 0.875, + 1, + 1, + 0.4107142984867096, + 0.875, + 1, + 1, + 0.4107142984867096, + 0.875, + 1, + 1, + 0.4464285671710968, + 0.875, + 1, + 1, + 0.4464285671710968, + 0.875, + 1, + 1, + 0.4821428656578064, + 0.875, + 1, + 1, + 0.4821428656578064, + 0.875, + 1, + 1, + 0.5178571343421936, + 0.875, + 1, + 1, + 0.5178571343421936, + 0.875, + 1, + 1, + 0.5535714030265808, + 0.875, + 1, + 1, + 0.5535714030265808, + 0.875, + 1, + 1, + 0.5892857313156128, + 0.875, + 1, + 1, + 0.5892857313156128, + 0.875, + 1, + 1, + 0.625, + 0.875, + 1, + 1, + 0.625, + 0.875, + 1, + 1, + 0.6607142686843872, + 0.875, + 1, + 1, + 0.6607142686843872, + 0.875, + 1, + 1, + 0.6964285969734192, + 0.875, + 1, + 1, + 0.6964285969734192, + 0.875, + 1, + 1, + 0.7321428656578064, + 0.875, + 1, + 1, + 0.7321428656578064, + 0.875, + 1, + 1, + 0.7678571343421936, + 0.875, + 1, + 1, + 0.7678571343421936, + 0.875, + 1, + 1, + 0.8035714030265808, + 0.875, + 1, + 1, + 0.8035714030265808, + 0.875, + 1, + 1, + 0.8392857313156128, + 0.875, + 1, + 1, + 0.8392857313156128, + 0.875, + 1, + 1, + 0.875, + 0.875, + 1, + 1, + 0.875, + 0.875, + 1, + 1, + 0.9107142686843872, + 0.875, + 1, + 1, + 0.9107142686843872, + 0.875, + 1, + 1, + 0.9464285969734192, + 0.875, + 1, + 1, + 0.9464285969734192, + 0.875, + 1, + 1, + 0.9821428656578064, + 0.875, + 1, + 1, + 0.9821428656578064, + 0.875, + 1, + 1, + 0.01785714365541935, + 0.9107142686843872, + 1, + 1, + 0.01785714365541935, + 0.9107142686843872, + 1, + 1, + 0.0535714291036129, + 0.9107142686843872, + 1, + 1, + 0.0535714291036129, + 0.9107142686843872, + 1, + 1, + 0.0892857164144516, + 0.9107142686843872, + 1, + 1, + 0.0892857164144516, + 0.9107142686843872, + 1, + 1, + 0.125, + 0.9107142686843872, + 1, + 1, + 0.125, + 0.9107142686843872, + 1, + 1, + 0.1607142835855484, + 0.9107142686843872, + 1, + 1, + 0.1607142835855484, + 0.9107142686843872, + 1, + 1, + 0.1964285671710968, + 0.9107142686843872, + 1, + 1, + 0.1964285671710968, + 0.9107142686843872, + 1, + 1, + 0.2321428507566452, + 0.9107142686843872, + 1, + 1, + 0.2321428507566452, + 0.9107142686843872, + 1, + 1, + 0.2678571343421936, + 0.9107142686843872, + 1, + 1, + 0.2678571343421936, + 0.9107142686843872, + 1, + 1, + 0.3035714328289032, + 0.9107142686843872, + 1, + 1, + 0.3035714328289032, + 0.9107142686843872, + 1, + 1, + 0.3392857015132904, + 0.9107142686843872, + 1, + 1, + 0.3392857015132904, + 0.9107142686843872, + 1, + 1, + 0.375, + 0.9107142686843872, + 1, + 1, + 0.375, + 0.9107142686843872, + 1, + 1, + 0.4107142984867096, + 0.9107142686843872, + 1, + 1, + 0.4107142984867096, + 0.9107142686843872, + 1, + 1, + 0.4464285671710968, + 0.9107142686843872, + 1, + 1, + 0.4464285671710968, + 0.9107142686843872, + 1, + 1, + 0.4821428656578064, + 0.9107142686843872, + 1, + 1, + 0.4821428656578064, + 0.9107142686843872, + 1, + 1, + 0.5178571343421936, + 0.9107142686843872, + 1, + 1, + 0.5178571343421936, + 0.9107142686843872, + 1, + 1, + 0.5535714030265808, + 0.9107142686843872, + 1, + 1, + 0.5535714030265808, + 0.9107142686843872, + 1, + 1, + 0.5892857313156128, + 0.9107142686843872, + 1, + 1, + 0.5892857313156128, + 0.9107142686843872, + 1, + 1, + 0.625, + 0.9107142686843872, + 1, + 1, + 0.625, + 0.9107142686843872, + 1, + 1, + 0.6607142686843872, + 0.9107142686843872, + 1, + 1, + 0.6607142686843872, + 0.9107142686843872, + 1, + 1, + 0.6964285969734192, + 0.9107142686843872, + 1, + 1, + 0.6964285969734192, + 0.9107142686843872, + 1, + 1, + 0.7321428656578064, + 0.9107142686843872, + 1, + 1, + 0.7321428656578064, + 0.9107142686843872, + 1, + 1, + 0.7678571343421936, + 0.9107142686843872, + 1, + 1, + 0.7678571343421936, + 0.9107142686843872, + 1, + 1, + 0.8035714030265808, + 0.9107142686843872, + 1, + 1, + 0.8035714030265808, + 0.9107142686843872, + 1, + 1, + 0.8392857313156128, + 0.9107142686843872, + 1, + 1, + 0.8392857313156128, + 0.9107142686843872, + 1, + 1, + 0.875, + 0.9107142686843872, + 1, + 1, + 0.875, + 0.9107142686843872, + 1, + 1, + 0.9107142686843872, + 0.9107142686843872, + 1, + 1, + 0.9107142686843872, + 0.9107142686843872, + 1, + 1, + 0.9464285969734192, + 0.9107142686843872, + 1, + 1, + 0.9464285969734192, + 0.9107142686843872, + 1, + 1, + 0.9821428656578064, + 0.9107142686843872, + 1, + 1, + 0.9821428656578064, + 0.9107142686843872, + 1, + 1, + 0.01785714365541935, + 0.9464285969734192, + 1, + 1, + 0.01785714365541935, + 0.9464285969734192, + 1, + 1, + 0.0535714291036129, + 0.9464285969734192, + 1, + 1, + 0.0535714291036129, + 0.9464285969734192, + 1, + 1, + 0.0892857164144516, + 0.9464285969734192, + 1, + 1, + 0.0892857164144516, + 0.9464285969734192, + 1, + 1, + 0.125, + 0.9464285969734192, + 1, + 1, + 0.125, + 0.9464285969734192, + 1, + 1, + 0.1607142835855484, + 0.9464285969734192, + 1, + 1, + 0.1607142835855484, + 0.9464285969734192, + 1, + 1, + 0.1964285671710968, + 0.9464285969734192, + 1, + 1, + 0.1964285671710968, + 0.9464285969734192, + 1, + 1, + 0.2321428507566452, + 0.9464285969734192, + 1, + 1, + 0.2321428507566452, + 0.9464285969734192, + 1, + 1, + 0.2678571343421936, + 0.9464285969734192, + 1, + 1, + 0.2678571343421936, + 0.9464285969734192, + 1, + 1, + 0.3035714328289032, + 0.9464285969734192, + 1, + 1, + 0.3035714328289032, + 0.9464285969734192, + 1, + 1, + 0.3392857015132904, + 0.9464285969734192, + 1, + 1, + 0.3392857015132904, + 0.9464285969734192, + 1, + 1, + 0.375, + 0.9464285969734192, + 1, + 1, + 0.375, + 0.9464285969734192, + 1, + 1, + 0.4107142984867096, + 0.9464285969734192, + 1, + 1, + 0.4107142984867096, + 0.9464285969734192, + 1, + 1, + 0.4464285671710968, + 0.9464285969734192, + 1, + 1, + 0.4464285671710968, + 0.9464285969734192, + 1, + 1, + 0.4821428656578064, + 0.9464285969734192, + 1, + 1, + 0.4821428656578064, + 0.9464285969734192, + 1, + 1, + 0.5178571343421936, + 0.9464285969734192, + 1, + 1, + 0.5178571343421936, + 0.9464285969734192, + 1, + 1, + 0.5535714030265808, + 0.9464285969734192, + 1, + 1, + 0.5535714030265808, + 0.9464285969734192, + 1, + 1, + 0.5892857313156128, + 0.9464285969734192, + 1, + 1, + 0.5892857313156128, + 0.9464285969734192, + 1, + 1, + 0.625, + 0.9464285969734192, + 1, + 1, + 0.625, + 0.9464285969734192, + 1, + 1, + 0.6607142686843872, + 0.9464285969734192, + 1, + 1, + 0.6607142686843872, + 0.9464285969734192, + 1, + 1, + 0.6964285969734192, + 0.9464285969734192, + 1, + 1, + 0.6964285969734192, + 0.9464285969734192, + 1, + 1, + 0.7321428656578064, + 0.9464285969734192, + 1, + 1, + 0.7321428656578064, + 0.9464285969734192, + 1, + 1, + 0.7678571343421936, + 0.9464285969734192, + 1, + 1, + 0.7678571343421936, + 0.9464285969734192, + 1, + 1, + 0.8035714030265808, + 0.9464285969734192, + 1, + 1, + 0.8035714030265808, + 0.9464285969734192, + 1, + 1, + 0.8392857313156128, + 0.9464285969734192, + 1, + 1, + 0.8392857313156128, + 0.9464285969734192, + 1, + 1, + 0.875, + 0.9464285969734192, + 1, + 1, + 0.875, + 0.9464285969734192, + 1, + 1, + 0.9107142686843872, + 0.9464285969734192, + 1, + 1, + 0.9107142686843872, + 0.9464285969734192, + 1, + 1, + 0.9464285969734192, + 0.9464285969734192, + 1, + 1, + 0.9464285969734192, + 0.9464285969734192, + 1, + 1, + 0.9821428656578064, + 0.9464285969734192, + 1, + 1, + 0.9821428656578064, + 0.9464285969734192, + 1, + 1, + 0.01785714365541935, + 0.9821428656578064, + 1, + 1, + 0.01785714365541935, + 0.9821428656578064, + 1, + 1, + 0.0535714291036129, + 0.9821428656578064, + 1, + 1, + 0.0535714291036129, + 0.9821428656578064, + 1, + 1, + 0.0892857164144516, + 0.9821428656578064, + 1, + 1, + 0.0892857164144516, + 0.9821428656578064, + 1, + 1, + 0.125, + 0.9821428656578064, + 1, + 1, + 0.125, + 0.9821428656578064, + 1, + 1, + 0.1607142835855484, + 0.9821428656578064, + 1, + 1, + 0.1607142835855484, + 0.9821428656578064, + 1, + 1, + 0.1964285671710968, + 0.9821428656578064, + 1, + 1, + 0.1964285671710968, + 0.9821428656578064, + 1, + 1, + 0.2321428507566452, + 0.9821428656578064, + 1, + 1, + 0.2321428507566452, + 0.9821428656578064, + 1, + 1, + 0.2678571343421936, + 0.9821428656578064, + 1, + 1, + 0.2678571343421936, + 0.9821428656578064, + 1, + 1, + 0.3035714328289032, + 0.9821428656578064, + 1, + 1, + 0.3035714328289032, + 0.9821428656578064, + 1, + 1, + 0.3392857015132904, + 0.9821428656578064, + 1, + 1, + 0.3392857015132904, + 0.9821428656578064, + 1, + 1, + 0.375, + 0.9821428656578064, + 1, + 1, + 0.375, + 0.9821428656578064, + 1, + 1, + 0.4107142984867096, + 0.9821428656578064, + 1, + 1, + 0.4107142984867096, + 0.9821428656578064, + 1, + 1, + 0.4464285671710968, + 0.9821428656578064, + 1, + 1, + 0.4464285671710968, + 0.9821428656578064, + 1, + 1, + 0.4821428656578064, + 0.9821428656578064, + 1, + 1, + 0.4821428656578064, + 0.9821428656578064, + 1, + 1, + 0.5178571343421936, + 0.9821428656578064, + 1, + 1, + 0.5178571343421936, + 0.9821428656578064, + 1, + 1, + 0.5535714030265808, + 0.9821428656578064, + 1, + 1, + 0.5535714030265808, + 0.9821428656578064, + 1, + 1, + 0.5892857313156128, + 0.9821428656578064, + 1, + 1, + 0.5892857313156128, + 0.9821428656578064, + 1, + 1, + 0.625, + 0.9821428656578064, + 1, + 1, + 0.625, + 0.9821428656578064, + 1, + 1, + 0.6607142686843872, + 0.9821428656578064, + 1, + 1, + 0.6607142686843872, + 0.9821428656578064, + 1, + 1, + 0.6964285969734192, + 0.9821428656578064, + 1, + 1, + 0.6964285969734192, + 0.9821428656578064, + 1, + 1, + 0.7321428656578064, + 0.9821428656578064, + 1, + 1, + 0.7321428656578064, + 0.9821428656578064, + 1, + 1, + 0.7678571343421936, + 0.9821428656578064, + 1, + 1, + 0.7678571343421936, + 0.9821428656578064, + 1, + 1, + 0.8035714030265808, + 0.9821428656578064, + 1, + 1, + 0.8035714030265808, + 0.9821428656578064, + 1, + 1, + 0.8392857313156128, + 0.9821428656578064, + 1, + 1, + 0.8392857313156128, + 0.9821428656578064, + 1, + 1, + 0.875, + 0.9821428656578064, + 1, + 1, + 0.875, + 0.9821428656578064, + 1, + 1, + 0.9107142686843872, + 0.9821428656578064, + 1, + 1, + 0.9107142686843872, + 0.9821428656578064, + 1, + 1, + 0.9464285969734192, + 0.9821428656578064, + 1, + 1, + 0.9464285969734192, + 0.9821428656578064, + 1, + 1, + 0.9821428656578064, + 0.9821428656578064, + 1, + 1, + 0.9821428656578064, + 0.9821428656578064, + 1, + 1, + 0.0357142873108387, + 0.0357142873108387, + 1, + 1, + 0.0357142873108387, + 0.0357142873108387, + 1, + 1, + 0.1071428582072258, + 0.0357142873108387, + 1, + 1, + 0.1071428582072258, + 0.0357142873108387, + 1, + 1, + 0.1785714328289032, + 0.0357142873108387, + 1, + 1, + 0.1785714328289032, + 0.0357142873108387, + 1, + 1, + 0.25, + 0.0357142873108387, + 1, + 1, + 0.25, + 0.0357142873108387, + 1, + 1, + 0.3214285671710968, + 0.0357142873108387, + 1, + 1, + 0.3214285671710968, + 0.0357142873108387, + 1, + 1, + 0.3928571343421936, + 0.0357142873108387, + 1, + 1, + 0.3928571343421936, + 0.0357142873108387, + 1, + 1, + 0.4642857015132904, + 0.0357142873108387, + 1, + 1, + 0.4642857015132904, + 0.0357142873108387, + 1, + 1, + 0.5357142686843872, + 0.0357142873108387, + 1, + 1, + 0.5357142686843872, + 0.0357142873108387, + 1, + 1, + 0.6071428656578064, + 0.0357142873108387, + 1, + 1, + 0.6071428656578064, + 0.0357142873108387, + 1, + 1, + 0.6785714030265808, + 0.0357142873108387, + 1, + 1, + 0.6785714030265808, + 0.0357142873108387, + 1, + 1, + 0.75, + 0.0357142873108387, + 1, + 1, + 0.75, + 0.0357142873108387, + 1, + 1, + 0.8214285969734192, + 0.0357142873108387, + 1, + 1, + 0.8214285969734192, + 0.0357142873108387, + 1, + 1, + 0.8928571343421936, + 0.0357142873108387, + 1, + 1, + 0.8928571343421936, + 0.0357142873108387, + 1, + 1, + 0.9642857313156128, + 0.0357142873108387, + 1, + 1, + 0.9642857313156128, + 0.0357142873108387, + 1, + 1, + 0.0357142873108387, + 0.1071428582072258, + 1, + 1, + 0.0357142873108387, + 0.1071428582072258, + 1, + 1, + 0.1071428582072258, + 0.1071428582072258, + 1, + 1, + 0.1071428582072258, + 0.1071428582072258, + 1, + 1, + 0.1785714328289032, + 0.1071428582072258, + 1, + 1, + 0.1785714328289032, + 0.1071428582072258, + 1, + 1, + 0.25, + 0.1071428582072258, + 1, + 1, + 0.25, + 0.1071428582072258, + 1, + 1, + 0.3214285671710968, + 0.1071428582072258, + 1, + 1, + 0.3214285671710968, + 0.1071428582072258, + 1, + 1, + 0.3928571343421936, + 0.1071428582072258, + 1, + 1, + 0.3928571343421936, + 0.1071428582072258, + 1, + 1, + 0.4642857015132904, + 0.1071428582072258, + 1, + 1, + 0.4642857015132904, + 0.1071428582072258, + 1, + 1, + 0.5357142686843872, + 0.1071428582072258, + 1, + 1, + 0.5357142686843872, + 0.1071428582072258, + 1, + 1, + 0.6071428656578064, + 0.1071428582072258, + 1, + 1, + 0.6071428656578064, + 0.1071428582072258, + 1, + 1, + 0.6785714030265808, + 0.1071428582072258, + 1, + 1, + 0.6785714030265808, + 0.1071428582072258, + 1, + 1, + 0.75, + 0.1071428582072258, + 1, + 1, + 0.75, + 0.1071428582072258, + 1, + 1, + 0.8214285969734192, + 0.1071428582072258, + 1, + 1, + 0.8214285969734192, + 0.1071428582072258, + 1, + 1, + 0.8928571343421936, + 0.1071428582072258, + 1, + 1, + 0.8928571343421936, + 0.1071428582072258, + 1, + 1, + 0.9642857313156128, + 0.1071428582072258, + 1, + 1, + 0.9642857313156128, + 0.1071428582072258, + 1, + 1, + 0.0357142873108387, + 0.1785714328289032, + 1, + 1, + 0.0357142873108387, + 0.1785714328289032, + 1, + 1, + 0.1071428582072258, + 0.1785714328289032, + 1, + 1, + 0.1071428582072258, + 0.1785714328289032, + 1, + 1, + 0.1785714328289032, + 0.1785714328289032, + 1, + 1, + 0.1785714328289032, + 0.1785714328289032, + 1, + 1, + 0.25, + 0.1785714328289032, + 1, + 1, + 0.25, + 0.1785714328289032, + 1, + 1, + 0.3214285671710968, + 0.1785714328289032, + 1, + 1, + 0.3214285671710968, + 0.1785714328289032, + 1, + 1, + 0.3928571343421936, + 0.1785714328289032, + 1, + 1, + 0.3928571343421936, + 0.1785714328289032, + 1, + 1, + 0.4642857015132904, + 0.1785714328289032, + 1, + 1, + 0.4642857015132904, + 0.1785714328289032, + 1, + 1, + 0.5357142686843872, + 0.1785714328289032, + 1, + 1, + 0.5357142686843872, + 0.1785714328289032, + 1, + 1, + 0.6071428656578064, + 0.1785714328289032, + 1, + 1, + 0.6071428656578064, + 0.1785714328289032, + 1, + 1, + 0.6785714030265808, + 0.1785714328289032, + 1, + 1, + 0.6785714030265808, + 0.1785714328289032, + 1, + 1, + 0.75, + 0.1785714328289032, + 1, + 1, + 0.75, + 0.1785714328289032, + 1, + 1, + 0.8214285969734192, + 0.1785714328289032, + 1, + 1, + 0.8214285969734192, + 0.1785714328289032, + 1, + 1, + 0.8928571343421936, + 0.1785714328289032, + 1, + 1, + 0.8928571343421936, + 0.1785714328289032, + 1, + 1, + 0.9642857313156128, + 0.1785714328289032, + 1, + 1, + 0.9642857313156128, + 0.1785714328289032, + 1, + 1, + 0.0357142873108387, + 0.25, + 1, + 1, + 0.0357142873108387, + 0.25, + 1, + 1, + 0.1071428582072258, + 0.25, + 1, + 1, + 0.1071428582072258, + 0.25, + 1, + 1, + 0.1785714328289032, + 0.25, + 1, + 1, + 0.1785714328289032, + 0.25, + 1, + 1, + 0.25, + 0.25, + 1, + 1, + 0.25, + 0.25, + 1, + 1, + 0.3214285671710968, + 0.25, + 1, + 1, + 0.3214285671710968, + 0.25, + 1, + 1, + 0.3928571343421936, + 0.25, + 1, + 1, + 0.3928571343421936, + 0.25, + 1, + 1, + 0.4642857015132904, + 0.25, + 1, + 1, + 0.4642857015132904, + 0.25, + 1, + 1, + 0.5357142686843872, + 0.25, + 1, + 1, + 0.5357142686843872, + 0.25, + 1, + 1, + 0.6071428656578064, + 0.25, + 1, + 1, + 0.6071428656578064, + 0.25, + 1, + 1, + 0.6785714030265808, + 0.25, + 1, + 1, + 0.6785714030265808, + 0.25, + 1, + 1, + 0.75, + 0.25, + 1, + 1, + 0.75, + 0.25, + 1, + 1, + 0.8214285969734192, + 0.25, + 1, + 1, + 0.8214285969734192, + 0.25, + 1, + 1, + 0.8928571343421936, + 0.25, + 1, + 1, + 0.8928571343421936, + 0.25, + 1, + 1, + 0.9642857313156128, + 0.25, + 1, + 1, + 0.9642857313156128, + 0.25, + 1, + 1, + 0.0357142873108387, + 0.3214285671710968, + 1, + 1, + 0.0357142873108387, + 0.3214285671710968, + 1, + 1, + 0.1071428582072258, + 0.3214285671710968, + 1, + 1, + 0.1071428582072258, + 0.3214285671710968, + 1, + 1, + 0.1785714328289032, + 0.3214285671710968, + 1, + 1, + 0.1785714328289032, + 0.3214285671710968, + 1, + 1, + 0.25, + 0.3214285671710968, + 1, + 1, + 0.25, + 0.3214285671710968, + 1, + 1, + 0.3214285671710968, + 0.3214285671710968, + 1, + 1, + 0.3214285671710968, + 0.3214285671710968, + 1, + 1, + 0.3928571343421936, + 0.3214285671710968, + 1, + 1, + 0.3928571343421936, + 0.3214285671710968, + 1, + 1, + 0.4642857015132904, + 0.3214285671710968, + 1, + 1, + 0.4642857015132904, + 0.3214285671710968, + 1, + 1, + 0.5357142686843872, + 0.3214285671710968, + 1, + 1, + 0.5357142686843872, + 0.3214285671710968, + 1, + 1, + 0.6071428656578064, + 0.3214285671710968, + 1, + 1, + 0.6071428656578064, + 0.3214285671710968, + 1, + 1, + 0.6785714030265808, + 0.3214285671710968, + 1, + 1, + 0.6785714030265808, + 0.3214285671710968, + 1, + 1, + 0.75, + 0.3214285671710968, + 1, + 1, + 0.75, + 0.3214285671710968, + 1, + 1, + 0.8214285969734192, + 0.3214285671710968, + 1, + 1, + 0.8214285969734192, + 0.3214285671710968, + 1, + 1, + 0.8928571343421936, + 0.3214285671710968, + 1, + 1, + 0.8928571343421936, + 0.3214285671710968, + 1, + 1, + 0.9642857313156128, + 0.3214285671710968, + 1, + 1, + 0.9642857313156128, + 0.3214285671710968, + 1, + 1, + 0.0357142873108387, + 0.3928571343421936, + 1, + 1, + 0.0357142873108387, + 0.3928571343421936, + 1, + 1, + 0.1071428582072258, + 0.3928571343421936, + 1, + 1, + 0.1071428582072258, + 0.3928571343421936, + 1, + 1, + 0.1785714328289032, + 0.3928571343421936, + 1, + 1, + 0.1785714328289032, + 0.3928571343421936, + 1, + 1, + 0.25, + 0.3928571343421936, + 1, + 1, + 0.25, + 0.3928571343421936, + 1, + 1, + 0.3214285671710968, + 0.3928571343421936, + 1, + 1, + 0.3214285671710968, + 0.3928571343421936, + 1, + 1, + 0.3928571343421936, + 0.3928571343421936, + 1, + 1, + 0.3928571343421936, + 0.3928571343421936, + 1, + 1, + 0.4642857015132904, + 0.3928571343421936, + 1, + 1, + 0.4642857015132904, + 0.3928571343421936, + 1, + 1, + 0.5357142686843872, + 0.3928571343421936, + 1, + 1, + 0.5357142686843872, + 0.3928571343421936, + 1, + 1, + 0.6071428656578064, + 0.3928571343421936, + 1, + 1, + 0.6071428656578064, + 0.3928571343421936, + 1, + 1, + 0.6785714030265808, + 0.3928571343421936, + 1, + 1, + 0.6785714030265808, + 0.3928571343421936, + 1, + 1, + 0.75, + 0.3928571343421936, + 1, + 1, + 0.75, + 0.3928571343421936, + 1, + 1, + 0.8214285969734192, + 0.3928571343421936, + 1, + 1, + 0.8214285969734192, + 0.3928571343421936, + 1, + 1, + 0.8928571343421936, + 0.3928571343421936, + 1, + 1, + 0.8928571343421936, + 0.3928571343421936, + 1, + 1, + 0.9642857313156128, + 0.3928571343421936, + 1, + 1, + 0.9642857313156128, + 0.3928571343421936, + 1, + 1, + 0.0357142873108387, + 0.4642857015132904, + 1, + 1, + 0.0357142873108387, + 0.4642857015132904, + 1, + 1, + 0.1071428582072258, + 0.4642857015132904, + 1, + 1, + 0.1071428582072258, + 0.4642857015132904, + 1, + 1, + 0.1785714328289032, + 0.4642857015132904, + 1, + 1, + 0.1785714328289032, + 0.4642857015132904, + 1, + 1, + 0.25, + 0.4642857015132904, + 1, + 1, + 0.25, + 0.4642857015132904, + 1, + 1, + 0.3214285671710968, + 0.4642857015132904, + 1, + 1, + 0.3214285671710968, + 0.4642857015132904, + 1, + 1, + 0.3928571343421936, + 0.4642857015132904, + 1, + 1, + 0.3928571343421936, + 0.4642857015132904, + 1, + 1, + 0.4642857015132904, + 0.4642857015132904, + 1, + 1, + 0.4642857015132904, + 0.4642857015132904, + 1, + 1, + 0.5357142686843872, + 0.4642857015132904, + 1, + 1, + 0.5357142686843872, + 0.4642857015132904, + 1, + 1, + 0.6071428656578064, + 0.4642857015132904, + 1, + 1, + 0.6071428656578064, + 0.4642857015132904, + 1, + 1, + 0.6785714030265808, + 0.4642857015132904, + 1, + 1, + 0.6785714030265808, + 0.4642857015132904, + 1, + 1, + 0.75, + 0.4642857015132904, + 1, + 1, + 0.75, + 0.4642857015132904, + 1, + 1, + 0.8214285969734192, + 0.4642857015132904, + 1, + 1, + 0.8214285969734192, + 0.4642857015132904, + 1, + 1, + 0.8928571343421936, + 0.4642857015132904, + 1, + 1, + 0.8928571343421936, + 0.4642857015132904, + 1, + 1, + 0.9642857313156128, + 0.4642857015132904, + 1, + 1, + 0.9642857313156128, + 0.4642857015132904, + 1, + 1, + 0.0357142873108387, + 0.5357142686843872, + 1, + 1, + 0.0357142873108387, + 0.5357142686843872, + 1, + 1, + 0.1071428582072258, + 0.5357142686843872, + 1, + 1, + 0.1071428582072258, + 0.5357142686843872, + 1, + 1, + 0.1785714328289032, + 0.5357142686843872, + 1, + 1, + 0.1785714328289032, + 0.5357142686843872, + 1, + 1, + 0.25, + 0.5357142686843872, + 1, + 1, + 0.25, + 0.5357142686843872, + 1, + 1, + 0.3214285671710968, + 0.5357142686843872, + 1, + 1, + 0.3214285671710968, + 0.5357142686843872, + 1, + 1, + 0.3928571343421936, + 0.5357142686843872, + 1, + 1, + 0.3928571343421936, + 0.5357142686843872, + 1, + 1, + 0.4642857015132904, + 0.5357142686843872, + 1, + 1, + 0.4642857015132904, + 0.5357142686843872, + 1, + 1, + 0.5357142686843872, + 0.5357142686843872, + 1, + 1, + 0.5357142686843872, + 0.5357142686843872, + 1, + 1, + 0.6071428656578064, + 0.5357142686843872, + 1, + 1, + 0.6071428656578064, + 0.5357142686843872, + 1, + 1, + 0.6785714030265808, + 0.5357142686843872, + 1, + 1, + 0.6785714030265808, + 0.5357142686843872, + 1, + 1, + 0.75, + 0.5357142686843872, + 1, + 1, + 0.75, + 0.5357142686843872, + 1, + 1, + 0.8214285969734192, + 0.5357142686843872, + 1, + 1, + 0.8214285969734192, + 0.5357142686843872, + 1, + 1, + 0.8928571343421936, + 0.5357142686843872, + 1, + 1, + 0.8928571343421936, + 0.5357142686843872, + 1, + 1, + 0.9642857313156128, + 0.5357142686843872, + 1, + 1, + 0.9642857313156128, + 0.5357142686843872, + 1, + 1, + 0.0357142873108387, + 0.6071428656578064, + 1, + 1, + 0.0357142873108387, + 0.6071428656578064, + 1, + 1, + 0.1071428582072258, + 0.6071428656578064, + 1, + 1, + 0.1071428582072258, + 0.6071428656578064, + 1, + 1, + 0.1785714328289032, + 0.6071428656578064, + 1, + 1, + 0.1785714328289032, + 0.6071428656578064, + 1, + 1, + 0.25, + 0.6071428656578064, + 1, + 1, + 0.25, + 0.6071428656578064, + 1, + 1, + 0.3214285671710968, + 0.6071428656578064, + 1, + 1, + 0.3214285671710968, + 0.6071428656578064, + 1, + 1, + 0.3928571343421936, + 0.6071428656578064, + 1, + 1, + 0.3928571343421936, + 0.6071428656578064, + 1, + 1, + 0.4642857015132904, + 0.6071428656578064, + 1, + 1, + 0.4642857015132904, + 0.6071428656578064, + 1, + 1, + 0.5357142686843872, + 0.6071428656578064, + 1, + 1, + 0.5357142686843872, + 0.6071428656578064, + 1, + 1, + 0.6071428656578064, + 0.6071428656578064, + 1, + 1, + 0.6071428656578064, + 0.6071428656578064, + 1, + 1, + 0.6785714030265808, + 0.6071428656578064, + 1, + 1, + 0.6785714030265808, + 0.6071428656578064, + 1, + 1, + 0.75, + 0.6071428656578064, + 1, + 1, + 0.75, + 0.6071428656578064, + 1, + 1, + 0.8214285969734192, + 0.6071428656578064, + 1, + 1, + 0.8214285969734192, + 0.6071428656578064, + 1, + 1, + 0.8928571343421936, + 0.6071428656578064, + 1, + 1, + 0.8928571343421936, + 0.6071428656578064, + 1, + 1, + 0.9642857313156128, + 0.6071428656578064, + 1, + 1, + 0.9642857313156128, + 0.6071428656578064, + 1, + 1, + 0.0357142873108387, + 0.6785714030265808, + 1, + 1, + 0.0357142873108387, + 0.6785714030265808, + 1, + 1, + 0.1071428582072258, + 0.6785714030265808, + 1, + 1, + 0.1071428582072258, + 0.6785714030265808, + 1, + 1, + 0.1785714328289032, + 0.6785714030265808, + 1, + 1, + 0.1785714328289032, + 0.6785714030265808, + 1, + 1, + 0.25, + 0.6785714030265808, + 1, + 1, + 0.25, + 0.6785714030265808, + 1, + 1, + 0.3214285671710968, + 0.6785714030265808, + 1, + 1, + 0.3214285671710968, + 0.6785714030265808, + 1, + 1, + 0.3928571343421936, + 0.6785714030265808, + 1, + 1, + 0.3928571343421936, + 0.6785714030265808, + 1, + 1, + 0.4642857015132904, + 0.6785714030265808, + 1, + 1, + 0.4642857015132904, + 0.6785714030265808, + 1, + 1, + 0.5357142686843872, + 0.6785714030265808, + 1, + 1, + 0.5357142686843872, + 0.6785714030265808, + 1, + 1, + 0.6071428656578064, + 0.6785714030265808, + 1, + 1, + 0.6071428656578064, + 0.6785714030265808, + 1, + 1, + 0.6785714030265808, + 0.6785714030265808, + 1, + 1, + 0.6785714030265808, + 0.6785714030265808, + 1, + 1, + 0.75, + 0.6785714030265808, + 1, + 1, + 0.75, + 0.6785714030265808, + 1, + 1, + 0.8214285969734192, + 0.6785714030265808, + 1, + 1, + 0.8214285969734192, + 0.6785714030265808, + 1, + 1, + 0.8928571343421936, + 0.6785714030265808, + 1, + 1, + 0.8928571343421936, + 0.6785714030265808, + 1, + 1, + 0.9642857313156128, + 0.6785714030265808, + 1, + 1, + 0.9642857313156128, + 0.6785714030265808, + 1, + 1, + 0.0357142873108387, + 0.75, + 1, + 1, + 0.0357142873108387, + 0.75, + 1, + 1, + 0.1071428582072258, + 0.75, + 1, + 1, + 0.1071428582072258, + 0.75, + 1, + 1, + 0.1785714328289032, + 0.75, + 1, + 1, + 0.1785714328289032, + 0.75, + 1, + 1, + 0.25, + 0.75, + 1, + 1, + 0.25, + 0.75, + 1, + 1, + 0.3214285671710968, + 0.75, + 1, + 1, + 0.3214285671710968, + 0.75, + 1, + 1, + 0.3928571343421936, + 0.75, + 1, + 1, + 0.3928571343421936, + 0.75, + 1, + 1, + 0.4642857015132904, + 0.75, + 1, + 1, + 0.4642857015132904, + 0.75, + 1, + 1, + 0.5357142686843872, + 0.75, + 1, + 1, + 0.5357142686843872, + 0.75, + 1, + 1, + 0.6071428656578064, + 0.75, + 1, + 1, + 0.6071428656578064, + 0.75, + 1, + 1, + 0.6785714030265808, + 0.75, + 1, + 1, + 0.6785714030265808, + 0.75, + 1, + 1, + 0.75, + 0.75, + 1, + 1, + 0.75, + 0.75, + 1, + 1, + 0.8214285969734192, + 0.75, + 1, + 1, + 0.8214285969734192, + 0.75, + 1, + 1, + 0.8928571343421936, + 0.75, + 1, + 1, + 0.8928571343421936, + 0.75, + 1, + 1, + 0.9642857313156128, + 0.75, + 1, + 1, + 0.9642857313156128, + 0.75, + 1, + 1, + 0.0357142873108387, + 0.8214285969734192, + 1, + 1, + 0.0357142873108387, + 0.8214285969734192, + 1, + 1, + 0.1071428582072258, + 0.8214285969734192, + 1, + 1, + 0.1071428582072258, + 0.8214285969734192, + 1, + 1, + 0.1785714328289032, + 0.8214285969734192, + 1, + 1, + 0.1785714328289032, + 0.8214285969734192, + 1, + 1, + 0.25, + 0.8214285969734192, + 1, + 1, + 0.25, + 0.8214285969734192, + 1, + 1, + 0.3214285671710968, + 0.8214285969734192, + 1, + 1, + 0.3214285671710968, + 0.8214285969734192, + 1, + 1, + 0.3928571343421936, + 0.8214285969734192, + 1, + 1, + 0.3928571343421936, + 0.8214285969734192, + 1, + 1, + 0.4642857015132904, + 0.8214285969734192, + 1, + 1, + 0.4642857015132904, + 0.8214285969734192, + 1, + 1, + 0.5357142686843872, + 0.8214285969734192, + 1, + 1, + 0.5357142686843872, + 0.8214285969734192, + 1, + 1, + 0.6071428656578064, + 0.8214285969734192, + 1, + 1, + 0.6071428656578064, + 0.8214285969734192, + 1, + 1, + 0.6785714030265808, + 0.8214285969734192, + 1, + 1, + 0.6785714030265808, + 0.8214285969734192, + 1, + 1, + 0.75, + 0.8214285969734192, + 1, + 1, + 0.75, + 0.8214285969734192, + 1, + 1, + 0.8214285969734192, + 0.8214285969734192, + 1, + 1, + 0.8214285969734192, + 0.8214285969734192, + 1, + 1, + 0.8928571343421936, + 0.8214285969734192, + 1, + 1, + 0.8928571343421936, + 0.8214285969734192, + 1, + 1, + 0.9642857313156128, + 0.8214285969734192, + 1, + 1, + 0.9642857313156128, + 0.8214285969734192, + 1, + 1, + 0.0357142873108387, + 0.8928571343421936, + 1, + 1, + 0.0357142873108387, + 0.8928571343421936, + 1, + 1, + 0.1071428582072258, + 0.8928571343421936, + 1, + 1, + 0.1071428582072258, + 0.8928571343421936, + 1, + 1, + 0.1785714328289032, + 0.8928571343421936, + 1, + 1, + 0.1785714328289032, + 0.8928571343421936, + 1, + 1, + 0.25, + 0.8928571343421936, + 1, + 1, + 0.25, + 0.8928571343421936, + 1, + 1, + 0.3214285671710968, + 0.8928571343421936, + 1, + 1, + 0.3214285671710968, + 0.8928571343421936, + 1, + 1, + 0.3928571343421936, + 0.8928571343421936, + 1, + 1, + 0.3928571343421936, + 0.8928571343421936, + 1, + 1, + 0.4642857015132904, + 0.8928571343421936, + 1, + 1, + 0.4642857015132904, + 0.8928571343421936, + 1, + 1, + 0.5357142686843872, + 0.8928571343421936, + 1, + 1, + 0.5357142686843872, + 0.8928571343421936, + 1, + 1, + 0.6071428656578064, + 0.8928571343421936, + 1, + 1, + 0.6071428656578064, + 0.8928571343421936, + 1, + 1, + 0.6785714030265808, + 0.8928571343421936, + 1, + 1, + 0.6785714030265808, + 0.8928571343421936, + 1, + 1, + 0.75, + 0.8928571343421936, + 1, + 1, + 0.75, + 0.8928571343421936, + 1, + 1, + 0.8214285969734192, + 0.8928571343421936, + 1, + 1, + 0.8214285969734192, + 0.8928571343421936, + 1, + 1, + 0.8928571343421936, + 0.8928571343421936, + 1, + 1, + 0.8928571343421936, + 0.8928571343421936, + 1, + 1, + 0.9642857313156128, + 0.8928571343421936, + 1, + 1, + 0.9642857313156128, + 0.8928571343421936, + 1, + 1, + 0.0357142873108387, + 0.9642857313156128, + 1, + 1, + 0.0357142873108387, + 0.9642857313156128, + 1, + 1, + 0.1071428582072258, + 0.9642857313156128, + 1, + 1, + 0.1071428582072258, + 0.9642857313156128, + 1, + 1, + 0.1785714328289032, + 0.9642857313156128, + 1, + 1, + 0.1785714328289032, + 0.9642857313156128, + 1, + 1, + 0.25, + 0.9642857313156128, + 1, + 1, + 0.25, + 0.9642857313156128, + 1, + 1, + 0.3214285671710968, + 0.9642857313156128, + 1, + 1, + 0.3214285671710968, + 0.9642857313156128, + 1, + 1, + 0.3928571343421936, + 0.9642857313156128, + 1, + 1, + 0.3928571343421936, + 0.9642857313156128, + 1, + 1, + 0.4642857015132904, + 0.9642857313156128, + 1, + 1, + 0.4642857015132904, + 0.9642857313156128, + 1, + 1, + 0.5357142686843872, + 0.9642857313156128, + 1, + 1, + 0.5357142686843872, + 0.9642857313156128, + 1, + 1, + 0.6071428656578064, + 0.9642857313156128, + 1, + 1, + 0.6071428656578064, + 0.9642857313156128, + 1, + 1, + 0.6785714030265808, + 0.9642857313156128, + 1, + 1, + 0.6785714030265808, + 0.9642857313156128, + 1, + 1, + 0.75, + 0.9642857313156128, + 1, + 1, + 0.75, + 0.9642857313156128, + 1, + 1, + 0.8214285969734192, + 0.9642857313156128, + 1, + 1, + 0.8214285969734192, + 0.9642857313156128, + 1, + 1, + 0.8928571343421936, + 0.9642857313156128, + 1, + 1, + 0.8928571343421936, + 0.9642857313156128, + 1, + 1, + 0.9642857313156128, + 0.9642857313156128, + 1, + 1, + 0.9642857313156128, + 0.9642857313156128, + 1, + 1, + 0.0714285746216774, + 0.0714285746216774, + 1, + 1, + 0.0714285746216774, + 0.0714285746216774, + 1, + 1, + 0.0714285746216774, + 0.0714285746216774, + 1, + 1, + 0.0714285746216774, + 0.0714285746216774, + 1, + 1, + 0.0714285746216774, + 0.0714285746216774, + 1, + 1, + 0.0714285746216774, + 0.0714285746216774, + 1, + 1, + 0.2142857164144516, + 0.0714285746216774, + 1, + 1, + 0.2142857164144516, + 0.0714285746216774, + 1, + 1, + 0.2142857164144516, + 0.0714285746216774, + 1, + 1, + 0.2142857164144516, + 0.0714285746216774, + 1, + 1, + 0.2142857164144516, + 0.0714285746216774, + 1, + 1, + 0.2142857164144516, + 0.0714285746216774, + 1, + 1, + 0.3571428656578064, + 0.0714285746216774, + 1, + 1, + 0.3571428656578064, + 0.0714285746216774, + 1, + 1, + 0.3571428656578064, + 0.0714285746216774, + 1, + 1, + 0.3571428656578064, + 0.0714285746216774, + 1, + 1, + 0.3571428656578064, + 0.0714285746216774, + 1, + 1, + 0.3571428656578064, + 0.0714285746216774, + 1, + 1, + 0.5, + 0.0714285746216774, + 1, + 1, + 0.5, + 0.0714285746216774, + 1, + 1, + 0.5, + 0.0714285746216774, + 1, + 1, + 0.5, + 0.0714285746216774, + 1, + 1, + 0.5, + 0.0714285746216774, + 1, + 1, + 0.5, + 0.0714285746216774, + 1, + 1, + 0.6428571343421936, + 0.0714285746216774, + 1, + 1, + 0.6428571343421936, + 0.0714285746216774, + 1, + 1, + 0.6428571343421936, + 0.0714285746216774, + 1, + 1, + 0.6428571343421936, + 0.0714285746216774, + 1, + 1, + 0.6428571343421936, + 0.0714285746216774, + 1, + 1, + 0.6428571343421936, + 0.0714285746216774, + 1, + 1, + 0.7857142686843872, + 0.0714285746216774, + 1, + 1, + 0.7857142686843872, + 0.0714285746216774, + 1, + 1, + 0.7857142686843872, + 0.0714285746216774, + 1, + 1, + 0.7857142686843872, + 0.0714285746216774, + 1, + 1, + 0.7857142686843872, + 0.0714285746216774, + 1, + 1, + 0.7857142686843872, + 0.0714285746216774, + 1, + 1, + 0.9285714030265808, + 0.0714285746216774, + 1, + 1, + 0.9285714030265808, + 0.0714285746216774, + 1, + 1, + 0.9285714030265808, + 0.0714285746216774, + 1, + 1, + 0.9285714030265808, + 0.0714285746216774, + 1, + 1, + 0.9285714030265808, + 0.0714285746216774, + 1, + 1, + 0.9285714030265808, + 0.0714285746216774, + 1, + 1, + 0.0714285746216774, + 0.2142857164144516, + 1, + 1, + 0.0714285746216774, + 0.2142857164144516, + 1, + 1, + 0.0714285746216774, + 0.2142857164144516, + 1, + 1, + 0.0714285746216774, + 0.2142857164144516, + 1, + 1, + 0.0714285746216774, + 0.2142857164144516, + 1, + 1, + 0.0714285746216774, + 0.2142857164144516, + 1, + 1, + 0.2142857164144516, + 0.2142857164144516, + 1, + 1, + 0.2142857164144516, + 0.2142857164144516, + 1, + 1, + 0.2142857164144516, + 0.2142857164144516, + 1, + 1, + 0.2142857164144516, + 0.2142857164144516, + 1, + 1, + 0.2142857164144516, + 0.2142857164144516, + 1, + 1, + 0.2142857164144516, + 0.2142857164144516, + 1, + 1, + 0.3571428656578064, + 0.2142857164144516, + 1, + 1, + 0.3571428656578064, + 0.2142857164144516, + 1, + 1, + 0.3571428656578064, + 0.2142857164144516, + 1, + 1, + 0.3571428656578064, + 0.2142857164144516, + 1, + 1, + 0.3571428656578064, + 0.2142857164144516, + 1, + 1, + 0.3571428656578064, + 0.2142857164144516, + 1, + 1, + 0.5, + 0.2142857164144516, + 1, + 1, + 0.5, + 0.2142857164144516, + 1, + 1, + 0.5, + 0.2142857164144516, + 1, + 1, + 0.5, + 0.2142857164144516, + 1, + 1, + 0.5, + 0.2142857164144516, + 1, + 1, + 0.5, + 0.2142857164144516, + 1, + 1, + 0.6428571343421936, + 0.2142857164144516, + 1, + 1, + 0.6428571343421936, + 0.2142857164144516, + 1, + 1, + 0.6428571343421936, + 0.2142857164144516, + 1, + 1, + 0.6428571343421936, + 0.2142857164144516, + 1, + 1, + 0.6428571343421936, + 0.2142857164144516, + 1, + 1, + 0.6428571343421936, + 0.2142857164144516, + 1, + 1, + 0.7857142686843872, + 0.2142857164144516, + 1, + 1, + 0.7857142686843872, + 0.2142857164144516, + 1, + 1, + 0.7857142686843872, + 0.2142857164144516, + 1, + 1, + 0.7857142686843872, + 0.2142857164144516, + 1, + 1, + 0.7857142686843872, + 0.2142857164144516, + 1, + 1, + 0.7857142686843872, + 0.2142857164144516, + 1, + 1, + 0.9285714030265808, + 0.2142857164144516, + 1, + 1, + 0.9285714030265808, + 0.2142857164144516, + 1, + 1, + 0.9285714030265808, + 0.2142857164144516, + 1, + 1, + 0.9285714030265808, + 0.2142857164144516, + 1, + 1, + 0.9285714030265808, + 0.2142857164144516, + 1, + 1, + 0.9285714030265808, + 0.2142857164144516, + 1, + 1, + 0.0714285746216774, + 0.3571428656578064, + 1, + 1, + 0.0714285746216774, + 0.3571428656578064, + 1, + 1, + 0.0714285746216774, + 0.3571428656578064, + 1, + 1, + 0.0714285746216774, + 0.3571428656578064, + 1, + 1, + 0.0714285746216774, + 0.3571428656578064, + 1, + 1, + 0.0714285746216774, + 0.3571428656578064, + 1, + 1, + 0.2142857164144516, + 0.3571428656578064, + 1, + 1, + 0.2142857164144516, + 0.3571428656578064, + 1, + 1, + 0.2142857164144516, + 0.3571428656578064, + 1, + 1, + 0.2142857164144516, + 0.3571428656578064, + 1, + 1, + 0.2142857164144516, + 0.3571428656578064, + 1, + 1, + 0.2142857164144516, + 0.3571428656578064, + 1, + 1, + 0.3571428656578064, + 0.3571428656578064, + 1, + 1, + 0.3571428656578064, + 0.3571428656578064, + 1, + 1, + 0.3571428656578064, + 0.3571428656578064, + 1, + 1, + 0.3571428656578064, + 0.3571428656578064, + 1, + 1, + 0.3571428656578064, + 0.3571428656578064, + 1, + 1, + 0.3571428656578064, + 0.3571428656578064, + 1, + 1, + 0.5, + 0.3571428656578064, + 1, + 1, + 0.5, + 0.3571428656578064, + 1, + 1, + 0.5, + 0.3571428656578064, + 1, + 1, + 0.5, + 0.3571428656578064, + 1, + 1, + 0.5, + 0.3571428656578064, + 1, + 1, + 0.5, + 0.3571428656578064, + 1, + 1, + 0.6428571343421936, + 0.3571428656578064, + 1, + 1, + 0.6428571343421936, + 0.3571428656578064, + 1, + 1, + 0.6428571343421936, + 0.3571428656578064, + 1, + 1, + 0.6428571343421936, + 0.3571428656578064, + 1, + 1, + 0.6428571343421936, + 0.3571428656578064, + 1, + 1, + 0.6428571343421936, + 0.3571428656578064, + 1, + 1, + 0.7857142686843872, + 0.3571428656578064, + 1, + 1, + 0.7857142686843872, + 0.3571428656578064, + 1, + 1, + 0.7857142686843872, + 0.3571428656578064, + 1, + 1, + 0.7857142686843872, + 0.3571428656578064, + 1, + 1, + 0.7857142686843872, + 0.3571428656578064, + 1, + 1, + 0.7857142686843872, + 0.3571428656578064, + 1, + 1, + 0.9285714030265808, + 0.3571428656578064, + 1, + 1, + 0.9285714030265808, + 0.3571428656578064, + 1, + 1, + 0.9285714030265808, + 0.3571428656578064, + 1, + 1, + 0.9285714030265808, + 0.3571428656578064, + 1, + 1, + 0.9285714030265808, + 0.3571428656578064, + 1, + 1, + 0.9285714030265808, + 0.3571428656578064, + 1, + 1, + 0.0714285746216774, + 0.5, + 1, + 1, + 0.0714285746216774, + 0.5, + 1, + 1, + 0.0714285746216774, + 0.5, + 1, + 1, + 0.0714285746216774, + 0.5, + 1, + 1, + 0.0714285746216774, + 0.5, + 1, + 1, + 0.0714285746216774, + 0.5, + 1, + 1, + 0.2142857164144516, + 0.5, + 1, + 1, + 0.2142857164144516, + 0.5, + 1, + 1, + 0.2142857164144516, + 0.5, + 1, + 1, + 0.2142857164144516, + 0.5, + 1, + 1, + 0.2142857164144516, + 0.5, + 1, + 1, + 0.2142857164144516, + 0.5, + 1, + 1, + 0.3571428656578064, + 0.5, + 1, + 1, + 0.3571428656578064, + 0.5, + 1, + 1, + 0.3571428656578064, + 0.5, + 1, + 1, + 0.3571428656578064, + 0.5, + 1, + 1, + 0.3571428656578064, + 0.5, + 1, + 1, + 0.3571428656578064, + 0.5, + 1, + 1, + 0.5, + 0.5, + 1, + 1, + 0.5, + 0.5, + 1, + 1, + 0.5, + 0.5, + 1, + 1, + 0.5, + 0.5, + 1, + 1, + 0.5, + 0.5, + 1, + 1, + 0.5, + 0.5, + 1, + 1, + 0.6428571343421936, + 0.5, + 1, + 1, + 0.6428571343421936, + 0.5, + 1, + 1, + 0.6428571343421936, + 0.5, + 1, + 1, + 0.6428571343421936, + 0.5, + 1, + 1, + 0.6428571343421936, + 0.5, + 1, + 1, + 0.6428571343421936, + 0.5, + 1, + 1, + 0.7857142686843872, + 0.5, + 1, + 1, + 0.7857142686843872, + 0.5, + 1, + 1, + 0.7857142686843872, + 0.5, + 1, + 1, + 0.7857142686843872, + 0.5, + 1, + 1, + 0.7857142686843872, + 0.5, + 1, + 1, + 0.7857142686843872, + 0.5, + 1, + 1, + 0.9285714030265808, + 0.5, + 1, + 1, + 0.9285714030265808, + 0.5, + 1, + 1, + 0.9285714030265808, + 0.5, + 1, + 1, + 0.9285714030265808, + 0.5, + 1, + 1, + 0.9285714030265808, + 0.5, + 1, + 1, + 0.9285714030265808, + 0.5, + 1, + 1, + 0.0714285746216774, + 0.6428571343421936, + 1, + 1, + 0.0714285746216774, + 0.6428571343421936, + 1, + 1, + 0.0714285746216774, + 0.6428571343421936, + 1, + 1, + 0.0714285746216774, + 0.6428571343421936, + 1, + 1, + 0.0714285746216774, + 0.6428571343421936, + 1, + 1, + 0.0714285746216774, + 0.6428571343421936, + 1, + 1, + 0.2142857164144516, + 0.6428571343421936, + 1, + 1, + 0.2142857164144516, + 0.6428571343421936, + 1, + 1, + 0.2142857164144516, + 0.6428571343421936, + 1, + 1, + 0.2142857164144516, + 0.6428571343421936, + 1, + 1, + 0.2142857164144516, + 0.6428571343421936, + 1, + 1, + 0.2142857164144516, + 0.6428571343421936, + 1, + 1, + 0.3571428656578064, + 0.6428571343421936, + 1, + 1, + 0.3571428656578064, + 0.6428571343421936, + 1, + 1, + 0.3571428656578064, + 0.6428571343421936, + 1, + 1, + 0.3571428656578064, + 0.6428571343421936, + 1, + 1, + 0.3571428656578064, + 0.6428571343421936, + 1, + 1, + 0.3571428656578064, + 0.6428571343421936, + 1, + 1, + 0.5, + 0.6428571343421936, + 1, + 1, + 0.5, + 0.6428571343421936, + 1, + 1, + 0.5, + 0.6428571343421936, + 1, + 1, + 0.5, + 0.6428571343421936, + 1, + 1, + 0.5, + 0.6428571343421936, + 1, + 1, + 0.5, + 0.6428571343421936, + 1, + 1, + 0.6428571343421936, + 0.6428571343421936, + 1, + 1, + 0.6428571343421936, + 0.6428571343421936, + 1, + 1, + 0.6428571343421936, + 0.6428571343421936, + 1, + 1, + 0.6428571343421936, + 0.6428571343421936, + 1, + 1, + 0.6428571343421936, + 0.6428571343421936, + 1, + 1, + 0.6428571343421936, + 0.6428571343421936, + 1, + 1, + 0.7857142686843872, + 0.6428571343421936, + 1, + 1, + 0.7857142686843872, + 0.6428571343421936, + 1, + 1, + 0.7857142686843872, + 0.6428571343421936, + 1, + 1, + 0.7857142686843872, + 0.6428571343421936, + 1, + 1, + 0.7857142686843872, + 0.6428571343421936, + 1, + 1, + 0.7857142686843872, + 0.6428571343421936, + 1, + 1, + 0.9285714030265808, + 0.6428571343421936, + 1, + 1, + 0.9285714030265808, + 0.6428571343421936, + 1, + 1, + 0.9285714030265808, + 0.6428571343421936, + 1, + 1, + 0.9285714030265808, + 0.6428571343421936, + 1, + 1, + 0.9285714030265808, + 0.6428571343421936, + 1, + 1, + 0.9285714030265808, + 0.6428571343421936, + 1, + 1, + 0.0714285746216774, + 0.7857142686843872, + 1, + 1, + 0.0714285746216774, + 0.7857142686843872, + 1, + 1, + 0.0714285746216774, + 0.7857142686843872, + 1, + 1, + 0.0714285746216774, + 0.7857142686843872, + 1, + 1, + 0.0714285746216774, + 0.7857142686843872, + 1, + 1, + 0.0714285746216774, + 0.7857142686843872, + 1, + 1, + 0.2142857164144516, + 0.7857142686843872, + 1, + 1, + 0.2142857164144516, + 0.7857142686843872, + 1, + 1, + 0.2142857164144516, + 0.7857142686843872, + 1, + 1, + 0.2142857164144516, + 0.7857142686843872, + 1, + 1, + 0.2142857164144516, + 0.7857142686843872, + 1, + 1, + 0.2142857164144516, + 0.7857142686843872, + 1, + 1, + 0.3571428656578064, + 0.7857142686843872, + 1, + 1, + 0.3571428656578064, + 0.7857142686843872, + 1, + 1, + 0.3571428656578064, + 0.7857142686843872, + 1, + 1, + 0.3571428656578064, + 0.7857142686843872, + 1, + 1, + 0.3571428656578064, + 0.7857142686843872, + 1, + 1, + 0.3571428656578064, + 0.7857142686843872, + 1, + 1, + 0.5, + 0.7857142686843872, + 1, + 1, + 0.5, + 0.7857142686843872, + 1, + 1, + 0.5, + 0.7857142686843872, + 1, + 1, + 0.5, + 0.7857142686843872, + 1, + 1, + 0.5, + 0.7857142686843872, + 1, + 1, + 0.5, + 0.7857142686843872, + 1, + 1, + 0.6428571343421936, + 0.7857142686843872, + 1, + 1, + 0.6428571343421936, + 0.7857142686843872, + 1, + 1, + 0.6428571343421936, + 0.7857142686843872, + 1, + 1, + 0.6428571343421936, + 0.7857142686843872, + 1, + 1, + 0.6428571343421936, + 0.7857142686843872, + 1, + 1, + 0.6428571343421936, + 0.7857142686843872, + 1, + 1, + 0.7857142686843872, + 0.7857142686843872, + 1, + 1, + 0.7857142686843872, + 0.7857142686843872, + 1, + 1, + 0.7857142686843872, + 0.7857142686843872, + 1, + 1, + 0.7857142686843872, + 0.7857142686843872, + 1, + 1, + 0.7857142686843872, + 0.7857142686843872, + 1, + 1, + 0.7857142686843872, + 0.7857142686843872, + 1, + 1, + 0.9285714030265808, + 0.7857142686843872, + 1, + 1, + 0.9285714030265808, + 0.7857142686843872, + 1, + 1, + 0.9285714030265808, + 0.7857142686843872, + 1, + 1, + 0.9285714030265808, + 0.7857142686843872, + 1, + 1, + 0.9285714030265808, + 0.7857142686843872, + 1, + 1, + 0.9285714030265808, + 0.7857142686843872, + 1, + 1, + 0.0714285746216774, + 0.9285714030265808, + 1, + 1, + 0.0714285746216774, + 0.9285714030265808, + 1, + 1, + 0.0714285746216774, + 0.9285714030265808, + 1, + 1, + 0.0714285746216774, + 0.9285714030265808, + 1, + 1, + 0.0714285746216774, + 0.9285714030265808, + 1, + 1, + 0.0714285746216774, + 0.9285714030265808, + 1, + 1, + 0.2142857164144516, + 0.9285714030265808, + 1, + 1, + 0.2142857164144516, + 0.9285714030265808, + 1, + 1, + 0.2142857164144516, + 0.9285714030265808, + 1, + 1, + 0.2142857164144516, + 0.9285714030265808, + 1, + 1, + 0.2142857164144516, + 0.9285714030265808, + 1, + 1, + 0.2142857164144516, + 0.9285714030265808, + 1, + 1, + 0.3571428656578064, + 0.9285714030265808, + 1, + 1, + 0.3571428656578064, + 0.9285714030265808, + 1, + 1, + 0.3571428656578064, + 0.9285714030265808, + 1, + 1, + 0.3571428656578064, + 0.9285714030265808, + 1, + 1, + 0.3571428656578064, + 0.9285714030265808, + 1, + 1, + 0.3571428656578064, + 0.9285714030265808, + 1, + 1, + 0.5, + 0.9285714030265808, + 1, + 1, + 0.5, + 0.9285714030265808, + 1, + 1, + 0.5, + 0.9285714030265808, + 1, + 1, + 0.5, + 0.9285714030265808, + 1, + 1, + 0.5, + 0.9285714030265808, + 1, + 1, + 0.5, + 0.9285714030265808, + 1, + 1, + 0.6428571343421936, + 0.9285714030265808, + 1, + 1, + 0.6428571343421936, + 0.9285714030265808, + 1, + 1, + 0.6428571343421936, + 0.9285714030265808, + 1, + 1, + 0.6428571343421936, + 0.9285714030265808, + 1, + 1, + 0.6428571343421936, + 0.9285714030265808, + 1, + 1, + 0.6428571343421936, + 0.9285714030265808, + 1, + 1, + 0.7857142686843872, + 0.9285714030265808, + 1, + 1, + 0.7857142686843872, + 0.9285714030265808, + 1, + 1, + 0.7857142686843872, + 0.9285714030265808, + 1, + 1, + 0.7857142686843872, + 0.9285714030265808, + 1, + 1, + 0.7857142686843872, + 0.9285714030265808, + 1, + 1, + 0.7857142686843872, + 0.9285714030265808, + 1, + 1, + 0.9285714030265808, + 0.9285714030265808, + 1, + 1, + 0.9285714030265808, + 0.9285714030265808, + 1, + 1, + 0.9285714030265808, + 0.9285714030265808, + 1, + 1, + 0.9285714030265808, + 0.9285714030265808, + 1, + 1, + 0.9285714030265808, + 0.9285714030265808, + 1, + 1, + 0.9285714030265808, + 0.9285714030265808, + 1, + 1, + }; + } +} \ No newline at end of file diff --git a/Assets/AXIP/AILIA-MODELS/PoseEstimation/AiliaMediapipePoseWorldLamdmarksAnchors.cs.meta b/Assets/AXIP/AILIA-MODELS/PoseEstimation/AiliaMediapipePoseWorldLamdmarksAnchors.cs.meta new file mode 100644 index 0000000..4287835 --- /dev/null +++ b/Assets/AXIP/AILIA-MODELS/PoseEstimation/AiliaMediapipePoseWorldLamdmarksAnchors.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 68418df7195b44e6eb2d3151205c97fe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AXIP/AILIA-MODELS/PoseEstimation/AiliaMediapipePoseWorldLandmarks.cs b/Assets/AXIP/AILIA-MODELS/PoseEstimation/AiliaMediapipePoseWorldLandmarks.cs new file mode 100644 index 0000000..aba7664 --- /dev/null +++ b/Assets/AXIP/AILIA-MODELS/PoseEstimation/AiliaMediapipePoseWorldLandmarks.cs @@ -0,0 +1,705 @@ +using ailiaSDK; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using UnityEngine; + +using ailia; + +public class AiliaMediapipePoseWorldLandmarks : IDisposable +{ + AiliaMediapipePoseWorldLandmarksAnchors anchors_holder = new AiliaMediapipePoseWorldLandmarksAnchors(); + + public ComputeShader computeShader = null; + + private AiliaModel ailiaPoseDetection = new AiliaModel(); + private AiliaModel ailiaPoseEstimation = new AiliaModel(); + + private static readonly int MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION = 224; + private static readonly uint MEDIAPIPEPOSE_DETECTOR_INPUT_CHANNEL_COUNT = 3; + private static readonly uint MEDIAPIPEPOSE_DETECTOR_TENSOR_COUNT = 2254; + private static readonly uint MEDIAPIPEPOSE_DETECTOR_TENSOR_SIZE = 12; + public static readonly uint MEDIAPIPEPOSE_DETECTOR_KEYPOINT_COUNT = 4; + private static readonly float MEDIAPIPEPOSE_DETECTOR_RAW_SCORE_THRESHOLD = 100; + private static readonly float MEDIAPIPEPOSE_DETECTOR_MINIMUM_SCORE_THRESHOLD = 0.5f; + private static readonly float MEDIAPIPEPOSE_DETECTOR_MINIMUM_OVERLAP_THRESHOLD = 0.3f; + private float[,] anchors; + + private static readonly int MEDIAPIPEPOSE_ESTIMATOR_INPUT_RESOLUTION = 256; + private static readonly int MEDIAPIPEPOSE_ESTIMATOR_TENSOR_COUNT = 1; + private static readonly int MEDIAPIPEPOSE_ESTIMATOR_TENSOR_SIZE = 195; + + int kernelIndex = -1; + int ID_InputTexture = Shader.PropertyToID("InputTexture"); + int ID_InputWidth = Shader.PropertyToID("InputWidth"); + int ID_InputHeight = Shader.PropertyToID("InputHeight"); + int ID_OutputTexture = Shader.PropertyToID("OutputTexture"); + int ID_OutputWidth = Shader.PropertyToID("OutputWidth"); + int ID_OutputHeight = Shader.PropertyToID("OutputHeight"); + int ID_Matrix = Shader.PropertyToID("Matrix"); + int ID_BackgroundColor = Shader.PropertyToID("BackgroundColor"); + + struct JsonFloatArray + { + public float[] array; + } + + //constructor + public AiliaMediapipePoseWorldLandmarks(bool gpuMode, string assetPath, string jsonPath) + { + bool status; + + if (gpuMode) + { + ailiaPoseDetection.Environment(Ailia.AILIA_ENVIRONMENT_TYPE_GPU); + } + string modelName = "pose_detection"; + status = ailiaPoseDetection.OpenFile($"{assetPath}/{modelName}.onnx.prototxt", $"{assetPath}/{modelName}.onnx"); + if (status == false) + { + string message = $"Could not load model {modelName}"; + Debug.LogError(message); + throw new Exception(message); + } + Debug.Log($"Model loaded {modelName}"); + + if (gpuMode) + { + ailiaPoseEstimation.Environment(Ailia.AILIA_ENVIRONMENT_TYPE_GPU); + } + modelName = "pose_landmark_heavy"; + status = ailiaPoseEstimation.OpenFile($"{assetPath}/{modelName}.onnx.prototxt", $"{assetPath}/{modelName}.onnx"); + if (status == false) + { + string message = $"Could not load model {modelName}"; + Debug.LogError(message); + throw new Exception(message); + } + Debug.Log($"Model loaded {modelName}"); + + // string anchorsJSON = File.ReadAllText($"{jsonPath}/mediapipepose_anchors.json"); + // float[] anchorsFlat = JsonUtility.FromJson($"{{ \"array\": {anchorsJSON} }}").array; + float[] anchorsFlat = ConvertDoubleArrayToFloatArray(anchors_holder.anchors); + + anchors = new float[MEDIAPIPEPOSE_DETECTOR_TENSOR_COUNT, 4]; + + for (int i = 0; i < anchorsFlat.Length; ++i) + { + anchors[i / 4, i % 4] = anchorsFlat[i]; + } + + inputArray = new float[MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION * MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION * MEDIAPIPEPOSE_DETECTOR_INPUT_CHANNEL_COUNT]; + rawBoxesOutput = new float[MEDIAPIPEPOSE_DETECTOR_TENSOR_COUNT * MEDIAPIPEPOSE_DETECTOR_TENSOR_SIZE]; + rawScoresOutput = new float[MEDIAPIPEPOSE_DETECTOR_TENSOR_COUNT]; + estimationScoreBuffer = new float[1]; + estimationInputArray = new float[MEDIAPIPEPOSE_ESTIMATOR_INPUT_RESOLUTION * MEDIAPIPEPOSE_ESTIMATOR_INPUT_RESOLUTION * MEDIAPIPEPOSE_DETECTOR_INPUT_CHANNEL_COUNT]; + estimationOutputBuffer = new float[MEDIAPIPEPOSE_ESTIMATOR_TENSOR_COUNT * MEDIAPIPEPOSE_ESTIMATOR_TENSOR_SIZE]; + } + + private float[] inputArray; + private float[] rawBoxesOutput; + private float[] rawScoresOutput; + private List boxes; + private Box? poseDetectionBox; + RenderTexture preprocessBuffer; + + private void PreprocessTexture(Texture2D texture) + { + if (preprocessBuffer == null) + { + preprocessBuffer = new RenderTexture(MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION, MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION, 0, RenderTextureFormat.ARGB32); + } + + Texture2D letterboxed = TexturePreprocessor.PreprocessTexture(texture, preprocessBuffer, MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION * Vector2.one); + Color32[] colorData = letterboxed.GetPixels32(); + const float factor = 1 / 255f; + + for (int heightIndex = 0; heightIndex < MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION; heightIndex++) + { + for (int widthIndex = 0; widthIndex < MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION; widthIndex++) + { + int index = (int)(((heightIndex * MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION) + widthIndex) * MEDIAPIPEPOSE_DETECTOR_INPUT_CHANNEL_COUNT); + Color32 value = colorData[(MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION - heightIndex - 1) * MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION + widthIndex]; + + inputArray[index + 0] = value.r * factor; + inputArray[index + 1] = value.g * factor; + inputArray[index + 2] = value.b * factor; + } + } + } + + private uint estimationInputWidth; + private uint estimationInputHeight; + private float[] estimationInputArray; + private float[] estimationOutputBuffer; + float[] estimationScoreBuffer; + public List landmarks = new List(); + + private void PreprocessTextureEstimation(Texture2D texture) + { + estimationInputWidth = ((uint)texture.width); + estimationInputHeight = ((uint)texture.height); + + Color32[] colorData = texture.GetPixels32(); + const float factor = 1 / 255f; + + for (int heightIndex = 0; heightIndex < estimationInputHeight; heightIndex++) + { + for (int widthIndex = 0; widthIndex < estimationInputWidth; widthIndex++) + { + int index = (int)(((heightIndex * estimationInputWidth) + widthIndex) * MEDIAPIPEPOSE_DETECTOR_INPUT_CHANNEL_COUNT); + Color32 value = colorData[heightIndex * estimationInputWidth + widthIndex]; + + estimationInputArray[index + 0] = value.r * factor; + estimationInputArray[index + 1] = value.g * factor; + estimationInputArray[index + 2] = value.b * factor; + } + } + } + + private float affine_xc = 0; + private float affine_yc = 0; + private float affine_x1 = 0; + private float affine_y1 = 0; + private float affine_scale = 0; + private float affine_angle = 0; + + private Texture2D ExtractROIFromBox(Texture2D texture, Box box) + { + float finalSquareLength = Mathf.Max(texture.width, texture.height); + int xOffset = ((int)((finalSquareLength - texture.width) / 2)); + int yOffset = ((int)((finalSquareLength - texture.height) / 2)); + + Box scaledBox = box; + scaledBox.xMin = finalSquareLength * scaledBox.xMin - xOffset; + scaledBox.xMax = finalSquareLength * scaledBox.xMax - xOffset; + scaledBox.yMin = texture.height - 1 - finalSquareLength * scaledBox.yMin + yOffset; + scaledBox.yMax = texture.height - 1 - finalSquareLength * scaledBox.yMax + yOffset; + scaledBox.keypoints = new Vector2[scaledBox.keypoints.Length]; + + for (int i = 0; i < box.keypoints.Length; ++i) + { + scaledBox.keypoints[i] = new Vector2( + finalSquareLength * box.keypoints[i].x - xOffset, + texture.height - 1 - finalSquareLength * box.keypoints[i].y + yOffset + ); + } + + int kp1 = 0; + int kp2 = 1; + float theta0 = Mathf.PI / 2f; + float dscale = 1.1f; + + float xc = scaledBox.keypoints[kp1].x; + float yc = scaledBox.keypoints[kp1].y; + float x1 = scaledBox.keypoints[kp2].x; + float y1 = scaledBox.keypoints[kp2].y; + float scale = dscale * Mathf.Sqrt((Mathf.Pow(xc - x1, 2) + Mathf.Pow(yc - y1, 2))) * 2; + float angle = Mathf.Atan2(yc - y1, xc - x1) - theta0; + + affine_xc = box.keypoints[kp1].x; + affine_yc = box.keypoints[kp1].y; + affine_x1 = box.keypoints[kp2].x; + affine_y1 = box.keypoints[kp2].y; + affine_scale = dscale * Mathf.Sqrt((Mathf.Pow(affine_xc - affine_x1, 2) + Mathf.Pow(affine_yc - affine_y1, 2))) * 2; + affine_angle = Mathf.Atan2(affine_yc - affine_y1, affine_xc - affine_x1) - theta0; + + Vector2[] points = new Vector2[] + { + new Vector2(1, -1), + new Vector2(1, 1), + new Vector2(-1, -1) + }; + + for (int i = 0; i < points.Length; ++i) + { + points[i] *= scale / 2; + } + + float cosAngle = Mathf.Cos(angle); + float sinAngle = Mathf.Sin(angle); + + for (int i = 0; i < points.Length; ++i) + { + Vector2 p = points[i]; + points[i] = new Vector2( + p.x * cosAngle - p.y * sinAngle + xc, + p.x * sinAngle + p.y * cosAngle + yc + ); + } + + int resolution = MEDIAPIPEPOSE_ESTIMATOR_INPUT_RESOLUTION - 1; + Matrix4x4 before_m = new Matrix4x4() + { + m00 = 0, + m01 = 0, + m02 = resolution, + m03 = 0, + m10 = 0, + m11 = resolution, + m12 = 0, + m13 = 0, + m20 = 1, + m21 = 1, + m22 = 1, + m23 = 0, + m30 = 0, + m31 = 0, + m32 = 0, + m33 = 1, + }; + + Matrix4x4 after_m = new Matrix4x4() + { + m00 = points[0].x, + m01 = points[1].x, + m02 = points[2].x, + m03 = 0, + m10 = points[0].y, + m11 = points[1].y, + m12 = points[2].y, + m13 = 0, + m20 = 1, + m21 = 1, + m22 = 1, + m23 = 0, + m30 = 0, + m31 = 0, + m32 = 0, + m33 = 1, + }; + + Matrix4x4 transfrom_m = after_m * before_m.inverse; + + + + if (computeTexture == null) + { + computeTexture = new RenderTexture(MEDIAPIPEPOSE_ESTIMATOR_INPUT_RESOLUTION, MEDIAPIPEPOSE_ESTIMATOR_INPUT_RESOLUTION, 32); + computeTexture.enableRandomWrite = true; + } + + if (kernelIndex < 0) + { + kernelIndex = computeShader.FindKernel("AffineTransform"); + } + + computeShader.SetTexture(kernelIndex, ID_InputTexture, texture); + computeShader.SetTexture(kernelIndex, ID_OutputTexture, computeTexture); + computeShader.SetMatrix(ID_Matrix, transfrom_m); + computeShader.SetInt(ID_InputWidth, texture.width); + computeShader.SetInt(ID_InputHeight, texture.height); + computeShader.SetInt(ID_OutputWidth, MEDIAPIPEPOSE_ESTIMATOR_INPUT_RESOLUTION); + computeShader.SetInt(ID_OutputHeight, MEDIAPIPEPOSE_ESTIMATOR_INPUT_RESOLUTION); + computeShader.SetVector(ID_BackgroundColor, new Vector4(0, 0, 0, 1)); + + computeShader.Dispatch(kernelIndex, MEDIAPIPEPOSE_ESTIMATOR_INPUT_RESOLUTION / 32 + 1, MEDIAPIPEPOSE_ESTIMATOR_INPUT_RESOLUTION / 32 + 1, 1); + + roiTexture = toTexture2D(computeTexture, roiTexture); + + return roiTexture; + } + RenderTexture computeTexture; + Texture2D roiTexture; + + Texture2D toTexture2D(RenderTexture rTex, Texture2D output = null) + { + var org = RenderTexture.active; + output = output ?? new Texture2D(rTex.width, rTex.height, TextureFormat.RGBA32, false); + RenderTexture.active = rTex; + output.ReadPixels(new Rect(0, 0, rTex.width, rTex.height), 0, 0); + output.Apply(); + RenderTexture.active = org; + return output; + } + + Texture2D input_texture = null; + + public List RunPoseEstimation(Color32[] camera, int tex_width, int tex_height) + { + if (input_texture == null) + { + input_texture = new Texture2D(tex_width, tex_height); + } + input_texture.SetPixels32(camera); + input_texture.Apply(); + + Texture2D detection = RunDetectionModel(input_texture); + if (detection == null) + { + Debug.Log("NO POSE"); + return new List(); + } + + RunEstimationModel(detection); + + return GetResult(false); + } + + private Texture2D RunDetectionModel(Texture2D inputTexture) + { + bool status; + + if (poseDetectionBox == null) + { + PreprocessTexture(inputTexture); + + int inputBlobIndex = ailiaPoseDetection.FindBlobIndexByName("input_1"); + + status = ailiaPoseDetection.SetInputBlobShape( + new Ailia.AILIAShape + { + x = (uint)MEDIAPIPEPOSE_DETECTOR_INPUT_CHANNEL_COUNT, + y = (uint)MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION, + z = (uint)MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION, + w = 1, + dim = 4 + }, + inputBlobIndex + ); + + if (status == false) + { + Debug.LogError("Could not set input blob shape"); + Debug.LogError(ailiaPoseDetection.GetErrorDetail()); + } + + status = ailiaPoseDetection.SetInputBlobData(inputArray, inputBlobIndex); + if (status == false) + { + Debug.LogError("Could not set input blob data"); + Debug.LogError(ailiaPoseDetection.GetErrorDetail()); + } + + bool result = ailiaPoseDetection.Update(); + if (result == false) + { + Debug.Log(ailiaPoseDetection.GetErrorDetail()); + } + + int outputBlobIndex = ailiaPoseDetection.FindBlobIndexByName("Identity"); + status = ailiaPoseDetection.GetBlobData(rawBoxesOutput, outputBlobIndex); + if (status == false) + { + Debug.LogError("Could not get output blob data " + outputBlobIndex); + Debug.LogError(ailiaPoseDetection.GetErrorDetail()); + } + + outputBlobIndex = ailiaPoseDetection.FindBlobIndexByName("Identity_1"); + status = ailiaPoseDetection.GetBlobData(rawScoresOutput, outputBlobIndex); + if (status == false) + { + Debug.LogError("Could not get output blob data " + outputBlobIndex); + Debug.LogError(ailiaPoseDetection.GetErrorDetail()); + } + + DecodeAndProcessBoxes(); + + if (boxes.Count == 0) + { + return null; + } + else + { + poseDetectionBox = boxes[0]; + } + } + + Texture2D roi = ExtractROIFromBox(inputTexture, poseDetectionBox.Value); + return roi; + } + + private void RunEstimationModel(Texture2D inputTexture) + { + + bool status; + PreprocessTextureEstimation(inputTexture); + + int inputBlobIndex = ailiaPoseEstimation.FindBlobIndexByName("input_1"); + + status = ailiaPoseEstimation.SetInputBlobShape( + new Ailia.AILIAShape + { + x = (uint)MEDIAPIPEPOSE_DETECTOR_INPUT_CHANNEL_COUNT, + y = (uint)MEDIAPIPEPOSE_ESTIMATOR_INPUT_RESOLUTION, + z = (uint)MEDIAPIPEPOSE_ESTIMATOR_INPUT_RESOLUTION, + w = 1, + dim = 4 + }, + inputBlobIndex + ); + + if (status == false) + { + Debug.LogError("Could not set input blob shape"); + Debug.LogError(ailiaPoseEstimation.GetErrorDetail()); + } + + status = ailiaPoseEstimation.SetInputBlobData(estimationInputArray, inputBlobIndex); + if (status == false) + { + Debug.LogError("Could not set input blob data"); + Debug.LogError(ailiaPoseEstimation.GetErrorDetail()); + } + + status = ailiaPoseEstimation.Update(); + if (status == false) + { + Debug.Log(ailiaPoseEstimation.GetErrorDetail()); + } + + int outputBlobIndex = ailiaPoseEstimation.FindBlobIndexByName("Identity_1"); + status = ailiaPoseEstimation.GetBlobData(estimationScoreBuffer, outputBlobIndex); + if (status == false) + { + Debug.LogError("Could not get pose score output blob data " + outputBlobIndex); + Debug.LogError(ailiaPoseEstimation.GetErrorDetail()); + } + float poseScore = estimationScoreBuffer[0]; + + outputBlobIndex = ailiaPoseEstimation.FindBlobIndexByName("Identity"); + status = ailiaPoseEstimation.GetBlobData(estimationOutputBuffer, outputBlobIndex); + //Debug.Log(estimationOutputBuffer[0]); //デバック->116.1621 + + if (status == false) + { + Debug.LogError("Could not get output blob data " + outputBlobIndex); + Debug.LogError(ailiaPoseEstimation.GetErrorDetail()); + } + + DecodeAndProcessLandmarks(); + } + + private float Sigmoid(float x) + { + return 1.0f / (1.0f + Mathf.Exp(-x)); + } + + private void DecodeAndProcessBoxes() + { + List remainingBoxes = new List(); + boxes = new List(); + + float xScale = MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION; + float yScale = MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION; + float wScale = MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION; + float hScale = MEDIAPIPEPOSE_DETECTOR_INPUT_RESOLUTION; + + Func getFloat = (tI, cI) => rawBoxesOutput[tI * MEDIAPIPEPOSE_DETECTOR_TENSOR_SIZE + cI]; + + for (int tI = 0; tI < MEDIAPIPEPOSE_DETECTOR_TENSOR_COUNT; ++tI) + { + float score = Sigmoid(Mathf.Clamp(rawScoresOutput[tI], -MEDIAPIPEPOSE_DETECTOR_RAW_SCORE_THRESHOLD, MEDIAPIPEPOSE_DETECTOR_RAW_SCORE_THRESHOLD)); + + if (score < MEDIAPIPEPOSE_DETECTOR_MINIMUM_SCORE_THRESHOLD) + { + continue; + } + + float xCenter = getFloat(tI, 0) / xScale * anchors[tI, 2] + anchors[tI, 0]; + float yCenter = getFloat(tI, 1) / yScale * anchors[tI, 3] + anchors[tI, 1]; + float width = getFloat(tI, 2) / wScale * anchors[tI, 2]; + float height = getFloat(tI, 3) / hScale * anchors[tI, 3]; + + Vector2[] keypoints = new Vector2[MEDIAPIPEPOSE_DETECTOR_KEYPOINT_COUNT]; + + for (int i = 0; i < MEDIAPIPEPOSE_DETECTOR_KEYPOINT_COUNT; ++i) + { + int index = 4 + 2 * i; + keypoints[i] = new Vector2( + getFloat(tI, index) / xScale * anchors[tI, 2] + anchors[tI, 0], + getFloat(tI, index + 1) / yScale * anchors[tI, 3] + anchors[tI, 1] + ); + } + + remainingBoxes.Add(new Box + { + xMin = xCenter - width / 2, + yMin = yCenter - height / 2, + xMax = xCenter + width / 2, + yMax = yCenter + height / 2, + keypoints = keypoints, + area = width * height, + score = score + }); + } + + remainingBoxes.Sort((a, b) => Math.Sign(b.score - a.score)); + + while (remainingBoxes.Count > 0) + { + Box referenceBox = remainingBoxes[0]; + Box mergedBox = referenceBox; + remainingBoxes.RemoveAt(0); + + for (int i = 0; i < remainingBoxes.Count; ++i) + { + if (referenceBox.GetJaccardOverlap(remainingBoxes[i]) > MEDIAPIPEPOSE_DETECTOR_MINIMUM_OVERLAP_THRESHOLD) + { + mergedBox.Merge(remainingBoxes[i]); + remainingBoxes.RemoveAt(i); + --i; + } + } + + mergedBox.FinalizeMerge(); + boxes.Add(mergedBox); + } + } + + private void DecodeAndProcessLandmarks() + { + landmarks = new List(); + + for (int i = 0; i < 33; ++i) + { + float x = estimationOutputBuffer[i * 5] / MEDIAPIPEPOSE_ESTIMATOR_INPUT_RESOLUTION; + float y = estimationOutputBuffer[i * 5 + 1] / MEDIAPIPEPOSE_ESTIMATOR_INPUT_RESOLUTION; + float z = estimationOutputBuffer[i * 5 + 2] / MEDIAPIPEPOSE_ESTIMATOR_INPUT_RESOLUTION; + float visibility = estimationOutputBuffer[i * 5 + 3]; + float presence = estimationOutputBuffer[i * 5 + 4]; + + landmarks.Add(new Landmark + { + position = new Vector3(x, y, z), + confidence = Sigmoid(Math.Min(visibility, presence)) + }); ; + + //Debug.Log("i = " + i + ":landmarks[i].position " + landmarks[i].position);//デバック + } + + //Debug.Log(landmarks[0].position);//デバック->(0.5, 0.2, -0.9) + //Debug.Log(landmarks.Count);//デバック->33 + } + + public List GetResult(bool world_cordinate) + { + List result_list = new List(); + int[] keypoint_list ={ + (int)BodyPartIndex.Nose, + (int)BodyPartIndex.LeftEye, + (int)BodyPartIndex.RightEye, + (int)BodyPartIndex.LeftEar, + (int)BodyPartIndex.RightEar, + (int)BodyPartIndex.LeftShoulder, + (int)BodyPartIndex.RightShoulder, + (int)BodyPartIndex.LeftElbow, + (int)BodyPartIndex.RightElbow, + (int)BodyPartIndex.LeftWrist, + (int)BodyPartIndex.RightWrist, + (int)BodyPartIndex.LeftHip, + (int)BodyPartIndex.RightHip, + (int)BodyPartIndex.LeftKnee, + (int)BodyPartIndex.RightKnee, + (int)BodyPartIndex.LeftAnkle, + (int)BodyPartIndex.RightAnkle}; + + if (affine_scale == 0) + { + return result_list; + } + + float cs = (float)Math.Cos(-affine_angle); + float ss = (float)Math.Sin(-affine_angle); + + AiliaPoseEstimator.AILIAPoseEstimatorObjectPose one_pose = new AiliaPoseEstimator.AILIAPoseEstimatorObjectPose(); + one_pose.points = new AiliaPoseEstimator.AILIAPoseEstimatorKeypoint[19]; + for (int i = 0; i < AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_CNT; i++) + { + Vector3 pos = Vector3.zero; + float conf = 0; + if (i <= AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ANKLE_RIGHT) + { + pos = landmarks[keypoint_list[i]].position; + conf = landmarks[keypoint_list[i]].confidence; + //Debug.Log(AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ANKLE_RIGHT);//デバック->16 + //Debug.Log("i" + i);//デバック + //Debug.Log("keypoint_list[i]" + keypoint_list[i]);//デバック + } + if (i == AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER) + { + pos = (landmarks[(int)BodyPartIndex.LeftShoulder].position + landmarks[(int)BodyPartIndex.RightShoulder].position) / 2; + conf = Math.Min(landmarks[(int)BodyPartIndex.LeftShoulder].confidence, landmarks[(int)BodyPartIndex.RightShoulder].confidence); + } + if (i == AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_BODY_CENTER) + { + pos = (landmarks[(int)BodyPartIndex.LeftHip].position + landmarks[(int)BodyPartIndex.RightHip].position + landmarks[(int)BodyPartIndex.LeftShoulder].position + landmarks[(int)BodyPartIndex.RightShoulder].position) / 4; + conf = Math.Min(Math.Min(landmarks[(int)BodyPartIndex.LeftHip].confidence, landmarks[(int)BodyPartIndex.RightHip].confidence), Math.Min(landmarks[(int)BodyPartIndex.LeftShoulder].confidence, landmarks[(int)BodyPartIndex.RightShoulder].confidence)); + } + AiliaPoseEstimator.AILIAPoseEstimatorKeypoint keypoint = new AiliaPoseEstimator.AILIAPoseEstimatorKeypoint(); + if (world_cordinate){ + keypoint.x = pos.x; + keypoint.y = pos.y; + }else{ + keypoint.x = ((pos.x - 0.5f) * cs + (pos.y - 0.5f) * ss) * affine_scale + affine_xc; + keypoint.y = ((pos.x - 0.5f) * -ss + (pos.y - 0.5f) * cs) * affine_scale + affine_yc; + } + keypoint.z_local = pos.z; + keypoint.score = conf; + one_pose.points[i] = keypoint; + + } + result_list.Add(one_pose); + return result_list; + } + + + public static float[] ConvertDoubleArrayToFloatArray(double[] doubleArray) + { + float[] floatArray = new float[doubleArray.Length]; + + for (int i = 0; i < doubleArray.Length; i++) + { + floatArray[i] = (float)doubleArray[i]; + } + + return floatArray; + } + + + + + + + + + + + + + #region IDisposable Support + private bool disposedValue = false; // To detect redundant calls + + protected virtual void Dispose(bool disposing) + { + if (!disposedValue) + { + ailiaPoseDetection.Close(); + ailiaPoseEstimation.Close(); + ailiaPoseDetection = null; + ailiaPoseEstimation = null; + computeTexture?.Release(); + preprocessBuffer?.Release(); + + disposedValue = true; + } + } + + // TODO: override a finalizer only if Dispose(bool disposing) above has code to free unmanaged resources. + ~AiliaMediapipePoseWorldLandmarks() + { + // Do not change this code. Put cleanup code in Dispose(bool disposing) above. + Dispose(false); + } + + // This code added to correctly implement the disposable pattern. + public void Dispose() + { + // Do not change this code. Put cleanup code in Dispose(bool disposing) above. + Dispose(true); + // TODO: uncomment the following line if the finalizer is overridden above. + GC.SuppressFinalize(this); + } + #endregion +} diff --git a/Assets/AXIP/AILIA-MODELS/PoseEstimation/AiliaMediapipePoseWorldLandmarks.cs.meta b/Assets/AXIP/AILIA-MODELS/PoseEstimation/AiliaMediapipePoseWorldLandmarks.cs.meta new file mode 100644 index 0000000..e59f744 --- /dev/null +++ b/Assets/AXIP/AILIA-MODELS/PoseEstimation/AiliaMediapipePoseWorldLandmarks.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c89bad15ef7124d3ca008d6446efce6d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AXIP/AILIA-MODELS/PoseEstimation/AiliaPoseEstimatorsSample.cs b/Assets/AXIP/AILIA-MODELS/PoseEstimation/AiliaPoseEstimatorsSample.cs index 11b4a79..73c81fc 100644 --- a/Assets/AXIP/AILIA-MODELS/PoseEstimation/AiliaPoseEstimatorsSample.cs +++ b/Assets/AXIP/AILIA-MODELS/PoseEstimation/AiliaPoseEstimatorsSample.cs @@ -13,6 +13,7 @@ public enum PoseEstimatorModels { lightweight_human_pose_estimation, blazepose_fullbody, + mediapipe_pose_world_landmarks, pose_resnet } @@ -20,14 +21,18 @@ public enum PoseEstimatorModels private PoseEstimatorModels ailiaModelType = PoseEstimatorModels.lightweight_human_pose_estimation; [SerializeField, HideInInspector] private GameObject UICanvas = null; + //Settings public bool gpu_mode = false; + public bool video_mode = true; public int camera_id = 0; + public Texture2D test_image = null; //Result public Text label_text = null; public Text mode_text = null; public RawImage raw_image = null; + //Preview private Texture2D preview_texture = null; @@ -42,10 +47,15 @@ public enum PoseEstimatorModels private ComputeShader computeShaderBlazepose; private AiliaPoseResnet ailia_pose_resnet; + private AiliaMediapipePoseWorldLandmarks ailia_mediapipepose; + [SerializeField] + private ComputeShader computeShaderMediapipepose; + + // AILIA open file(model file) private bool FileOpened = false; - private void CreateAiliaPoseEstimator() + private void CreateAiliaPoseEstimator() { string asset_path = Application.temporaryCachePath; var urlList = new List(); @@ -87,6 +97,24 @@ private void CreateAiliaPoseEstimator() FileOpened = true; })); + break; + case PoseEstimatorModels.mediapipe_pose_world_landmarks: + var _folder_path = "mediapipe_pose_world_landmarks"; + //var _folder_path = "blazepose-fullbody"; + var _model_name = "pose_landmark_heavy"; + urlList.Add(new ModelDownloadURL() { folder_path = _folder_path, file_name = _model_name + ".onnx"}); + urlList.Add(new ModelDownloadURL() { folder_path = _folder_path, file_name = _model_name + ".onnx.prototxt" }); + urlList.Add(new ModelDownloadURL() { folder_path = _folder_path, file_name = "pose_detection.onnx" }); + urlList.Add(new ModelDownloadURL() { folder_path = _folder_path, file_name = "pose_detection.onnx.prototxt" }); + + StartCoroutine(ailia_download.DownloadWithProgressFromURL(urlList, () => + { + string jsonPath = Application.streamingAssetsPath + "/AILIA"; + ailia_mediapipepose = new AiliaMediapipePoseWorldLandmarks(gpu_mode, asset_path, jsonPath); + ailia_mediapipepose.computeShader = computeShaderMediapipepose; + FileOpened = true; + })); + break; case PoseEstimatorModels.pose_resnet: var pose_folder_path = "pose_resnet"; @@ -143,20 +171,38 @@ void Update() //Capture int tex_width = ailia_camera.GetWidth(); int tex_height = ailia_camera.GetHeight(); + + if (!video_mode) { + tex_width = test_image.width; + tex_height = test_image.height; + } + if (preview_texture == null) { preview_texture = new Texture2D(tex_width, tex_height); raw_image.texture = preview_texture; } + Color32[] camera = ailia_camera.GetPixels32(); + if (!video_mode) { + camera = test_image.GetPixels32(); //入力画像を変更 + } + //Pose estimation long start_time = DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond; List pose=null; + List pose_world=null; if (ailiaModelType == PoseEstimatorModels.blazepose_fullbody) { pose = ailia_blazepose.RunPoseEstimation(camera, tex_width, tex_height); - }else if (ailiaModelType == PoseEstimatorModels.pose_resnet){ + } + else if (ailiaModelType == PoseEstimatorModels.mediapipe_pose_world_landmarks) + { + pose = ailia_mediapipepose.RunPoseEstimation(camera, tex_width, tex_height); + pose_world = ailia_mediapipepose.GetResult(true); + } + else if (ailiaModelType == PoseEstimatorModels.pose_resnet){ pose = ailia_pose_resnet.RunPoseEstimation(camera, tex_width, tex_height); }else{ pose = ailia_pose.ComputePoseFromImageB2T(camera, tex_width, tex_height); @@ -173,27 +219,85 @@ void Update() int r = 2; - DrawBone(Color.red, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_NOSE, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER, r); - DrawBone(Color.yellow, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER, r); - DrawBone(Color.green, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER, r); + if (ailiaModelType == PoseEstimatorModels.lightweight_human_pose_estimation || ailiaModelType == PoseEstimatorModels.blazepose_fullbody) { + DrawBone(Color.red, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_NOSE, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER, r); + DrawBone(Color.yellow, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER, r); + DrawBone(Color.green, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER, r); - DrawBone(Color.red, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EYE_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_NOSE, r); - DrawBone(Color.red, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EYE_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_NOSE, r); - DrawBone(Color.red, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EAR_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EYE_LEFT, r); - DrawBone(Color.red, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EAR_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EYE_RIGHT, r); + DrawBone(Color.red, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EYE_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_NOSE, r); + DrawBone(Color.red, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EYE_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_NOSE, r); + DrawBone(Color.red, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EAR_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EYE_LEFT, r); + DrawBone(Color.red, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EAR_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EYE_RIGHT, r); - DrawBone(Color.yellow, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ELBOW_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_LEFT, r); - DrawBone(Color.green, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ELBOW_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_RIGHT, r); - DrawBone(Color.yellow, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_WRIST_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ELBOW_LEFT, r); - DrawBone(Color.green, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_WRIST_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ELBOW_RIGHT, r); + DrawBone(Color.yellow, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ELBOW_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_LEFT, r); + DrawBone(Color.green, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ELBOW_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_RIGHT, r); + DrawBone(Color.yellow, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_WRIST_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ELBOW_LEFT, r); + DrawBone(Color.green, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_WRIST_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ELBOW_RIGHT, r); - DrawBone(Color.blue, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER, r); - DrawBone(Color.green, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER, r); + DrawBone(Color.blue, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER, r); + DrawBone(Color.green, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER, r); - DrawBone(Color.blue, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_KNEE_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_LEFT, r); - DrawBone(Color.blue, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ANKLE_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_KNEE_LEFT, r); - DrawBone(Color.green, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_KNEE_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_RIGHT, r); - DrawBone(Color.green, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ANKLE_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_KNEE_RIGHT, r); + DrawBone(Color.blue, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_KNEE_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_LEFT, r); + DrawBone(Color.blue, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ANKLE_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_KNEE_LEFT, r); + DrawBone(Color.green, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_KNEE_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_RIGHT, r); + DrawBone(Color.green, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ANKLE_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_KNEE_RIGHT, r); + } + else if (ailiaModelType == PoseEstimatorModels.mediapipe_pose_world_landmarks) + { + //画像へのlandmarkの描画 + DrawBone(Color.white, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_NOSE, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER, r, false); + DrawBone(Color.white, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER, r, false); + DrawBone(Color.white, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER, r, false); + + DrawBone(new Color(0.0f, 179.0f / 255, 255.0f / 255, 1.0f), tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EYE_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_NOSE, r, false); + DrawBone(new Color(248.0f / 255, 123.0f / 255, 0.0f, 1.0f), tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EYE_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_NOSE, r, false); + DrawBone(new Color(0.0f, 179.0f / 255, 255.0f / 255, 1.0f), tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EAR_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EYE_LEFT, r, false); + DrawBone(new Color(248.0f / 255, 123.0f / 255, 0.0f, 1.0f), tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EAR_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EYE_RIGHT, r, false); + + DrawBone(new Color(0.0f, 179.0f / 255, 255.0f / 255, 1.0f), tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ELBOW_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_LEFT, r, false); + DrawBone(new Color(248.0f / 255, 123.0f / 255, 0.0f, 1.0f), tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ELBOW_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_RIGHT, r, false); + DrawBone(new Color(0.0f, 179.0f / 255, 255.0f / 255, 1.0f), tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_WRIST_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ELBOW_LEFT, r, false); + DrawBone(new Color(248.0f / 255, 123.0f / 255, 0.0f, 1.0f), tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_WRIST_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ELBOW_RIGHT, r, false); + + DrawBone(new Color(0.0f, 179.0f / 255, 255.0f / 255, 1.0f), tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER, r, false); + DrawBone(new Color(248.0f / 255, 123.0f / 255, 0.0f, 1.0f), tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER, r, false); + DrawBone(Color.white, tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_RIGHT, r); + + DrawBone(new Color(0.0f, 179.0f / 255, 255.0f / 255, 1.0f), tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_KNEE_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_LEFT, r, false); + DrawBone(new Color(0.0f, 179.0f / 255, 255.0f / 255, 1.0f), tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ANKLE_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_KNEE_LEFT, r, false); + DrawBone(new Color(248.0f / 255, 123.0f / 255, 0.0f, 1.0f), tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_KNEE_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_RIGHT, r, false); + DrawBone(new Color(248.0f / 255, 123.0f / 255, 0.0f, 1.0f), tex_width, tex_height, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ANKLE_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_KNEE_RIGHT, r, false); + + //3次元landmarkの描画 + obj = pose_world[i]; + DrawBone3D(Color.white, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_NOSE, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER); + DrawBone3D(Color.white, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER); + DrawBone3D(Color.white, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_CENTER); + + DrawBone3D(new Color(0.0f, 179.0f / 255, 255.0f / 255, 1.0f), obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EYE_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_NOSE); + DrawBone3D(new Color(248.0f / 255, 123.0f / 255, 0.0f, 1.0f), obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EYE_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_NOSE); + DrawBone3D(new Color(0.0f, 179.0f / 255, 255.0f / 255, 1.0f), obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EAR_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EYE_LEFT); + DrawBone3D(new Color(248.0f / 255, 123.0f / 255, 0.0f, 1.0f), obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EAR_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_EYE_RIGHT); + + DrawBone3D(new Color(0.0f, 179.0f / 255, 255.0f / 255, 1.0f), obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ELBOW_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_LEFT); + DrawBone3D(new Color(248.0f / 255, 123.0f / 255, 0.0f, 1.0f), obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ELBOW_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_RIGHT); + DrawBone3D(new Color(0.0f, 179.0f / 255, 255.0f / 255, 1.0f), obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_WRIST_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ELBOW_LEFT); + DrawBone3D(new Color(248.0f / 255, 123.0f / 255, 0.0f, 1.0f), obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_WRIST_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ELBOW_RIGHT); + + DrawBone3D(new Color(0.0f, 179.0f / 255, 255.0f / 255, 1.0f), obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_LEFT); + DrawBone3D(new Color(248.0f / 255, 123.0f / 255, 0.0f, 1.0f), obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_SHOULDER_RIGHT); + DrawBone3D(Color.white, obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_RIGHT); + + DrawBone3D(new Color(0.0f, 179.0f / 255, 255.0f / 255, 1.0f), obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_KNEE_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_LEFT); + DrawBone3D(new Color(0.0f, 179.0f / 255, 255.0f / 255, 1.0f), obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ANKLE_LEFT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_KNEE_LEFT); + DrawBone3D(new Color(248.0f / 255, 123.0f / 255, 0.0f, 1.0f), obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_KNEE_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_RIGHT); + DrawBone3D(new Color(248.0f / 255, 123.0f / 255, 0.0f, 1.0f), obj, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_ANKLE_RIGHT, AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_KNEE_RIGHT); + + + //3次元座標軸の描画 + DrawAxis3D(obj); + } + } //Apply diff --git a/Assets/AXIP/AILIA-MODELS/PoseEstimation/PoseEstimationSample.unity b/Assets/AXIP/AILIA-MODELS/PoseEstimation/PoseEstimationSample.unity index c46566a..b8dd92c 100644 --- a/Assets/AXIP/AILIA-MODELS/PoseEstimation/PoseEstimationSample.unity +++ b/Assets/AXIP/AILIA-MODELS/PoseEstimation/PoseEstimationSample.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_IndirectSpecularColor: {r: 0.44657815, g: 0.49641192, b: 0.57481617, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -121,6 +121,99 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &247495983 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 247495987} + - component: {fileID: 247495986} + - component: {fileID: 247495985} + - component: {fileID: 247495984} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!135 &247495984 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 247495983} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &247495985 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 247495983} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d6c3921185749421c9d6d5e0bb1b27a8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &247495986 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 247495983} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &247495987 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 247495983} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -71, y: 5.1, z: 86.7} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 978718656} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &489979542 GameObject: m_ObjectHideFlags: 0 @@ -211,7 +304,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 1 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} --- !u!1 &663354113 GameObject: @@ -277,8 +370,79 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 2 + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &687453600 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 687453601} + - component: {fileID: 687453603} + - component: {fileID: 687453602} + m_Layer: 5 + m_Name: RawImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &687453601 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687453600} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1821187752} + m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 680, y: -150} + m_SizeDelta: {x: 500, y: 500} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &687453602 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687453600} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Texture: {fileID: 8400000, guid: 934253b210fbf49ef974cb4d043c0039, type: 2} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!222 &687453603 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 687453600} + m_CullTransparentMesh: 0 --- !u!1 &900571246 GameObject: m_ObjectHideFlags: 0 @@ -342,7 +506,7 @@ Camera: field of view: 60 orthographic: 0 orthographic size: 5 - m_Depth: -1 + m_Depth: 1 m_CullingMask: serializedVersion: 2 m_Bits: 4294967295 @@ -371,6 +535,68 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 180} +--- !u!1 &968090148 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 968090149} + m_Layer: 0 + m_Name: Lines3D + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &968090149 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 968090148} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1624314558} + m_Father: {fileID: 1794486149} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &978718655 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 978718656} + m_Layer: 0 + m_Name: Spheres + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &978718656 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 978718655} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 247495987} + m_Father: {fileID: 1794486149} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1393556303 GameObject: m_ObjectHideFlags: 0 @@ -400,7 +626,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1393556305 MonoBehaviour: @@ -419,15 +645,191 @@ MonoBehaviour: line: {fileID: 0} text_panel: {fileID: 1813464806} text_base: {fileID: 1813464805} - ailiaModelType: 1 + spheres: {fileID: 978718655} + sphere: {fileID: 247495983} + sphereObjectBuffer: [] + sphereObjectBufferIndex: 0 + lines3D: {fileID: 968090148} + line3D: {fileID: 1624314557} + axisSphereObjectBuffer: [] + axisSphereObjectBufferIndex: 0 + drawPos: {x: 0, y: 0, z: 140} + scale: 20 + time: 0 + ailiaModelType: 2 UICanvas: {fileID: 1821187748} - gpu_mode: 1 + gpu_mode: 0 + video_mode: 0 camera_id: 0 + test_image: {fileID: 2800000, guid: 078ea4688b34f4ff9b92afa7fd2062fd, type: 3} label_text: {fileID: 1813464804} mode_text: {fileID: 1813464803} raw_image: {fileID: 1813464809} computeShaderBlazepose: {fileID: 7200000, guid: cd27272e68d57fa4e85805ce266aa399, type: 3} + computeShaderMediapipepose: {fileID: 7200000, guid: cd27272e68d57fa4e85805ce266aa399, + type: 3} +--- !u!1 &1624314557 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1624314558} + - component: {fileID: 1624314559} + m_Layer: 0 + m_Name: Line3D + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1624314558 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1624314557} + m_LocalRotation: {x: -0, y: -0, z: 1, w: 0} + m_LocalPosition: {x: 42.766685, y: 42.766685, z: 90} + m_LocalScale: {x: 0.106916726, y: 0.106916726, z: 0.106916726} + m_Children: [] + m_Father: {fileID: 968090149} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!120 &1624314559 +LineRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1624314557} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9850adc21eb504815a1f9e501a272b37, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 100, y: 100, z: 0} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 0, b: 0, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + shadowBias: 0 + generateLightingData: 0 + m_UseWorldSpace: 1 + m_Loop: 0 +--- !u!1 &1794486148 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1794486149} + m_Layer: 0 + m_Name: Landmark3D + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1794486149 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1794486148} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 978718656} + - {fileID: 968090149} + - {fileID: 2023448842} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &1813464802 PrefabInstance: m_ObjectHideFlags: 0 @@ -453,7 +855,7 @@ PrefabInstance: - target: {fileID: 224061873275276470, guid: b13fba7fbe84549eaad325ff3431cb6f, type: 3} propertyPath: m_RootOrder - value: 4 + value: 5 objectReference: {fileID: 0} - target: {fileID: 224061873275276470, guid: b13fba7fbe84549eaad325ff3431cb6f, type: 3} @@ -530,6 +932,16 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 224854713322925256, guid: b13fba7fbe84549eaad325ff3431cb6f, + type: 3} + propertyPath: m_AnchoredPosition.x + value: -468 + objectReference: {fileID: 0} + - target: {fileID: 224854713322925256, guid: b13fba7fbe84549eaad325ff3431cb6f, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -467 + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: b13fba7fbe84549eaad325ff3431cb6f, type: 3} --- !u!114 &1813464803 stripped @@ -598,3 +1010,186 @@ GameObject: type: 3} m_PrefabInstance: {fileID: 1813464802} m_PrefabAsset: {fileID: 0} +--- !u!224 &1821187752 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 224061873275276470, guid: b13fba7fbe84549eaad325ff3431cb6f, + type: 3} + m_PrefabInstance: {fileID: 1813464802} + m_PrefabAsset: {fileID: 0} +--- !u!1 &2020930396 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2020930399} + - component: {fileID: 2020930398} + - component: {fileID: 2020930397} + m_Layer: 0 + m_Name: Sub Camera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &2020930397 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2020930396} + m_Enabled: 0 +--- !u!20 &2020930398 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2020930396} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 1, g: 1, b: 1, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 8400000, guid: 934253b210fbf49ef974cb4d043c0039, type: 2} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &2020930399 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2020930396} + m_LocalRotation: {x: 0.000000016320225, y: 0.08715578, z: 0.9961947, w: -0.00000018654096} + m_LocalPosition: {x: 0, y: -10, z: 100} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: -10, y: 0, z: 180.00002} +--- !u!1 &2023448841 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2023448842} + - component: {fileID: 2023448845} + - component: {fileID: 2023448844} + - component: {fileID: 2023448843} + m_Layer: 0 + m_Name: HidePlane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2023448842 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2023448841} + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0.6, y: 0.3, z: 91} + m_LocalScale: {x: 18, y: 1, z: 10} + m_Children: [] + m_Father: {fileID: 1794486149} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!64 &2023448843 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2023448841} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &2023448844 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2023448841} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &2023448845 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2023448841} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Assets/AXIP/AILIA-MODELS/PoseEstimation/RenderTexture.renderTexture b/Assets/AXIP/AILIA-MODELS/PoseEstimation/RenderTexture.renderTexture new file mode 100644 index 0000000..27dd959 --- /dev/null +++ b/Assets/AXIP/AILIA-MODELS/PoseEstimation/RenderTexture.renderTexture @@ -0,0 +1,37 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!84 &8400000 +RenderTexture: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: RenderTexture + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + serializedVersion: 3 + m_Width: 256 + m_Height: 256 + m_AntiAliasing: 1 + m_MipCount: -1 + m_DepthFormat: 2 + m_ColorFormat: 8 + m_MipMap: 0 + m_GenerateMips: 1 + m_SRGB: 0 + m_UseDynamicScale: 0 + m_BindMS: 0 + m_EnableCompatibleFormat: 1 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 0 + m_MipBias: 0 + m_WrapU: 1 + m_WrapV: 1 + m_WrapW: 1 + m_Dimension: 2 + m_VolumeDepth: 1 diff --git a/Assets/AXIP/AILIA-MODELS/PoseEstimation/RenderTexture.renderTexture.meta b/Assets/AXIP/AILIA-MODELS/PoseEstimation/RenderTexture.renderTexture.meta new file mode 100644 index 0000000..ade6cf2 --- /dev/null +++ b/Assets/AXIP/AILIA-MODELS/PoseEstimation/RenderTexture.renderTexture.meta @@ -0,0 +1,15 @@ +fileFormatVersion: 2 +<<<<<<<< HEAD:Assets/AXIP/AILIA-MODELS/PoseEstimation/RenderTexture.renderTexture.meta +guid: 934253b210fbf49ef974cb4d043c0039 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 +======== +guid: 9c1574179dada4e01ba17d8e9e542397 +folderAsset: yes +DefaultImporter: + externalObjects: {} +>>>>>>>> master:Assets/AXIP/AILIA-MODELS/AudioProcessing.meta + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AXIP/AILIA-MODELS/PoseEstimation/SampleImage.png b/Assets/AXIP/AILIA-MODELS/PoseEstimation/SampleImage.png new file mode 100644 index 0000000..af6784e Binary files /dev/null and b/Assets/AXIP/AILIA-MODELS/PoseEstimation/SampleImage.png differ diff --git a/Assets/AXIP/AILIA-MODELS/PoseEstimation/SampleImage.png.meta b/Assets/AXIP/AILIA-MODELS/PoseEstimation/SampleImage.png.meta new file mode 100644 index 0000000..421aa66 --- /dev/null +++ b/Assets/AXIP/AILIA-MODELS/PoseEstimation/SampleImage.png.meta @@ -0,0 +1,116 @@ +fileFormatVersion: 2 +guid: 078ea4688b34f4ff9b92afa7fd2062fd +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AXIP/AILIA-MODELS/PoseEstimation/demo.png b/Assets/AXIP/AILIA-MODELS/PoseEstimation/demo.png new file mode 100644 index 0000000..6902885 Binary files /dev/null and b/Assets/AXIP/AILIA-MODELS/PoseEstimation/demo.png differ diff --git a/Assets/AXIP/AILIA-MODELS/PoseEstimation/demo.png.meta b/Assets/AXIP/AILIA-MODELS/PoseEstimation/demo.png.meta new file mode 100644 index 0000000..d7770fa --- /dev/null +++ b/Assets/AXIP/AILIA-MODELS/PoseEstimation/demo.png.meta @@ -0,0 +1,159 @@ +fileFormatVersion: 2 +guid: 48520095487e54182a3f455650e764b9 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 1 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AXIP/AILIA-MODELS/common/Scripts/AiliaRenderer.cs b/Assets/AXIP/AILIA-MODELS/common/Scripts/AiliaRenderer.cs old mode 100755 new mode 100644 index a5a06c4..2d9f5f8 --- a/Assets/AXIP/AILIA-MODELS/common/Scripts/AiliaRenderer.cs +++ b/Assets/AXIP/AILIA-MODELS/common/Scripts/AiliaRenderer.cs @@ -1,342 +1,698 @@ -using ailiaSDK; -using System.Collections; -using System.Collections.Generic; -using System; -using UnityEngine; -using UnityEngine.UI; - -using ailia; - -namespace ailiaSDK -{ - public class AiliaRenderer : MonoBehaviour - { - public GameObject line_panel; //LinePanel - public GameObject lines; //LinePanel/Lines - public GameObject line; // Line to instiate - public GameObject text_panel; //TextPanel - public GameObject text_base; //TextPanel/Text - List textObjectBuffer = new List(); - int textObjectBufferIndex = 0; - List lineObjectBuffer = new List(); - int lineObjectBufferIndex = 0; - - public void Clear() - { - for (int i = lineObjectBufferIndex; i < lineObjectBuffer.Count; i++) - { - lineObjectBuffer[i].SetActive(false); - } - lineObjectBufferIndex = 0; - - for (int i = textObjectBufferIndex; i < textObjectBuffer.Count; i++) - { - textObjectBuffer[i].SetActive(false); - } - textObjectBufferIndex = 0; - } - - public void DrawBone(Color32 color, int tex_width, int tex_height, AiliaPoseEstimator.AILIAPoseEstimatorObjectPose obj, uint from, uint to, int r) - { - float th = 0.1f; - if (obj.points[from].score <= th || obj.points[to].score <= th) - { - return; - } - - int from_x = (int)(tex_width * obj.points[from].x); - int from_y = (int)(tex_height * obj.points[from].y); - int to_x = (int)(tex_width * obj.points[to].x); - int to_y = (int)(tex_height * obj.points[to].y); - - int len = (to_x - from_x) * (to_x - from_x) + (to_y - from_y) * (to_y - from_y); - len = (int)Mathf.Sqrt(len); - - DrawLine(color, from_x, from_y, obj.points[from].z_local, to_x, to_y, obj.points[to].z_local, tex_width, tex_height); - } - - public void DrawLine(Color32 color, int from_x, int from_y, float from_z, int to_x, int to_y, float to_z, int tex_width, int tex_height, float thickness = 1.0f) - { - RectTransform panelRect = line_panel.GetComponent(); - float width = panelRect.rect.width; - float height = panelRect.rect.height; - - int r = 2; - - if (from_x < r) from_x = r; - if (from_y < r) from_y = r; - if (from_x > tex_width - r) from_x = tex_width - r; - if (from_y > tex_height - r) from_y = tex_height - r; - - if (to_x < r) to_x = r; - if (to_y < r) to_y = r; - if (to_x > tex_width - r) to_x = tex_width - r; - if (to_y > tex_height - r) to_y = tex_height - r; - - RectTransform canvasRect = line_panel.transform.parent.GetComponent(); - - float delta = 0.0001f; - - // Bottom Left - Vector3 pointPos1 = line_panel.transform.position; - pointPos1.x += width * (-0.5f + 1.0f - 1.0f * from_x / tex_width) * canvasRect.localScale.x; - pointPos1.y += height * (-0.5f + 1.0f * from_y / tex_height) * canvasRect.localScale.y; - pointPos1.z += delta; - - // Top Right - Vector3 pointPos2 = line_panel.transform.position; - pointPos2.x += width * (-0.5f + 1.0f - 1.0f * to_x / tex_width) * canvasRect.localScale.x; - pointPos2.y += height * (-0.5f + 1.0f * to_y / tex_height) * canvasRect.localScale.y; - pointPos2.z += delta; - - GameObject newLine; - LineRenderer lRend; - if (lineObjectBufferIndex < lineObjectBuffer.Count) - { - newLine = lineObjectBuffer[lineObjectBufferIndex]; - lRend = newLine.GetComponent(); - } - else - { - newLine = Instantiate(line, lines.gameObject.transform); - newLine.layer = lines.gameObject.layer; - lRend = newLine.GetComponent(); - lineObjectBuffer.Add(newLine); - } - lineObjectBufferIndex++; - newLine.SetActive(true); - - Color32 c1 = color; - //c1.a = 128 + 32; - - lRend.startColor = c1; - lRend.endColor = c1; - - float base_width = r / 2.0f * thickness; - - //from_z = 0; - //to_z = 0; - - lRend.positionCount = 2; - lRend.startWidth = System.Math.Max((-from_z * 10 + 1),1) * base_width; - lRend.endWidth = System.Math.Max((-to_z * 10 + 1),1) * base_width; - - Vector3 startVec = pointPos1; - Vector3 endVec = pointPos2; - lRend.SetPosition(0, startVec); - lRend.SetPosition(1, endVec); - } - - public void DrawEdgeOfRect2D(Color32 color, int from_x, int from_y, int to_x, int to_y, int tex_width, int tex_height) - { - RectTransform panelRect = line_panel.GetComponent(); - float width = panelRect.rect.width; - float height = panelRect.rect.height; - - int r = 2; - float lineW = 1.0f; - - if (from_x < r) from_x = r; - if (from_y < r) from_y = r; - if (from_x > tex_width - r) from_x = tex_width - r; - if (from_y > tex_height - r) from_y = tex_height - r; - - if (to_x < r) to_x = r; - if (to_y < r) to_y = r; - if (to_x > tex_width - r) to_x = tex_width - r; - if (to_y > tex_height - r) to_y = tex_height - r; - - float expand_x = from_y == to_y ? lineW / 2 : 0.0f; - float expand_y = from_x == to_x ? lineW / 2 : 0.0f; - - RectTransform canvasRect = line_panel.transform.parent.GetComponent(); - - float delta = 0.0001f; - - // Bottom Left - Vector3 pointPos1 = line_panel.transform.position; - pointPos1.x += width * (-0.5f + 1.0f - 1.0f * from_x / tex_width) * canvasRect.localScale.x + expand_x; - pointPos1.y += height * (-0.5f + 1.0f * from_y / tex_height) * canvasRect.localScale.y + expand_y; - pointPos1.z += delta; - - // Top Right - Vector3 pointPos2 = line_panel.transform.position; - pointPos2.x += width * (-0.5f + 1.0f - 1.0f * to_x / tex_width) * canvasRect.localScale.x - expand_x; - pointPos2.y += height * (-0.5f + 1.0f * to_y / tex_height) * canvasRect.localScale.y - expand_y; - pointPos2.z += delta; - - GameObject newLine; - LineRenderer lRend; - if (lineObjectBufferIndex < lineObjectBuffer.Count) - { - newLine = lineObjectBuffer[lineObjectBufferIndex]; - lRend = newLine.GetComponent(); - } - else - { - newLine = Instantiate(line, lines.gameObject.transform); - newLine.layer = lines.gameObject.layer; - lRend = newLine.GetComponent(); - lineObjectBuffer.Add(newLine); - } - lineObjectBufferIndex++; - newLine.SetActive(true); - - Color32 c1 = color; - c1.a = 160; - - lRend.startColor = c1; - lRend.endColor = c1; - - lRend.positionCount = 2; - lRend.startWidth = lineW; - lRend.endWidth = lineW; - Vector3 startVec = pointPos1; - Vector3 endVec = pointPos2; - lRend.SetPosition(0, startVec); - lRend.SetPosition(1, endVec); - } - - public void AppendEdgeOfRect2D(Color32 color, int from_x, int from_y, int tex_width, int tex_height, LineRenderer lRend) - { - RectTransform panelRect = line_panel.GetComponent(); - float width = panelRect.rect.width; - float height = panelRect.rect.height; - - int r = 2; - - if (from_x < r) from_x = r; - if (from_y < r) from_y = r; - if (from_x > tex_width - r) from_x = tex_width - r; - if (from_y > tex_height - r) from_y = tex_height - r; - - RectTransform canvasRect = line_panel.transform.parent.GetComponent(); - - float delta = 0.0001f; - - // Bottom Left - Vector3 pointPos1 = line_panel.transform.position; - pointPos1.x += width * (-0.5f + 1.0f - 1.0f * from_x / tex_width) * canvasRect.localScale.x; - pointPos1.y += height * (-0.5f + 1.0f * from_y / tex_height) * canvasRect.localScale.y; - pointPos1.z += delta; - - int jointPositionCount = lRend.positionCount; - lRend.positionCount = lRend.positionCount + 1; - - Vector3 startVec = pointPos1; - lRend.SetPosition(jointPositionCount, startVec); - } - - public void DrawRect2D(Color32 color, int x, int y, int w, int h, int tex_width, int tex_height, float line_width = 1.0f) - { - GameObject newLine; - LineRenderer lRend; - if (lineObjectBufferIndex < lineObjectBuffer.Count) - { - newLine = lineObjectBuffer[lineObjectBufferIndex]; - lRend = newLine.GetComponent(); - } - else - { - newLine = Instantiate(line, lines.gameObject.transform); - newLine.layer = lines.gameObject.layer; - lRend = newLine.GetComponent(); - lineObjectBuffer.Add(newLine); - } - lineObjectBufferIndex++; - - lRend.positionCount = 0; - lRend.loop = true; - - Color32 c1 = color; - c1.a = 160; - - lRend.startColor = c1; - lRend.endColor = c1; - - float lineW = line_width; - lRend.startWidth = lineW; - lRend.endWidth = lineW; - - AppendEdgeOfRect2D(color, x, y, tex_width, tex_height, lRend); - AppendEdgeOfRect2D(color, x, y + h, tex_width, tex_height, lRend); - AppendEdgeOfRect2D(color, x + w, y + h, tex_width, tex_height, lRend); - AppendEdgeOfRect2D(color, x + w, y, tex_width, tex_height, lRend); - - newLine.SetActive(true); - } - - public void DrawAffine2D(Color32 color, int x, int y, int w, int h, int tex_width, int tex_height, float theta) - { - GameObject newLine; - LineRenderer lRend; - if (lineObjectBufferIndex < lineObjectBuffer.Count) - { - newLine = lineObjectBuffer[lineObjectBufferIndex]; - lRend = newLine.GetComponent(); - } - else - { - newLine = Instantiate(line, lines.gameObject.transform); - newLine.layer = lines.gameObject.layer; - lRend = newLine.GetComponent(); - lineObjectBuffer.Add(newLine); - } - lineObjectBufferIndex++; - - lRend.positionCount = 0; - lRend.loop = true; - - Color32 c1 = color; - c1.a = 160; - - lRend.startColor = c1; - lRend.endColor = c1; - - float lineW = 1.0f; - lRend.startWidth = lineW; - lRend.endWidth = lineW; - - float cs = (float)System.Math.Cos(-theta); - float ss = (float)System.Math.Sin(-theta); - - AppendEdgeOfRect2D(color, (int)(x + w/2 + w/2 * cs + h/2 * ss), (int)(y + h/2 + w/2 * -ss + h/2 * cs), tex_width, tex_height, lRend); - AppendEdgeOfRect2D(color, (int)(x + w/2 - w/2 * cs + h/2 * ss), (int)(y + h/2 - w/2 * -ss + h/2 * cs), tex_width, tex_height, lRend); - AppendEdgeOfRect2D(color, (int)(x + w/2 - w/2 * cs - h/2 * ss), (int)(y + h/2 - w/2 * -ss - h/2 * cs), tex_width, tex_height, lRend); - AppendEdgeOfRect2D(color, (int)(x + w/2 + w/2 * cs - h/2 * ss), (int)(y + h/2 + w/2 * -ss - h/2 * cs), tex_width, tex_height, lRend); - - newLine.SetActive(true); - } - - public void DrawText(Color color, string text, int x, int y, int tex_width, int tex_height, float alpha = 160/255.0f, float scale = 1.0f, Color text_color = default(Color)) - { - RectTransform panelRect = line_panel.GetComponent(); - float width = panelRect.rect.width; - float height = panelRect.rect.height; - - int r = 2; - if (x < r) x = r; - if (y < r) y = r; - - GameObject text_object = null; - if (textObjectBufferIndex < textObjectBuffer.Count) - { - text_object = textObjectBuffer[textObjectBufferIndex]; - } - else - { - text_object = GameObject.Instantiate(text_base, text_panel.gameObject.transform); - textObjectBuffer.Add(text_object); - } - textObjectBufferIndex++; - - text_object.SetActive(true); - text_object.transform.GetChild(0).GetComponent().text = text; - text_object.transform.GetChild(0).GetComponent().color = (text_color == default(Color)) ? Color.black : text_color; - color.a = alpha; - text_object.GetComponent().color = color; - text_object.GetComponent().anchoredPosition = new Vector2(x * width / tex_width, -y * height / tex_height); - text_object.GetComponent().localScale = new Vector3(scale, scale, 1); - } - } +using ailiaSDK; +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using UnityEngine.UI; + +using ailia; + +namespace ailiaSDK +{ + public class AiliaRenderer : MonoBehaviour + { + public GameObject line_panel; //LinePanel + public GameObject lines; //LinePanel/Lines + public GameObject line; //Line to instiate + public GameObject text_panel; //TextPanel + public GameObject text_base; //TextPanel/Text + List textObjectBuffer = new List(); + int textObjectBufferIndex = 0; + List lineObjectBuffer = new List(); + int lineObjectBufferIndex = 0; + + //追加 + public GameObject spheres; //Spheres + public GameObject sphere; //Sphere to instiate + public List sphereObjectBuffer = new List(); + public int sphereObjectBufferIndex = 0; + + //追加 + public GameObject lines3D; + public GameObject line3D; + List lineObjectBuffer3D = new List(); + int lineObjectBufferIndex3D = 0; + + //追加 座標系の描画用 + public List axisSphereObjectBuffer = new List(); + public int axisSphereObjectBufferIndex = 0; + List axisLineObjectBuffer3D = new List(); + int axisLineObjectBufferIndex3D = 0; + + public Vector3 drawPos = new Vector3(0.0f, 0.0f, 120.0f); //3次元landmarkの原点 + public float scale = 20; //3次元landmarkの原点の倍率 + public float time = 0; //3次元landmarkを回転させるために実行してからの経過時間を保持する + + private List LANDMARK_LEFT = new List() { 1, 3, 5, 7, 9, 11, 13, 15 }; + private List LANDMARK_RIGHT = new List() { 2, 4, 6, 8, 10, 12, 14, 16 }; + + public void Clear() + { + for (int i = lineObjectBufferIndex; i < lineObjectBuffer.Count; i++) + { + lineObjectBuffer[i].SetActive(false); + } + lineObjectBufferIndex = 0; + + for (int i = textObjectBufferIndex; i < textObjectBuffer.Count; i++) + { + textObjectBuffer[i].SetActive(false); + } + textObjectBufferIndex = 0; + + //追加 + for (int i = sphereObjectBufferIndex; i < sphereObjectBuffer.Count; i++) + { + sphereObjectBuffer[i].SetActive(false); + } + sphereObjectBufferIndex = 0; + + //追加 + for (int i = lineObjectBufferIndex3D; i < lineObjectBuffer3D.Count; i++) + { + lineObjectBuffer3D[i].SetActive(false); + } + lineObjectBufferIndex3D = 0; + + //追加 + for (int i = axisSphereObjectBufferIndex; i < axisSphereObjectBuffer.Count; i++) + { + axisSphereObjectBuffer[i].SetActive(false); + } + axisSphereObjectBufferIndex = 0; + + //追加 + for (int i = axisLineObjectBufferIndex3D; i < axisLineObjectBuffer3D.Count; i++) + { + axisLineObjectBuffer3D[i].SetActive(false); + } + axisLineObjectBufferIndex3D = 0; + } + + public void DrawBone(Color32 color, int tex_width, int tex_height, AiliaPoseEstimator.AILIAPoseEstimatorObjectPose obj, uint from, uint to, int r, bool is_z_local = true) + { + float th = 0.1f; + if (obj.points[from].score <= th || obj.points[to].score <= th) + { + return; + } + + int from_x = (int)(tex_width * obj.points[from].x); + int from_y = (int)(tex_height * obj.points[from].y); + int to_x = (int)(tex_width * obj.points[to].x); + int to_y = (int)(tex_height * obj.points[to].y); + + int len = (to_x - from_x) * (to_x - from_x) + (to_y - from_y) * (to_y - from_y); + len = (int)Mathf.Sqrt(len); + + if (is_z_local) { + DrawLine(color, from_x, from_y, obj.points[from].z_local, to_x, to_y, obj.points[to].z_local, tex_width, tex_height); + } + else + { + DrawLine(color, from_x, from_y, 0, to_x, to_y, 0, tex_width, tex_height); + } + } + + public void DrawLine(Color32 color, int from_x, int from_y, float from_z, int to_x, int to_y, float to_z, int tex_width, int tex_height, float thickness = 1.0f) + { + RectTransform panelRect = line_panel.GetComponent(); + float width = panelRect.rect.width; + float height = panelRect.rect.height; + + int r = 2; + + if (from_x < r) from_x = r; + if (from_y < r) from_y = r; + if (from_x > tex_width - r) from_x = tex_width - r; + if (from_y > tex_height - r) from_y = tex_height - r; + + if (to_x < r) to_x = r; + if (to_y < r) to_y = r; + if (to_x > tex_width - r) to_x = tex_width - r; + if (to_y > tex_height - r) to_y = tex_height - r; + + RectTransform canvasRect = line_panel.transform.parent.GetComponent(); + + float delta = 0.0001f; + + // Bottom Left + Vector3 pointPos1 = line_panel.transform.position; + pointPos1.x += width * (-0.5f + 1.0f - 1.0f * from_x / tex_width) * canvasRect.localScale.x; + pointPos1.y += height * (-0.5f + 1.0f * from_y / tex_height) * canvasRect.localScale.y; + pointPos1.z += delta; + + // Top Right + Vector3 pointPos2 = line_panel.transform.position; + pointPos2.x += width * (-0.5f + 1.0f - 1.0f * to_x / tex_width) * canvasRect.localScale.x; + pointPos2.y += height * (-0.5f + 1.0f * to_y / tex_height) * canvasRect.localScale.y; + pointPos2.z += delta; + + GameObject newLine; + LineRenderer lRend; + if (lineObjectBufferIndex < lineObjectBuffer.Count) + { + newLine = lineObjectBuffer[lineObjectBufferIndex]; + lRend = newLine.GetComponent(); + } + else + { + newLine = Instantiate(line, lines.gameObject.transform); + newLine.layer = lines.gameObject.layer; + lRend = newLine.GetComponent(); + lineObjectBuffer.Add(newLine); + } + lineObjectBufferIndex++; + newLine.SetActive(true); + + Color32 c1 = color; + //c1.a = 128 + 32; + + lRend.startColor = c1; + lRend.endColor = c1; + + float base_width = r / 2.0f * thickness; + + //from_z = 0; + //to_z = 0; + + lRend.positionCount = 2; + lRend.startWidth = System.Math.Max((-from_z * 10 + 1), 1) * base_width; + lRend.endWidth = System.Math.Max((-to_z * 10 + 1), 1) * base_width; + + Vector3 startVec = pointPos1; + Vector3 endVec = pointPos2; + lRend.SetPosition(0, startVec); + lRend.SetPosition(1, endVec); + } + + public void DrawEdgeOfRect2D(Color32 color, int from_x, int from_y, int to_x, int to_y, int tex_width, int tex_height) + { + RectTransform panelRect = line_panel.GetComponent(); + float width = panelRect.rect.width; + float height = panelRect.rect.height; + + int r = 2; + float lineW = 1.0f; + + if (from_x < r) from_x = r; + if (from_y < r) from_y = r; + if (from_x > tex_width - r) from_x = tex_width - r; + if (from_y > tex_height - r) from_y = tex_height - r; + + if (to_x < r) to_x = r; + if (to_y < r) to_y = r; + if (to_x > tex_width - r) to_x = tex_width - r; + if (to_y > tex_height - r) to_y = tex_height - r; + + float expand_x = from_y == to_y ? lineW / 2 : 0.0f; + float expand_y = from_x == to_x ? lineW / 2 : 0.0f; + + RectTransform canvasRect = line_panel.transform.parent.GetComponent(); + + float delta = 0.0001f; + + // Bottom Left + Vector3 pointPos1 = line_panel.transform.position; + pointPos1.x += width * (-0.5f + 1.0f - 1.0f * from_x / tex_width) * canvasRect.localScale.x + expand_x; + pointPos1.y += height * (-0.5f + 1.0f * from_y / tex_height) * canvasRect.localScale.y + expand_y; + pointPos1.z += delta; + + // Top Right + Vector3 pointPos2 = line_panel.transform.position; + pointPos2.x += width * (-0.5f + 1.0f - 1.0f * to_x / tex_width) * canvasRect.localScale.x - expand_x; + pointPos2.y += height * (-0.5f + 1.0f * to_y / tex_height) * canvasRect.localScale.y - expand_y; + pointPos2.z += delta; + + GameObject newLine; + LineRenderer lRend; + if (lineObjectBufferIndex < lineObjectBuffer.Count) + { + newLine = lineObjectBuffer[lineObjectBufferIndex]; + lRend = newLine.GetComponent(); + } + else + { + newLine = Instantiate(line, lines.gameObject.transform); + newLine.layer = lines.gameObject.layer; + lRend = newLine.GetComponent(); + lineObjectBuffer.Add(newLine); + } + lineObjectBufferIndex++; + newLine.SetActive(true); + + Color32 c1 = color; + c1.a = 160; + + lRend.startColor = c1; + lRend.endColor = c1; + + lRend.positionCount = 2; + lRend.startWidth = lineW; + lRend.endWidth = lineW; + Vector3 startVec = pointPos1; + Vector3 endVec = pointPos2; + lRend.SetPosition(0, startVec); + lRend.SetPosition(1, endVec); + } + + public void AppendEdgeOfRect2D(Color32 color, int from_x, int from_y, int tex_width, int tex_height, LineRenderer lRend) + { + RectTransform panelRect = line_panel.GetComponent(); + float width = panelRect.rect.width; + float height = panelRect.rect.height; + + int r = 2; + + if (from_x < r) from_x = r; + if (from_y < r) from_y = r; + if (from_x > tex_width - r) from_x = tex_width - r; + if (from_y > tex_height - r) from_y = tex_height - r; + + RectTransform canvasRect = line_panel.transform.parent.GetComponent(); + + float delta = 0.0001f; + + // Bottom Left + Vector3 pointPos1 = line_panel.transform.position; + pointPos1.x += width * (-0.5f + 1.0f - 1.0f * from_x / tex_width) * canvasRect.localScale.x; + pointPos1.y += height * (-0.5f + 1.0f * from_y / tex_height) * canvasRect.localScale.y; + pointPos1.z += delta; + + int jointPositionCount = lRend.positionCount; + lRend.positionCount = lRend.positionCount + 1; + + Vector3 startVec = pointPos1; + lRend.SetPosition(jointPositionCount, startVec); + } + + public void DrawRect2D(Color32 color, int x, int y, int w, int h, int tex_width, int tex_height, float line_width = 1.0f) + { + GameObject newLine; + LineRenderer lRend; + if (lineObjectBufferIndex < lineObjectBuffer.Count) + { + newLine = lineObjectBuffer[lineObjectBufferIndex]; + lRend = newLine.GetComponent(); + } + else + { + newLine = Instantiate(line, lines.gameObject.transform); + newLine.layer = lines.gameObject.layer; + lRend = newLine.GetComponent(); + lineObjectBuffer.Add(newLine); + } + lineObjectBufferIndex++; + + lRend.positionCount = 0; + lRend.loop = true; + + Color32 c1 = color; + c1.a = 160; + + lRend.startColor = c1; + lRend.endColor = c1; + + float lineW = line_width; + lRend.startWidth = lineW; + lRend.endWidth = lineW; + + AppendEdgeOfRect2D(color, x, y, tex_width, tex_height, lRend); + AppendEdgeOfRect2D(color, x, y + h, tex_width, tex_height, lRend); + AppendEdgeOfRect2D(color, x + w, y + h, tex_width, tex_height, lRend); + AppendEdgeOfRect2D(color, x + w, y, tex_width, tex_height, lRend); + + newLine.SetActive(true); + } + + public void DrawAffine2D(Color32 color, int x, int y, int w, int h, int tex_width, int tex_height, float theta) + { + GameObject newLine; + LineRenderer lRend; + if (lineObjectBufferIndex < lineObjectBuffer.Count) + { + newLine = lineObjectBuffer[lineObjectBufferIndex]; + lRend = newLine.GetComponent(); + } + else + { + newLine = Instantiate(line, lines.gameObject.transform); + newLine.layer = lines.gameObject.layer; + lRend = newLine.GetComponent(); + lineObjectBuffer.Add(newLine); + } + lineObjectBufferIndex++; + + lRend.positionCount = 0; + lRend.loop = true; + + Color32 c1 = color; + c1.a = 160; + + lRend.startColor = c1; + lRend.endColor = c1; + + float lineW = 1.0f; + lRend.startWidth = lineW; + lRend.endWidth = lineW; + + float cs = (float)System.Math.Cos(-theta); + float ss = (float)System.Math.Sin(-theta); + + AppendEdgeOfRect2D(color, (int)(x + w / 2 + w / 2 * cs + h / 2 * ss), (int)(y + h / 2 + w / 2 * -ss + h / 2 * cs), tex_width, tex_height, lRend); + AppendEdgeOfRect2D(color, (int)(x + w / 2 - w / 2 * cs + h / 2 * ss), (int)(y + h / 2 - w / 2 * -ss + h / 2 * cs), tex_width, tex_height, lRend); + AppendEdgeOfRect2D(color, (int)(x + w / 2 - w / 2 * cs - h / 2 * ss), (int)(y + h / 2 - w / 2 * -ss - h / 2 * cs), tex_width, tex_height, lRend); + AppendEdgeOfRect2D(color, (int)(x + w / 2 + w / 2 * cs - h / 2 * ss), (int)(y + h / 2 + w / 2 * -ss - h / 2 * cs), tex_width, tex_height, lRend); + + newLine.SetActive(true); + } + + public void DrawText(Color color, string text, int x, int y, int tex_width, int tex_height, float alpha = 160/255.0f, float scale = 1.0f, Color text_color = default(Color)) + { + RectTransform panelRect = line_panel.GetComponent(); + float width = panelRect.rect.width; + float height = panelRect.rect.height; + + int r = 2; + if (x < r) x = r; + if (y < r) y = r; + + GameObject text_object = null; + if (textObjectBufferIndex < textObjectBuffer.Count) + { + text_object = textObjectBuffer[textObjectBufferIndex]; + } + else + { + text_object = GameObject.Instantiate(text_base, text_panel.gameObject.transform); + textObjectBuffer.Add(text_object); + } + textObjectBufferIndex++; + + text_object.SetActive(true); + text_object.transform.GetChild(0).GetComponent().text = text; + text_object.transform.GetChild(0).GetComponent().color = (text_color == default(Color)) ? Color.black : text_color; + color.a = alpha; + text_object.GetComponent().color = color; + text_object.GetComponent().anchoredPosition = new Vector2(x * width / tex_width, -y * height / tex_height); + text_object.GetComponent().localScale = new Vector3(scale, scale, 1); + } + + + public void DrawBone3D(Color32 color, AiliaPoseEstimator.AILIAPoseEstimatorObjectPose obj, uint from, uint to) + { + float th = 0.1f; + if (obj.points[from].score <= th || obj.points[to].score <= th) + { + return; + } + + //追加 + float from_x = obj.points[from].x; + float from_y = obj.points[from].y; + float from_z = obj.points[from].z_local; + float to_x = obj.points[to].x; + float to_y = obj.points[to].y; + float to_z = obj.points[to].z_local; + float origin_x = (obj.points[AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_LEFT].x + obj.points[AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_RIGHT].x) / 2.0f; + float origin_y = (obj.points[AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_LEFT].y + obj.points[AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_RIGHT].y) / 2.0f; + float origin_z = (obj.points[AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_LEFT].z_local + obj.points[AiliaPoseEstimator.AILIA_POSE_ESTIMATOR_POSE_KEYPOINT_HIP_RIGHT].z_local) / 2.0f; + + //腰の中点を原点に変える + from_x -= origin_x; + from_y -= origin_y; + from_z -= origin_z; + to_x -= origin_x; + to_y -= origin_y; + to_z -= origin_z; + + //3次元landmarkを回転させる + double speed = Math.PI / 100.0f; //1フレームあたりの回転角 + time += Time.deltaTime; + float tmp_from_x = from_x; //更新前の値 + float tmp_from_y = from_y; + float tmp_from_z = from_z; + float tmp_to_x = to_x; + float tmp_to_y = to_y; + float tmp_to_z = to_z; + from_x = (float)(tmp_from_x * Math.Cos(speed / Math.PI * time) + tmp_from_z * Math.Sin(speed / Math.PI * time)); + from_y = tmp_from_y; + from_z = (float)(-tmp_from_x * Math.Sin(speed / Math.PI * time) + tmp_from_z * Math.Cos(speed / Math.PI * time)); + to_x = (float)(tmp_to_x * Math.Cos(speed / Math.PI * time) + tmp_to_z * Math.Sin(speed / Math.PI * time)); + to_y = tmp_to_y; + to_z = (float)(-tmp_to_x * Math.Sin(speed / Math.PI * time) + tmp_to_z * Math.Cos(speed / Math.PI * time)); + + Color sphereColor = Color.white; //球の色だけここで指定する 右(231, 217, 0) + if (LANDMARK_LEFT.Contains(from)) + { + sphereColor = new Color(0.0f, 179.0f / 255, 255.0f / 255, 1.0f); //左 + } + else if (LANDMARK_RIGHT.Contains(from)) + { + sphereColor = new Color(248.0f / 255, 123.0f / 255, 0.0f, 1.0f); //右 + } + + DrawSphere3D(sphereColor, from_x, from_y, from_z); + DrawLine3D(color, from_x, from_y, from_z, to_x, to_y, to_z); + } + + + + + //追加 + public void DrawSphere3D(Color color, float pos_x, float pos_y, float pos_z) + { + GameObject newSphere; + if (sphereObjectBufferIndex < sphereObjectBuffer.Count) + { + newSphere = sphereObjectBuffer[sphereObjectBufferIndex]; + } + else + { + newSphere = Instantiate(sphere, spheres.gameObject.transform); + sphereObjectBuffer.Add(newSphere); + } + sphereObjectBufferIndex++; + newSphere.SetActive(true); + + MeshRenderer mesh = newSphere.GetComponent(); //球の色を変更 + mesh.material.color = color; + + Vector3 pointPos = drawPos; //原点の座標 見えやすいところにずらす + pointPos.x += pos_x * scale; + pointPos.y += pos_y * scale; + pointPos.z += pos_z * scale; + + newSphere.transform.position = pointPos; //大きさと位置を調整 + } + + + //追加 + public void DrawLine3D(Color32 color, float from_x, float from_y, float from_z, float to_x, float to_y, float to_z) + { + Vector3 pointPos1 = drawPos; //原点の座標 + pointPos1.x += from_x * scale; + pointPos1.y += from_y * scale; + pointPos1.z += from_z * scale; + + Vector3 pointPos2 = drawPos; //原点の座標 + pointPos2.x += to_x * scale; + pointPos2.y += to_y * scale; + pointPos2.z += to_z * scale; + + GameObject newLine; + LineRenderer lRend; + if (lineObjectBufferIndex3D < lineObjectBuffer3D.Count) + { + newLine = lineObjectBuffer3D[lineObjectBufferIndex3D]; + lRend = newLine.GetComponent(); + } + else + { + newLine = Instantiate(line3D, lines3D.gameObject.transform); + newLine.layer = line3D.gameObject.layer; + lRend = newLine.GetComponent(); + lineObjectBuffer3D.Add(newLine); + } + lineObjectBufferIndex3D++; + newLine.SetActive(true); + + Color32 c1 = color; + c1.a = 128 + 32; + + lRend.startColor = c1; + lRend.endColor = c1; + + lRend.positionCount = 2; + lRend.startWidth = 1; //仮 + lRend.endWidth = 1; //仮 + + Vector3 startVec = pointPos1; + Vector3 endVec = pointPos2; + lRend.SetPosition(0, startVec); + lRend.SetPosition(1, endVec); + } + + + //追加 + public void DrawAxis3D(AiliaPoseEstimator.AILIAPoseEstimatorObjectPose obj) + { + float scale = 1.0f; + + //全てのlandmarkのx,y,z座標のうち,絶対値が最大のものを取得する + //また,y座標が最小のものを取得する + float abs_max = 0.0f; + float y_min = 1.0f; + for (int i = 0; i < obj.points.Length; i++) + { + abs_max = Mathf.Max(abs_max, Math.Abs(obj.points[i].x), Math.Abs(obj.points[i].y), Math.Abs(obj.points[i].z_local)); + y_min = Mathf.Min(y_min, obj.points[i].y); + } + scale = abs_max + 0.1f; + + //外側の軸 + DrawAxisSphere3D(new Color(0.0f, 92.0f / 255, 0.0f, 1.0f), -scale, y_min, -scale); + DrawAxisSphere3D(new Color(0.0f, 92.0f / 255, 0.0f, 1.0f), -scale, y_min, scale); + DrawAxisSphere3D(new Color(0.0f, 92.0f / 255, 0.0f, 1.0f), -scale, y_min - scale * 2, -scale); + DrawAxisSphere3D(new Color(0.0f, 92.0f / 255, 0.0f, 1.0f), -scale, y_min - scale * 2, scale); + DrawAxisSphere3D(new Color(0.0f, 92.0f / 255, 0.0f, 1.0f), scale, y_min, -scale); + DrawAxisSphere3D(new Color(0.0f, 92.0f / 255, 0.0f, 1.0f), scale, y_min, scale); + DrawAxisSphere3D(new Color(0.0f, 92.0f / 255, 0.0f, 1.0f), scale, y_min - scale * 2, -scale); + DrawAxisSphere3D(new Color(0.0f, 92.0f / 255, 0.0f, 1.0f), scale, y_min - scale * 2, scale); + DrawAxisLine3D(Color.white, -scale, y_min, -scale, scale, y_min, -scale); + DrawAxisLine3D(Color.white, -scale, y_min - scale * 2, -scale, scale, y_min - scale * 2, -scale); + DrawAxisLine3D(Color.white, -scale, y_min - scale * 2, scale, scale, y_min - scale * 2, scale); + DrawAxisLine3D(Color.white, -scale, y_min, scale, scale, y_min, scale); + DrawAxisLine3D(Color.white, -scale, y_min, -scale, -scale, y_min - scale * 2, -scale); + DrawAxisLine3D(Color.white, scale, y_min, -scale, scale, y_min - scale * 2, -scale); + DrawAxisLine3D(Color.white, scale, y_min, scale, scale, y_min - scale * 2, scale); + DrawAxisLine3D(Color.white, -scale, y_min, scale, -scale, y_min - scale * 2, scale); + DrawAxisLine3D(Color.white, -scale, y_min, -scale, -scale, y_min, scale); + DrawAxisLine3D(Color.white, scale, y_min, -scale, scale, y_min, scale); + DrawAxisLine3D(Color.white, scale, y_min - scale * 2, -scale, scale, y_min - scale * 2, scale); + DrawAxisLine3D(Color.white, -scale, y_min - scale * 2, -scale, -scale, y_min - scale * 2, scale); + + //内側のグリッド線 + DrawAxisLine3D(new Color(1.0f, 1.0f, 1.0f, 0.1f), -scale, y_min, -scale * 0.75f, scale, y_min, -scale * 0.75f, 0.5f); + DrawAxisLine3D(new Color(1.0f, 1.0f, 1.0f, 0.1f), -scale, y_min, -scale * 0.5f, scale, y_min, -scale * 0.5f, 0.5f); + DrawAxisLine3D(new Color(1.0f, 1.0f, 1.0f, 0.1f), -scale, y_min, -scale * 0.25f, scale, y_min, -scale * 0.25f, 0.5f); + DrawAxisLine3D(new Color(1.0f, 1.0f, 1.0f, 0.1f), -scale, y_min, 0.0f, scale, y_min, 0.0f, 0.5f); + DrawAxisLine3D(new Color(1.0f, 1.0f, 1.0f, 0.1f), -scale, y_min, scale * 0.25f, scale, y_min, scale * 0.25f, 0.5f); + DrawAxisLine3D(new Color(1.0f, 1.0f, 1.0f, 0.1f), -scale, y_min, scale * 0.5f, scale, y_min, scale * 0.5f, 0.5f); + DrawAxisLine3D(new Color(1.0f, 1.0f, 1.0f, 0.1f), -scale, y_min, scale * 0.75f, scale, y_min, scale * 0.75f, 0.5f); + + DrawAxisLine3D(new Color(1.0f, 1.0f, 1.0f, 0.1f), -scale * 0.75f, y_min, -scale, -scale * 0.75f, y_min, scale, 0.5f); + DrawAxisLine3D(new Color(1.0f, 1.0f, 1.0f, 0.1f), -scale * 0.5f, y_min, -scale, -scale * 0.5f, y_min, scale, 0.5f); + DrawAxisLine3D(new Color(1.0f, 1.0f, 1.0f, 0.1f), -scale * 0.25f, y_min, -scale, -scale * 0.25f, y_min, scale, 0.5f); + DrawAxisLine3D(new Color(1.0f, 1.0f, 1.0f, 0.1f), 0.0f, y_min, -scale, 0.0f, y_min, scale, 0.5f); + DrawAxisLine3D(new Color(1.0f, 1.0f, 1.0f, 0.1f), scale * 0.25f, y_min, -scale, scale * 0.25f, y_min, scale, 0.5f); + DrawAxisLine3D(new Color(1.0f, 1.0f, 1.0f, 0.1f), scale * 0.5f, y_min, -scale, scale * 0.5f, y_min, scale, 0.5f); + DrawAxisLine3D(new Color(1.0f, 1.0f, 1.0f, 0.1f), scale * 0.75f, y_min, -scale, scale * 0.75f, y_min, scale, 0.5f); + + } + + + //追加 + public void DrawAxisSphere3D(Color color, float pos_x, float pos_y, float pos_z) + { + GameObject newSphere; + if (axisSphereObjectBufferIndex < axisSphereObjectBuffer.Count) + { + newSphere = axisSphereObjectBuffer[axisSphereObjectBufferIndex]; + } + else + { + newSphere = Instantiate(sphere, spheres.gameObject.transform); + axisSphereObjectBuffer.Add(newSphere); + } + axisSphereObjectBufferIndex++; + newSphere.SetActive(true); + + MeshRenderer mesh = newSphere.GetComponent(); + mesh.material.color = color; + + //回転させる + double speed = Math.PI / 100.0f; //1フレームあたりの回転角 + time += Time.deltaTime; + float tmp_x = pos_x; + float tmp_y = pos_y; + float tmp_z = pos_z; + pos_x = (float)(tmp_x * Math.Cos(speed / Math.PI * time) + tmp_z * Math.Sin(speed / Math.PI * time)); + pos_y = tmp_y; + pos_z = (float)(-tmp_x * Math.Sin(speed / Math.PI * time) + tmp_z * Math.Cos(speed / Math.PI * time)); + + Vector3 pointPos = drawPos; //大きさと位置を調整 + pointPos.x += pos_x * scale; + pointPos.y += pos_y * scale; + pointPos.z += pos_z * scale; + + newSphere.transform.position = pointPos; + } + + + //追加 + public void DrawAxisLine3D(Color32 color, float from_x, float from_y, float from_z, float to_x, float to_y, float to_z, float r = 2) + { + GameObject newLine; + LineRenderer lRend; + if (axisLineObjectBufferIndex3D < axisLineObjectBuffer3D.Count) + { + newLine = axisLineObjectBuffer3D[axisLineObjectBufferIndex3D]; + lRend = newLine.GetComponent(); + } + else + { + newLine = Instantiate(line3D, lines3D.gameObject.transform); + newLine.layer = line3D.gameObject.layer; + lRend = newLine.GetComponent(); + axisLineObjectBuffer3D.Add(newLine); + } + axisLineObjectBufferIndex3D++; + newLine.SetActive(true); + + Color32 c1 = color; + c1.a = 128 + 32; + + lRend.startColor = c1; + lRend.endColor = c1; + + float base_width = r / 2.0f; + + lRend.positionCount = 2; + lRend.startWidth = base_width; + lRend.endWidth = base_width; + + //回転させる + double speed = Math.PI / 100.0f; //1フレームあたりの回転角 + time += Time.deltaTime; + float tmp_from_x = from_x; + float tmp_from_y = from_y; + float tmp_from_z = from_z; + from_x = (float)(tmp_from_x * Math.Cos(speed / Math.PI * time) + tmp_from_z * Math.Sin(speed / Math.PI * time)); + from_y = tmp_from_y; + from_z = (float)(-tmp_from_x * Math.Sin(speed / Math.PI * time) + tmp_from_z * Math.Cos(speed / Math.PI * time)); + float tmp_to_x = to_x; + float tmp_to_y = to_y; + float tmp_to_z = to_z; + to_x = (float)(tmp_to_x * Math.Cos(speed / Math.PI * time) + tmp_to_z * Math.Sin(speed / Math.PI * time)); + to_y = tmp_to_y; + to_z = (float)(-tmp_to_x * Math.Sin(speed / Math.PI * time) + tmp_to_z * Math.Cos(speed / Math.PI * time)); + + Vector3 pointPos1 = drawPos; //大きさと位置を調整 + pointPos1.x += from_x * scale; + pointPos1.y += from_y * scale; + pointPos1.z += from_z * scale; + + Vector3 pointPos2 = drawPos; + pointPos2.x += to_x * scale; + pointPos2.y += to_y * scale; + pointPos2.z += to_z * scale; + + Vector3 startVec = pointPos1; + Vector3 endVec = pointPos2; + lRend.SetPosition(0, startVec); + lRend.SetPosition(1, endVec); + } + + } } \ No newline at end of file