Dartã®Streamã®ããã¯ã°ã©ã¦ã³ã精度ã調ã¹ã¦ã¿ã
- ããã¾ã§ã®ãããã
- Streamã使ç¨ããããã¯ã°ã©ã¦ã³ãå¦ç ãã®1
- Streamã使ç¨ããããã¯ã°ã©ã¦ã³ãå¦ç ãã®2
- ã¾ã¨ã
ããã¾ã§ã®ãããã
çªç¶ã®ããã°æ´æ°ãæããã£ãã®ã§ãããä¹ ãã¶ãã«ãé¢ãããæ²ããã« ãTimerã®ç²¾åº¦ã ã¨ããå ¨ãéè¦ã®ç¡ããããªè¨äºãæ¸ãã¦ãã¾ãã¾ããã
satoshi-maemoto.hatenablog.com
ãã æ¸ãå§ããã¨ãã次ã®ã¢ã¤ãã£ã¢ãæµ®ããã§ãã¾ããã®ã§ãåã³ãStreamã®ç²¾åº¦ãã¨ããã¾ãéè¦ã®ç¡ããããªè¨äºãæ¸ãã¦ãã¾ãã®ã§ããã
Streamã使ç¨ããããã¯ã°ã©ã¦ã³ãå¦ç ãã®1
å®æçãªè£ã¿ã¹ã¯ãå®ç¾ããå ´åãStreamã使ç¨ãããã¨ãã§ãã¾ãã
Unityã§ã³ã¼ããæ¸ã人ãªãã°ã馴æã¿ã® yield ã§ããã
yieldããéã«ã«å¼ã³åºãå
ã«callbackããããå½¢ã§å¶å¾¡ã渡ããã¾ãå¶å¾¡ãæ»ã£ã¦ãã¾ãã
ã¾ãå®ç´ãªãã¿ã¼ã³ã¨ãã¦ã«ã¼ãå 㧠await Future.delayd(åä½å¾ ã¡æé) ã¨ãã¦åä½å¾ ã¡æéãã¨ã«å¶å¾¡ãè¿ããã¿ã¼ã³ã®ãã¹ãã³ã¼ããæ¸ãã¾ããã
Stream<int> runLoop( WidgetTester tester, double desiredFps, int testSeconds) async* { var duration = Duration(microseconds: (1000000.0 / desiredFps).truncate()); var start = DateTime.now(); tester.printToConsole( "START: ${start.toString()} desiredFps:$desiredFps duration:${duration.toString()}"); var called = 0; var end = start.add(Duration(seconds: testSeconds)); while (DateTime.now().compareTo(end) < 0) { ++called; await Future.delayed(duration); yield called; } var actualFps = called.toDouble() / (end.difference(start).inMicroseconds / 1000000.0); tester.printToConsole( "END: ${end.toString()} called:$called difference:${end.difference(start)} actualFps:$actualFps"); }
ããã¯åä½å¾
ã¡æéåå¾
ã¤ã®ã§ããã®ä»ã®å¦çãè¡ãããæéã®åã ãyieldåæ°ãå°ãªããªããã¨ã¯æç½ã§ããã
åããã¦ã¿ã¾ãããã
iPhone 14 Pro
START: 2023-02-05 19:47:54.229318 desiredFps:60.0 duration:0:00:00.016666
END: 2023-02-05 19:48:04.229318 called:546 difference:0:00:10.000000 actualFps:54.6Xperia1 II
START: 2023-02-05 19:26:18.861561 desiredFps:60.0 duration:0:00:00.016666
END: 2023-02-05 19:26:28.861561 called:535 difference:0:00:10.000000 actualFps:53.5
60åãæå¾
ãã¦ããã¨ãã54åç¨åº¦ã®å¼ã³åºããããããªã模æ§ã
ããã¯äºæ³éãã¡ãã£ã¨ãã¡ã§ãããã
Streamã使ç¨ããããã¯ã°ã©ã¦ã³ãå¦ç ãã®2
次ã«ã«ã¼ãå ã§ã¯ã¦ã§ã¤ããããåä½å¾ ã¡æéãçµéãããyieldããã¨ããå°ãä¸å¯§ãªå¦çã«ãããã¿ã¼ã³ã§ãã
Stream<int> runLoop2( WidgetTester tester, double desiredFps, int testSeconds) async* { var duration = Duration(microseconds: (1000000.0 / desiredFps).truncate()); var start = DateTime.now(); tester.printToConsole( "START: ${start.toString()} desiredFps:$desiredFps duration:${duration.toString()}"); var called = 0; var end = start.add(Duration(seconds: testSeconds)); var prevCalled = start; while (DateTime.now().compareTo(end) < 0) { if (DateTime.now().difference(prevCalled) > duration) { prevCalled = DateTime.now(); ++called; yield called; } } var actualFps = called.toDouble() / (end.difference(start).inMicroseconds / 1000000.0); tester.printToConsole( "END: ${end.toString()} called:$called difference:${end.difference(start)} actualFps:$actualFps"); }
ãã¦ã©ããªãã§ãããããåããã¦ã¿ã¾ãããã
iPhone 14 Pro
START: 2023-02-05 19:48:06.290216 desiredFps:60.0 duration:0:00:00.016666
END: 2023-02-05 19:48:16.290216 called:599 difference:0:00:10.000000 actualFps:59.9Xperia1 II
START: 2023-02-05 19:26:30.947065 desiredFps:60.0 duration:0:00:00.016666
END: 2023-02-05 19:26:40.947065 called:599 difference:0:00:10.000000 actualFps:59.9
ããã60åãæå¾
ãã¦ããã¨ããã«ã»ã¼60åç¨åº¦ã®å¼ã³åºããè¡ããã¾ããï¼
ãã®æ¹æ³ã精度ã¨ãã¦ã¯æãè¯ãããã§ãã
ã«ã¼ãåæ°ãå¤ãã®ã§CPU使ç¨ç= ããããªã¼æ¶è²»éã¨ããé¢ã§ã¯è¥å¹²ä¸å®ãããã¾ãããã¡ãã¯ã¾ã追ã£ã¦èª¿ã¹ã¦ã¿ããã¨æã£ã¦ãã¾ãã
ã¾ã¨ã
ã¨ããããã§Dartã®ããã°ã°ã©ã¦ã³ãå¦çã®æéç精度ã¯ãTimerããStreamã®æ¹ãé«ãã¨ãããã¨ããããã¾ããã
Flutterã¯ããã¾ãã / Dartã®Timerã®ç²¾åº¦ã調ã¹ã¦ã¿ã
æ°å¹´ããã¾ãã¦ããã§ã¨ããããã¾ãï¼
- Flutter (Dartè¨èª) ã¯ããã¾ãã
- Timerã®ç²¾åº¦ã調ã¹ãã³ã¼ã
- ãã¹ãçµæ
- ã¾ã¨ãï¼
Flutter (Dartè¨èª) ã¯ããã¾ãã
æè¿ã¯Flutter (Dartè¨èª) ã触ããã¨ãå¢ãã¦ãã¾ãã
å
¥éãã¦1ã¶æå°ã
ã®è¶
ãã®ãã¼ãªã®ã§ã調ã¹ã¦ããã£ããã¨ãã¡ã¢ãã¦è¡ããããªã¨æã£ã¦ãã¾ãã
ãã£ã¨è¯ãæ¹æ³ããåç¥ã§ããããã²æãã¦ãã ããã
Timerã®ç²¾åº¦ã調ã¹ãã³ã¼ã
ç§é60åç¨åº¦ã®é »åº¦ã§ã¿ã¹ã¯ãå®è¡ããä»çµã¿ãä½ããããªã¨æãã¾ããã ããããå ´åDartã¯ã·ã³ã°ã«ã¹ã¬ããã§åä½ããã®ã§ãå®æçãªã¿ã¹ã¯ã¯Timerã§ä½ãã°è¯ãããã§ãã
ãã¹ãã³ã¼ã
https://github.com/satoshi-maemoto/studying_flutter/blob/main/integration_test/timer_test.dart
tester.printToConsole("=== START ${tester.testDescription} ==="); var desiredFps = 60.0; var testSeconds = 10; var duration = Duration(microseconds: (1000000.0 / desiredFps).truncate()); var called = 0; var start = DateTime.now(); tester.printToConsole( "START: ${start.toString()} desiredFps:$desiredFps duration:${duration.toString()}"); var clock = Timer.periodic(duration, (t) { ++called; //tester.printToConsole(DateTime.now().toString()); }); await Future.delayed(Duration(seconds: testSeconds)); clock.cancel(); var end = DateTime.now(); var actualFps = called.toDouble() / (end.difference(start).inMicroseconds / 1000000.0); tester.printToConsole( "END: ${end.toString()} called:$called difference:${end.difference(start)} actualFps:$actualFps");
1ç§éã«60åã®å¼ã³åºããæå¾ ãã¤ã¤ã10ç§å¾ã«å¹³åã®ã¬ã¼ããåºåããã³ã¼ãã§ãã
ãã¹ãçµæ
iPhone 14 Pro
START: 2023-02-05 17:53:32.903171 desiredFps:60.0 duration:0:00:00.016666
END: 2023-02-05 17:53:42.907459 called:625 difference:0:00:10.004288 actualFps:62.47321148691441Xperia1 II
START: 2023-02-05 17:48:27.789945 desiredFps:60.0 duration:0:00:00.016666
END: 2023-02-05 17:48:37.796106 called:625 difference:0:00:10.006161 actualFps:62.46151745909345
60åãæå¾
ãã¦ããã¨ãã62.5åã®å¼ã³åºããããã模æ§ã
é
ãããã¯è¯ããã©ããã¾ãæ£ç¢ºãããªããªããã
ã¾ãã·ã³ã°ã«ã¹ã¬ãããªã®ã§ä»ã®ã¨ããã§å¦çãå°æãããã¨ã°ãã°ã¿ã«ãªããã¨ã¯äºæ³ããããªã
ã¾ã¨ãï¼
ã¨ããããã§Dartã®Timerã¯çµæ§ã«ã¼ãºã§ãã模æ§ã
ãã£ã¨é«ç²¾åº¦ãªããã¯ã°ã©ã¦ã³ãå¦çãã§ããæ¹æ³ãç¥ã£ã¦ããããã²æãã¦ãã ããã
Sony "ToF AR" SDK ãµã³ãã«ç´¹ä» [3] - Hand, Mesh ãµã³ãã«
ååã¯ToF ARã®PointCloudé¢é£ããã³Segmentationãµã³ãã«ãç´¹ä»ãã¾ããã
satoshi-maemoto.hatenablog.com
ä»å㯠ToF ARã§æãå¼·åãªæ©è½ã¨æããããé«ç²¾åº¦ãªHandèªèæ©è½ã®ãµã³ãã«ãããç´¹ä»ãã¦ããã¾ãããã
ToF ARã®æèªè精度ãåãã§ãã
Hand
Handã·ã¼ã³ã¯æã®èªèçµæã表示ã§ãããµã³ãã«ã§ãã
TofArHandã³ã³ãã¼ãã³ãã®æ©è½
Handãã¼ã¿ã¯TofArHandã³ã³ãã¼ãã³ãããåå¾ãããã¨ãã§ãã¾ããå°ã詳ããè¦ã¦ã¿ã¾ãããã
åå¾ã§ããæ
å ±ã¯ä¸è¨ã®ã¨ããã§ãã
- æã®ä½ç½®(3D座æ¨)
- æã®é¢ç¯ä½ç½®(3D座æ¨)
- æã®ãã¼ãºã¨ã¸ã§ã¹ãã£ã¼
- æãå¹³é¢ãã¿ãããã¦ããã
ãªã¢ã«ã¡ã©ãããã³ãã«ã¡ã©å
±ã«ä½¿ç¨ã§ããã®ã§èªå以å¤ã®äººãæ ããèªæ®ãã§ä½¿ããã¨ãã両æ¹ã®ç¨éã«ä½¿ããã¨ãã§ãã¾ãã
ãã ãæèªèãè¡ããã«ã¡ã©ã¯å¯åº¦ã®é«ãDepthãã¼ã¿ãåå¾ã§ããToFã«ã¡ã©ã§ããå¿
è¦ãããã¾ãã
iOSããã¤ã¹ã¯ããã³ãã«TrueDepthã«ã¡ã©ãæè¼ããã¦ãã¦å¯åº¦ã®é«ãDepthãã¼ã¿ãåå¾ã§ãã¾ãã
対ããAndroidã¯ãªã¢ã«ã¡ã©ã§å¯åº¦ã®é«ãDepthãã¼ã¿ãåå¾ã§ããããã¤ã¹ã¯å¤ããã®ã®ããã³ãã«ToFã«ã¡ã©ãæè¼ãã¦ããããã¤ã¹ã¯å°ãªãããã§ãã
詳ããã¯ãã®ãªã¹ããè¦ãã¨ãã©ã®ã«ã¡ã©ã§ToFãã¼ã¿ãåå¾ã§ããã®ããããã¾ãã https://developer.sony.com/develop/tof-ar/development-guides/docs/ToF_AR_User_Manual_ja.html#_%E5%90%8C%E6%99%82%E8%B5%B7%E5%8B%95%E5%8F%AF%E8%83%BD%E3%81%AAcolordepth%E3%82%AB%E3%83%A1%E3%83%A9%E3%81%AEid%E3%81%A8%E5%90%91%E3%81%8D
èªèã§ããæé¢ç¯æ°ã¯25ç¹ãLeap Motionã®ä»£ããã«ä½¿ããã¨ãã§ãããã§ãã
ãã¼ãºã¨ã¯æã®ç¬éçãªå½¢ã§ãä»ãã®ç¬éãã¼ã¹ãµã¤ã³ããã¦ããã¨ãããµã ã¢ãããã¦ããã¨ããæ
å ±ã§ãã
ã¸ã§ã¹ãã£ã¼ã¨ã¯ä¸å®æéå
ã®é£ç¶çãªæã®åãã®ãã¿ã¼ã³ããèå¥ãããåä½ã§ãã
ããªãããããã®ç¨®é¡ãç¨æããã¦ãã¾ããã
ãã®ä»è©³ããã¯ä¸è¨ã®ãã¼ã¸ãã覧ã«ãªã£ã¦ã¿ã¦ãã ããã
https://developer.sony.com/develop/tof-ar/development-guides/docs/ToF_AR_Reference_Articles_ja.html#_hand_component
å§å·»ã®èªè精度
èªè精度ã«ã¤ãã¦ã¯ãããã®åç»ã«ããããã«èª¬æä¸è¦ã§å§å·»ã¨ããæãï¼
ToF ARã使ãã ãã§ææã¡ã®ã¹ããã«Leap Motionãæè¼ãããã¨èããã¨ãå¾æãããã¾ãããã
ããã¦ãã®ToF ARã®é«ç²¾åº¦ãªHandèªèæ©è½ã¯ããã¼ãã£ã«ã·ã³ãã¬ã©ããã¸ã§ã¯ããã®é ä¿¡ã§ã使ããã¦ããããã§ãã virtual-cinderella.jp
Båãã®é åã§ãç°¡åå³åº§ã«äººã®æä½ãè¨é²ãã¦åç¾ãããã¨ãã§ããã®ã§ãè·äººããã®æè½ä¼æ¿ã§ãã£ãã3Dããã¥ã¢ã«ä½æãªã©ã§ã使ãããã§ããï¼
Live Mesh Occlusion
Live Mesh Occlusionã·ã¼ã³ã¯ToFãã¼ã¿ãããªã¢ã«ã¿ã¤ã ã«3D Meshãçæãããããç¨ãã¦ç¾å®ã¨CGã®ãªã¯ã«ã¼ã¸ã§ã³è¡¨ç¤ºãè¡ããµã³ãã«ã§ãã
3D Meshçæã«ã¤ãã¦ã¯TofArMeshã³ã³ãã¼ãã³ãããMeshã®é ç¹ãã¼ã¿ãåå¾ã§ããDynamicMesh Prefabã表示ãè¡ãªã£ã¦ãããããé£ããå¦çãèªåã§æ¸ãå¿
è¦ãªç¡ãããã§ãã
ããã¦3D Meshãªã®ã§å½±ãä½ããå½±ãåãããã¨ãã§ããªã¢ã«ãªAR表ç¾ã«å½¹ç«ã¡ã¾ããã
ãªã¯ã«ã¼ã¸ã§ã³è¡¨ç¤ºã¨ããã¨ãã7å¹´ãåã§ãã趣å³ã§ç©æ¥µçã«ä½ã£ã¦ãã¦ãå½æã¯KINECT V2ã使ã£ã¦è²ã ã¨ãã¢åç»ãåºãã¦ãã¾ããã
ããã¯3D Meshåã¯è¡ãªã£ã¦ããªãã®ã§ãããShaderã§ToFãã¼ã¿ã®æ·±åº¦æ
å ±ã¨CGã®Z-Bufferå¤ãæ¯è¼ããColoræ åã¨åæãããã¨ã§ä½ãå¦çè² è·ã§ã¬ãã¬ã表示ãã§ãã¦ããã®ãç¹å¾´ã§ãã
詳ããæ¹ã«ã¯ããã¯åãã¨ããªãã®é«è©ä¾¡ãé ããã¨ãã§ãã¾ãããã
åé¢ãä¸è¬ã®æ¹ããè¦ã㨠ãèªç¶ãªè¡¨ç¤ºã«ãªã£ã â ä¸å
·åãç´ã£ã¦å½ããåã®è¡¨ç¤ºã«ãªã£ãã ãããã®å°è±¡ã ã£ãã®ãé¢ç½ãã¨ãããæ®å¿µã§ããã(ç¬)
ãããè£ãè¿ãã¨ãªã¯ã«ã¼ã¸ã§ã³ã®ç¡ãAR表示ã¯ä¸è¬ã®æ¹ã«ã¨ã£ã¦ä¸å
·åã¬ãã«ã§ããã¨ãããã¨ã§ãããã¾ãã
ãªã¯ã«ã¼ã¸ã§ã³éè¦ã§ãããã
Color Hand Occlusion
Color Hand Occlusionã·ã¼ã³ã¯æã®å¨è¾ºã ããªã¢ã«ã¿ã¤ã ãªã¯ã«ã¼ã¸ã§ã³è¡¨ç¤ºãè¡ããµã³ãã«ã§ãã
Handã·ã¼ã³ã®æ©è½ã¨Live Mesh Occlusionã·ã¼ã³ã®æ©è½ãçµã¿åããããã®ã«ãªãã¾ãã
ããã¯ã©ããªå¿ç¨ãã§ããããªãã
æã ããè¦ãããªã¢ã«ã¿ã¤ã ä»®æ³èæ¯è¡¨ç¤ºãã§ããã®ã§ãæ話ãããªãä½ã£ããæ人形åã®é
ä¿¡ãªã©ã§ããããªï¼çºæ³åã®è²§ããï¼
ã¾ã¨ã
ä»åã¯ToF ARã®æãç¹å¾´çãªæ©è½ã§ããHandèªèæ©è½ã軸ã«ãç´¹ä»ãã¾ããã
ææã¡ã®ã¹ãããå³åº§ã«é«ãèªè精度ã®ã¢ã¼ã·ã§ã³ãã£ããã£ããã¤ã¹ã«ãªããã¹ãããªã®ã§ãã®ã¾ã¾ãããã¯ã¼ã¯ã«é
ä¿¡ã§ãããã¨ãããã¨ãæ´»ããã¨æ°ããé¢ç½ããã®ãå®ç¾ã§ãããã§ããï¼
Sony "ToF AR" SDK ãµã³ãã«ç´¹ä» [2] - PointCloud, Segmentation ãµã³ãã«
ååã¯ToF ARã¨ã¯ä½ããããã¦ToF ARã®æ ¹å¹¹ããªãã«ã¡ã©æ åãToFãã¼ã¿ã¨ãã£ãåºæ¬ãã¼ã¿è¡¨ç¤ºé¢é£ã®ãµã³ãã«ãç´¹ä»ãã¾ããã
satoshi-maemoto.hatenablog.com
å¼ãç¶ããåºæ¬ãã¼ã¿ãã2次å¦çã§çæã»èªèããããã¼ã¿ã確èªã§ãããµã³ãã«ãç´¹ä»ãã¦ããã¾ããã
Point Cloud
Point Cloudã·ã¼ã³ã¯3Dç¹ç¾¤ãã¼ã¿ã表示ã§ãããµã³ãã«ã§ãã
Point Cloudãã¼ã¿ã¯ToFã³ã³ãã¼ãã³ãããç°¡åã«åå¾ãããã¨ãã§ããã®ã§ãToFãã¼ã¿ããèªåã§å¤æãã¦ä½ããããªé¢åãªå¦çã¯ä¸è¦ã§å©ããã¾ããã
ãã¼ã¿å½¢å¼ã®è©³ç´°ã¯ãªãã¡ã¬ã³ã¹ã® "2.1.3. ãã¼ã¿å½¢å¼: PointCloudãã¼ã¿" ã«è¼ã£ã¦ãã¾ãã
https://developer.sony.com/develop/tof-ar/development-guides/docs/ToF_AR_Reference_Articles_ja.html#_tof_component
Point Cloudãµã³ãã«ã¯ãç¹ç¾¤è¡¨ç¤ºãæ¡å¤§ç¸®å°ãå転ããããã¨ãã§ãã¾ãã èªåã®å§¿ã横ããè¦ããããã¨3Dã§ãã¼ã¿ãåãã¦ãããã ã£ã¦ãããã¨ãåãããããæãããã¦é¢ç½ãã§ãããï¼
åã¨ç¹ç¾¤ã®åºä¼ãã¯ãã10年以ä¸åã§ãããã åã¯ä¸ç°ã¤ã¹ã¿ã«ããã®CAPSULE ã®æ²ã好ããªã®ã§ãããPVã§ä¸ç°ã¤ã¹ã¿ã«ãããç´°ããç²åã«ãªã£ã¦ã½ããã¯ãªã¼ã ã¿ããã«ãªãã¤ã¤åã£ã¦ããã¨è¨ã表ç¾ããã使ããã¦ããããã¡ããã¡ããã£ããããªã¼ã¨æã£ãã®ãåãã¦ã®ãããªæ°ããã¾ãã
æ·±å¤ã«ã©ã¤ãã«è¡ããã¨ãå¤ãã£ãã®ã§ãããã©ã¤ã¾ããã£ã¯ã¹ã®çé大渡ãããVJããã£ãåã§ã¯KINECTã®çæ§ã¿ãããªå¤§ããªã»ã³ãµã¼ãç½®ãã¦ãªã¢ã«ã¿ã¤ã ãã¤ã³ãã¯ã©ã¦ãã¨ãã§ã¯ããããããåãã¦ããã®ãè¦ãã¦ãã¾ãã
ä»ã ã£ãããã¹ããä¸ã¤ã§ç¹ç¾¤ãåå¾ãã¦Shaderã§ããæãã«æçãã¦ããããã¨ã§è¶
ãã£ãããã¨ãã§ã¯ãããªã¢ã«ã¿ã¤ã ã«ä½ããããããªãã§ããããã
Colored Point Cloud
Colored Point Cloudã·ã¼ã³ã¯RGBãã¼ã¿ã交ãã¦è²ä»ãã®3Dç¹ç¾¤ãã¼ã¿ã表示ã§ãããµã³ãã«ã§ãã
ã½ã¼ã¹ãè¦ã¦ã¿ãã¨ãToFãã¼ã¿ã¨RGBãã¼ã¿ã®ãããã³ã°ãã¨ãTofArCoordinateManagerãå¦çãç°¡åã«ãã¦ããã¦ããããã§ãã
https://github.com/SonySemiconductorSolutions/tof-ar-samples-basic/blob/f4865d44230eda2ebde634b5bbfd796314d37c04/Assets/TofArSamplesBasic/ColoredPointCloud/Scripts/ColoredPointCloud.cs#L83-L90
ToFã«ã¡ã©ã¨RGBã«ã¡ã©ã¯è§£å度ãè¦éè§ãç°ãªãã¾ããã端æ«ä¸ã®ç©ççãªåãä»ãä½ç½®ãç°ãªãã®ã§ã«ã¡ã©åä½ã§æ®å½±ããæ åãåç´ã«éãåãããã ãã§ã¯ãããçãã¾ãã
ãããåãããã«ã¯ã«ã¡ã©ãã¨ã®ç¹æ§ã表ããã©ã¡ã¼ã¿ãå
ã«è¨ç®ãè¡ãå¿
è¦ãããã¾ãã
詳ããã¯ãã®ãããªã¹ã©ã¤ãããããããªã®ã§ããã£ãããã²ã覧ãã ããã
ã«ã¡ã©ãã©ã¡ã¼ã¿ã¯æ©ç¨®ã¯ãã¡ãããåãæ©ç¨®ã§ãã¢ãã«ã®ãã£ã¦ç°ãªããã¨ãããã®ã§ããã®éããå¸åãã¦ããããã®ããµã¯ãã¨æ°è¡ã§ä½¿ããã¨ããã®ã¯ããããã¨ã ã¨æãã¾ãï¼
Human Point Cloud
Human Point Cloudã·ã¼ã³ã¯RGBãã¼ã¿ã«å ããToF AR ã®Segmentationã³ã³ãã¼ãã³ãã®èªèçµæã交ãã¦RGBæ åä¸ã®äººç©ï¼ã¨æ¨å®ãããé¨åï¼ã®ã¿ã«éå®ããè²ä»ãã®3Dç¹ç¾¤ãã¼ã¿ã表示ã§ãããµã³ãã«ã§ãã
Segmentationã³ã³ãã¼ãã³ãã®äººç©èªèã«ã¤ãã¦ã¯ãã¡ãã«èª¬æãæ¸ããã¦ãã¾ãããHuman Depthããããããªã®ã§ãARFoundationã§ã¯iOSããã¤ã¹ä¸ã§ããã§ããªãã£ã Human Stencil, Human Depth ãAndroidã§ã使ããã¨ãããã¨ã§ããï¼ https://developer.sony.com/develop/tof-ar/development-guides/docs/ToF_AR_Reference_Articles_ja.html#_humandetector
ãã®ãããã§äººç©ã®ãã¹ã¯ãã¼ã¿ãåã£ã¦ãããã¨ãåããã¾ããã https://github.com/SonySemiconductorSolutions/tof-ar-samples-basic/blob/f4865d44230eda2ebde634b5bbfd796314d37c04/Assets/TofArSamplesBasic/HumanPointCloud/Scripts/HumanPointCloud.cs#L308-L317
Segmentation
Segmentationã·ã¼ã³ã¯ToF AR ã®Segmentationã³ã³ãã¼ãã³ãã®èªèçµæã表示ãããµã³ãã«ã§ããç¾å¨ã¯ä»¥ä¸2ã¤ã®èªèæ©è½ãç¨æããã¦ãã¾ãã
- SkyDetector - 空(ãã)é¨åãèªèãã該å½é¨åã®ãã¹ã¯ãã¼ã¿ãåå¾ã§ãã
https://developer.sony.com/develop/tof-ar/development-guides/docs/ToF_AR_Reference_Articles_ja.html#_skydetector - HumanDetector - 人ç©é¨åãèªèãã該å½é¨åã®ãã¹ã¯ãã¼ã¿ãDepthãã¼ã¿ãåå¾ã§ãã
https://developer.sony.com/develop/tof-ar/development-guides/docs/ToF_AR_Reference_Articles_ja.html#_humandetector
ã¾ãããµã³ãã«ã®è¨å®ããã«ãè¦ãã¨ãããããNotçãããã空(ãã)以å¤ããã¹ã¯ãããã人ç©ä»¥å¤ããã¹ã¯ãããªãã·ã§ã³ãç¨æããã¦ãã¾ãã
ããããå¿ç¨ããã°ãæ åã®ä¸ã§äººç©ã ããæ¶ããããéã«ã°ãªã¼ã³ããã¯ãªãã®ãªã¢ã«ã¿ã¤ã èæ¯å·®ãæ¿ã表示ãªãããä½ãããã§ããï¼
ã¾ã¨ã
ä»åã¯Point Cloudã¨Segmentationé¢ä¿ããç´¹ä»ãã¾ããã
èªåã§ä½ãã¨ããã¨å¤§å¤é¢åãªå¦çãAPIåããã¦ããããiOSã§ã¯ã§ãããAndroidã§ã¯ã§ããªãã£ãARã«å½¹ç«ã¤æ©è½ãè£å®å®è£
ããã¦ãã¦æ©ç¨®ã«ä¾åããªãéçºãè¡ããããã«ãªã£ã¦ãããã¨ããããã¾ããã
次åã¯ããããToF ARã®ã¦ãã¼ã¯ãã¤å¼·åãªæ©è½ã§ããHandæ©è½ãç´¹ä»ãã¦ããã¾ãã®ã§ã楽ãã¿ã«ï¼
Sony "ToF AR" SDK ãµã³ãã«ç´¹ä» [1] ToF ARã¨ã¯ï¼Color/ToFæ åã表示ãããµã³ãã«ç¾¤
ä¹
ãã¶ãã®ããã°å·çã§ããã
2022å¹´6æ15æ¥ã«Sonyããé¢ç½ãããªUnityç¨SDK "ToF AR" ãä¸è¬å
¬éããããµã³ãã«ãè²ã
触ã£ã¦ã¿ã¾ããã®ã§ç´¹ä»ãã¦è¡ãããã¨æãã¾ãã
- ToF ARã¨ã¯ï¼
- ToF ARã®ãã¦ã³ãã¼ã
- ToF AR Samples Basic ãµã³ãã«ã®ãã«ã
- Color ã·ã¼ã³
- Color Depth
- Basic Stream
- Depth Confidence
- ã¾ã¨ã
ToF ARã¨ã¯ï¼
ToF ARã¨ã¯ãããã¡ãã®ãã¬ã¹ãã覧ãã ããã www.sony-semicon.co.jp
è¦ããã«Sonyãä¸ççã«å¤§ããªã·ã§ã¢ãæã¤ã¹ããç¨ToFã»ã³ãµã¼ãLiDARã¹ãã£ãã¼ã®ãã¼ã¿ããSonyãå¾æã¨ããã»ã³ã·ã³ã°æè¡ããããããããèªèçµæãã¼ã¿ã«ç°¡åã«ã¢ã¯ã»ã¹ã§ããUnityç¨SDKãããã"ToF AR"ã¨ãããã¨ã§ãããã
åã触ã£ã¦ã¿ãææã§ã¯ãARã¢ããªãéçºã§ãããã¨ããã®ã¯ãã¡ãããã«ã¡ã©ãç»åèªèæè¡ã¸ã®ãã ãããæããããAPIã»ããã ã¨æãã¾ããã
ãããSonyãããã£ã¦è¨ãã®ã§ããããï¼ï¼
ToF ARã®ãã¦ã³ãã¼ã
ToF AR ã¯Sony Developer World ãããã¦ã³ãã¼ããããã¨ãã§ãã¾ãã
Overview - ToF AR - Sony Developer World
ToF ARã«é¢ãããã¤ã¼ãã観測ãã¦ããã¨ã©ã¤ã»ã³ã¹æ¡é
ãè¦ã¤ãã«ããã¨ãã話ãããããã§ããããã¦ã³ãã¼ãæã«è¡¨ç¤ºãããã®ã§ç¢ºèªãã¦ããã¾ãããã
ãã¦ã³ãã¼ãããzipãã¡ã¤ã«ãå±éããã¨ãSDKã®unitypackageã5ã¤å
¥ã£ã¦ãã¾ãã
ãã¡ã¤ã«å | 説æ |
---|---|
ToFAR_Base_v#.#.#_Android.unitypackage | Androidãã«ãç¨åºæ¬æ©è½ |
ToFAR_Hand_v#.#.#_Android.unitypackage | Androidãã«ãç¨Handãã®ä»ã®æ©è½ |
ToFAR_Base_v#.#.#_Android.unitypackage | iOSãã«ãç¨åºæ¬æ©è½ |
ToFAR_Base_v#.#.#_Android.unitypackage | iOSãã«ãç¨åºæ¬Handãã®ä»ã®æ©è½ |
TofAR.ThirdParty.ARFoundationConnector-v#.#.#.unitypackage | ARFoundationæ¥ç¶æ©è½ |
ç´°ååããã¦ãã¾ãããAndroid / iOS 両ãã©ãããã©ã¼ã åãã«ãã«ãããã®ã§ããã°ä¸ã®4ã¤ãå
¨ã¦ã¤ã³ãã¼ãããã°è¯ãã§ãã
ã¢ããªã使ç¨ãããã©ãããã©ã¼ã ãå¿
è¦ãªæ©è½ãéå®ããã¦ããå ´åã¯ã¢ã»ãããå°ãªããã¦ãã¤ããªãµã¤ãºãå°ããã§ãããããªé
æ
®ããããã¾ããã
ToF AR Samples Basic ãµã³ãã«ã®ãã«ã
ToF ARã®åºæ¬çãªæ©è½ã確èªã§ãããµã³ãã«ã¯ä¸è¨GitHubãªãã¸ããªããåå¾ãããã¨ãã§ãã¾ãã
ã¯ãã¼ã³ãã¾ãã¯zipãã¡ã¤ã«ã§ãã¦ã³ãã¼ããããæ©éUnity Editorã§éãã¦è¡ãã¾ãããã
åä½ç¢ºèªããã¦ããUnityã®ãã¼ã¸ã§ã³ã¯ãToF AR v1.0.0 ã®å ´åä¸è¨ã§ãã
- Unity 2020.3.28f1
- Unity 2021.2.11f1
Unity Editorã§ããã¸ã§ã¯ããéãã¨ãã¨ã©ã¼ã¡ãã»ã¼ã¸ã表示ããã¾ãã
ã§ãããã¯ToF ARèªä½ããµã³ãã«ã®ããã¸ã§ã¯ãã«å«ã¾ãã¦ããªãã ããªã®ã§ãæ
ã¦ãé¨ãã [Enter Safe Mode] ã¾ã㯠[ignore] ã§é²ã¿ã¾ãããã
ããã¸ã§ã¯ãããªã¼ãã³ã§ããããToF ARã®unitypackageãã¤ã³ãã¼ãããã°ãã«ãã¨ã©ã¼ã¯å
¨ã¦è§£æ¶ãã¾ãã
ãã¨ã¯ãã«ããã¦ããã¤ã¹ã«ãããã¤ãã¾ãããï¼
ã¢ããªã±ã¼ã·ã§ã³ãèµ·åããã¨ãã¡ãã¥ã¼ç»é¢ã表示ããã¾ãã
ã²ã¨ã¤ã²ã¨ã¤ã®ãã¿ã³ããµã³ãã«ã·ã¼ã³ã«ãªã£ã¦ãã¾ãã
ãµã³ãã«ã·ã¼ã³ããã¡ãã¥ã¼ã«æ»ãã«ã¯ç»é¢ã4æ¬æã§ã¿ãããã¾ãã
ãããããµã³ãã«ã·ã¼ã³ãã²ã¨ã¤ã²ã¨ã¤ãç´¹ä»ãã¦è¡ãã¾ãããã
Color ã·ã¼ã³
ã¤ã¡ã¼ã¸ããããããã«ãããªãç¨æãã¾ããã 4ã¤ã®ç«¯æ«ã§ã·ã¼ã³ãæ¯è¼ãããã¾ãã
使ç¨ãã端æ«ã¯ä»¥ä¸ã§ãã
端æ«å | ç¹å¾´ |
---|---|
Sony Xperia1 II | Rearã«iToFã»ã³ãµã¼æè¼ |
Samsung Galaxy S20 Ultra 5G | Rearã«iToFã»ã³ãµã¼æè¼ãé«è§£å度ToFãã |
Apple iPhone12 Pro | Rearã«dToF(LiDAR)ã»ã³ãµã¼ãFrontã« TrueDepthã»ã³ãµã¼ãã |
Apple iPad Pro 12.9inch gen5 | 大ããªiPhone |
Colorã·ã¼ã³ã¯ãRGBã«ã¡ã©ã®æ åã表示ãããµã³ãã«ã§ãã
ã¾ãããããããªãé常ã¯Unityã®WebCamTextureã使ãã°ååããç¥ãã¾ããã
ãã ãããã¤ã³ãã¯ãã®å§å·»ã®è¨å®é
ç®ã§ãã
FPSå¤æ´ããã©ã¼ã«ã¹å¶å¾¡ãé²åºã®è¨å®ããã©ãã·ã¥ã®å¶å¾¡ãªã©ãªã©ã
ã«ã¡ã©ã«ã¤ãã¦ã§ããããªãã¨ã¯å
¨é¨ã§ããå¢ãã®è¨å®é
ç®ã
ãã¼ã¿ã®åºåãã©ã¼ããããYUVã ãã§ãªããRGBA, BGR, RGB ã¨ããã«ãOpenCVãTensorFlowãªã©ã§ã©ããComputer Visionãã£ã¦ãã ããã¨è¨ããã°ããã§ãã
ããã¦å®ã¯ãã®Coloræ©è½ã¯ToFãLiDARãæè¼ãã¦ããªãæ©ç¨®ã§ã使ç¨ãããã¨ãã§ããã®ã§ãåã£ãã«ã¡ã©ã¢ããªãªã©ç°¡åã«ä½ãããã§ãã
ãããããããªãToFã§ãARã§ããªãã¨ããã§åããã ãããè¦ãæãã§ãã
Color Depth
Color Depthã·ã¼ã³ã¯RGBã«ã¡ã©æ åã¨ToFãã¼ã¿æ åãéãåããã¦è¡¨ç¤ºãããµã³ãã«ã§ãã
ToFã«ã¡ã©ã«ã¤ãã¦ããColorã«ã¡ã©ã»ã©ã§ã¯ããã¾ãããè¨å®ãç¨æããã¦ãã¾ãã
é¢ç½ãã®ã¯ Deleyè¨å®ã§ãColoræ åã«å¯¾ãã¦é 延ãèµ·ãããã¨ãã§ãã¾ãã
https://youtu.be/tMWotQi9xl0?t=30
ã°ã©ãã£ã¦ã¹ã®ãªãã·ã§ã³(å¤)ãã¹ã¿ã³ãã®ãããªå身ãã¤ãã¦ãããããªãã¸ã¥ã¢ã«è¡¨ç¾ãç°¡åã«ä½ãããã§ãã
ToFãã¼ã¿ãé
延ãããã°ãToFããçæã»èªèãããHandèªèçµæãMeshãã¼ã¿ãªã©ãåãããã«é
延ããã®ã§ãColoræ åã§èªåã®æãééããå¾é
ãã¦æ³¢ç´ãåºã¦ãããããªè¡¨ç¾ãªã©ãè²ã
æãã¤ãã¨ãããããã¾ããã誰ãä½ã£ã¦ãã ããw
Basic Stream
Basic Streamã·ã¼ã³ã¯ãColor, ToF ãã㦠Confidenceæ åã並ã¹ã¦è¡¨ç¤ºãããµã³ãã«ã§ãã
KINECTã触ã人ã§ããã°Confideneã¯IRã¨ãããã¨ã§å¤§ä½åã£ã¦ãã®ããªã¨æãã¾ãã
Galaxy S20 Ultra 5G ã§ã¯ 640x480 é«è§£åToFã¢ã¼ããç¨æããã¦ãã¾ãã
https://youtu.be/Zla6JZKEafM?t=62
é«è§£åãªä»£ããã«FPSã5ç¨åº¦ã«è½ã¡ãã®ã§ãããAndroidã§éçãªç©ä½ã«å¯¾ãã¦å¯åº¦ã®æ¿ãDepthãã¼ã¿ã欲ããå ´å使ãã§ãããã¢ã¼ãã§ã¯ãªããã¨æãã¾ãã
対ããiOSããã¤ã¹ã§ã¯Frontã§é«è§£åé«å¯åº¦ã®Depthãã¼ã¿ã15FPSã§åå¾ã§ãã¾ãã
ãããã«ãã¦ã解å度ãé«ã¾ãã¨FPSãè½ã¡ããç¡çããããã¨ç±ãåºãã
éæ³ã£ã¦ç¡ããã ãªã£ã¦æãã¾ãããã
Depth Confidence
Depth Confidenceã·ã¼ã³ã¯ãToFã¨Confidenceã表示ãããµã³ãã«ã§ãã
ãã®ã·ã¼ã³ã®ç¹è²ã¯ãDepthæ åä¸ã®ã¿ããããé¨åã®è·é¢æ
å ±ã表示ãã¦ãããã¨ããã§ãã
ç°¡æã¡ã¸ã£ã¼ã¨ãã¦ä½¿ãã¾ãã
éã«ãã®ToFã«ã¡ã©æ¬å½ã«æ£ç¢ºãªã®ï¼ã£ã¦ããã®ãå£ããæ£ç¢ºã«1ã¡ã¼ãã«ã®ã¨ããããå£ã¾ã§ã®è·é¢ã表示ããã¦ç²¾åº¦ã測ããã¿ãããªä½¿ãæ¹ãã§ãã¾ããã©æ®éããã¾ããããããã¨ã¯ããªãã§ããããåã¯ããããã¾ããã©(ç¬)
ã¾ã¨ã
ä»åã¯ããã¾ã§ã
ãµã³ãã«ãåããã¦ã¿ã¦ãã®ç¹å¾´ãæãã¨ãããå¾ç¶ãªãã¾ã¾ã«æ¸ãã¦ã¿ã¾ããã
ã«ã¡ã©ã«ãã©ã¼ã«ã¹ããSDKã§ãããã¨ãæãã¦ããã ããã§ããããã
å¼ãç¶ãæ®ãã®ãµã³ãã«ãç´¹ä»ãã¦ããã¾ãã®ã§æ¬¡åãã楽ãã¿ã«ï¼
次åã¯ãã¡ã
satoshi-maemoto.hatenablog.com
MacBook Pro (M1 Pro)ã®Unity Android Build ãã³ããã¼ã¯
ãä¹
ãã¶ãã§ãï¼
MacBook Pro 16-inch ãå±ãã¾ããï¼CPUã¯M1 Proãé¸æãã¦ãã¾ãã
ã¨ã«ããç©åãæ§è½ã ã¨è¨ããã¦ãã¾ããèªåããã使ãã¦ã¼ã¹ã±ã¼ã¹ã§ã©ããããåãã®ããã³ããã¼ã¯ãåã£ã¦ã¿ã¾ããã
1.ã¦ã¼ã¹ã±ã¼ã¹
åã¯æ®æ®µAndroid / iOSç¨ã®ã©ã¤ãã©ãªãSDKããã¼ã«ã®è¨è¨éçºãè¡ãªã£ã¦ãã¾ãã
éçºè¨èªã¯C++(Android Studio, Xcode)ã¨Unityã§ãã
ã«ã¡ã©ç³»ã®ãã®ãªã®ã§åºæ¬çã«ä½ã¬ã¤ã¤ã®C++å®è£
é¨ã§å¦çãè¡ãªããé«ã¬ã¤ã¤ã®Unityã¨ããåãããã¾ãã
åä½ç¢ºèªã¯åºæ¬çã«ã¯Unityã§ãã«ããè¡ãªããå®æ©ã¸ã¢ããªã転éãã¦è¡ããã¨ã«ãªãã¾ãã
ãã®ãã«ãæéã¯ã ããã5åãããã®å°è±¡ã§ãã
ãã® 5åã¨ããã®ã¯ãã®éã«ä»ã®ãã¨ãããã«ã¯çãããã©å¾ ã¤ã«ã¯é·ã ã§ãã
絶å¦ã«ã©ããããããªãæéã§ã(ç¬)
åã®å ´åããã¼ã ãããã«ãªã¯ã¨ã¹ããéããã¦ããã®ã§ã½ã¼ã¹ã³ã¼ãã¬ãã¥ã¼ãããã¨å
±ã«ãåããã¦ã¿ãªãã¨ããããªãå¤æ´ã«ã¤ãã¦ã¯é½åº¦ãã§ãã¯ã¢ã¦ããã¦ããã¸ã§ã¯ããéãããã«ããã¦åä½ç¢ºèªããã¾ãã
ãã®åº¦ã«ãã«ã5åã§ãã
åãããç¬éãã¾ãåããªãã£ããããããã®ãã«ãã¯ç¡é§ã«ãªãããã£ã¼ãããã¯ãã¦ç´ã£ãã¨é£çµ¡ãåããã¨ã¾ããã«ãã§ãã
ä»äºæéã®å¤§åãUnityãã«ãã«è²»ããããã¨è¨ã£ã¦ãéè¨ã§ã¯ãªãæ¥ãããã®ã§
1å1ç§ã§ããã«ãã¯çãããã ã®ã§ãã
åã¯éããã人çã®æéããã£ã¨æå¹ã«ä½¿ããããã§ãï¼
ããã§ä»å㯠Unityããã¸ã§ã¯ãããªã¼ãã³ãã¦Androidã¢ããªããã«ããã ã¨ããã¦ã¼ã¹ã±ã¼ã¹ã§ãã³ããã¼ã¯ãåã£ã¦ã¿ããã¨æãã¾ãã
ãµã³ãã«ã«ä½¿ç¨ããUnityããã¸ã§ã¯ãã¯ãã¡ãã
2.æ¯è¼ç°å¢
A: G-Tune (NG-N-i5750) | B: MacBook Pro (13-inch, 2020) | C: MacBook Pro (16-inch, 2021) | |
---|---|---|---|
CPU | Core i7-9750H 2.60GHz | M1 | M1 Pro |
Memory | 32GB | 16GB | 32GB |
Storage | SSD | SSD | SSD |
OS | Windows 11 Pro 21H2 | macOS Monterey 12.0.1 | macOS Monterey 12.0.1 |
ä¾¡æ ¼ | ç´30ä¸å | ç´20ä¸å | ç´40ä¸å |
ãã¦ã¹ã³ã³ãã¥ã¼ã¿ã®G-Tune ã²ã¼ãã³ã°ãã¼ãããã³ããã¼ã¯ã®åºæºã¨ãã¾ãããããã¯ç´2å¹´åã«è³¼å
¥ããããã®ã§ãã
MacBook Pro ã¯M1 Proã®æ©ä½ã«å ãM1ãæè¼ãã13-inch ãç¨æãã¾ãããM1 Proã«ãªãã¨ã©ãã ãæ§è½ãå¤ããã楽ãã¿ã§ããï¼ï¼
3.æ¯è¼çµæ
ã¨ããããã§ãçµæã©ãï¼
ããã£ãæéã«å ããåºæºã§ããG-Tune対ãã¦åæ¸ãããç§æ°ãé«éåçãæ±ãã¦ãã¾ãã
ã¾ããåãããã«M1ã«å¯¾ãã¦M1 Proã§åæ¸ãããç§æ°ãé«éåçãæ±ãã¦ãã¾ãã
(ãªãå¦çæéè¨æ¸¬ã¯ã¹ãããã¦ã©ããã§è¡ãªã£ã¦ããããè¥å¹²ã®èª¤å·®ã¯ããã¾ãã)
å®è¡ããã¢ã¯ã·ã§ã³ã®æµãã¯ä¸è¨ã§ãã
- Libraryãã©ã«ããªã©ã®ãã³ãã©ãªãã©ã«ããåé¤ããç¶æ ã§ããã¸ã§ã¯ããéã x 3å
- ãã«ããã©ãããã©ã¼ã ãAndroidã«åãæ¿ãã
- ãã«ãããï¼ã¤ã³ã¯ãªã¡ã³ã¿ã«ãã«ããæå¹ãªã®ã§ãååã¨2-5åç®ã®å¹³åãåãã¦æ±ããï¼
- Unityã®ãã¼ã¸ã§ã³ãå¤æ´ãã¦ãã«ãããï¼ååã¨2-5åç®ã®å¹³åãå¥ã«æ±ããï¼
4.èå¯
4-1.Unity2020ããUnity2021ã«ç§»è¡ããã¨
- ååãã«ãã¯ãM1 Pro(C)以å¤ã¯2020ã®ã»ããéããã¤ã³ã¯ãªã¡ã³ã¿ã«ãã«ãã®æºåã«æéããããã®ããã
- 2åç®ä»¥éã®ãã«ãã¯ç©åãéããªããæè¦æéã¯ååç¨åº¦ã«ãªãã
åä¸ããã¸ã§ã¯ããç¹°ãè¿ããã«ããããã¨ãå¤ã人ã¯Unity2021ã使ãã°ããã ãã§åãæ¹æ¹é©ãã§ããï¼
4-2.G-Tune(A)ããM1(B)ã«ç§»è¡ããã¨
- Unity Projectãªã¼ãã³ã¯133%ã®é«éå
- ååãã«ãã¯160ï¼ ã®é«éå
- 2åç®ä»¥éã®ãã«ãã¯125-145ï¼ ã®é«éå
30ä¸åã®PCãã20ä¸åã®PCã¸ä¹ãæãã¦ç·ãã¦150ï¼ è¿ãã®æéç縮ãã§ããããªãã§ä¹ãæããªãã®ï¼ï¼ã¬ãã«
4-3.G-Tune(A)ããM1 Pro(C)ã«ç§»è¡ããã¨
- Unity Projectãªã¼ãã³ã¯161%ã®é«éå
- ååãã«ãã¯165-172ï¼ ã®é«éå
- 2åç®ä»¥éã®ãã«ãã¯130-149ï¼ ã®é«éå
30ä¸åã®PCãã40ä¸åã®PCã¸ä¹ãæãã¦ç·ãã¦160ï¼ è¿ãã®æéç縮ãã§ãããåãï¼åããã©æè³ããããªãã ããï¼
4-4.M1(B)ããM1 Pro(C)ã«ç§»è¡ããã¨
- Unity Projectãªã¼ãã³ã¯141%ã®é«éå
- ååãã«ãã¯114-129ï¼ ã®é«éå
- 2åç®ä»¥éã®ãã«ãã¯107ï¼ ã®é«éå
ããã¸ã§ã¯ããéãã¦ããã®ååãã«ãã¯éããªã£ãï¼ãã©ãã«ãã¯ãããªã«å¤ãããï¼
5.ã¾ã¨ã
以ä¸ãã³ããã¼ã¯çµæãã¾ã¨ããã¨ãåã®ã¦ã¼ã¹ã±ã¼ã¹ã«ããã¸ã§ã¯ããªã¼ãã³ã¨ååãã«ããé«éåãããM1 Pro æè¼ MacBook Pro ã¯ãã¹ããããã ã¨ãããã¨ããããã¾ããï¼
ãã æ£ç´å¤ãã®Unityã§ãã«ãããæ¹ã M1 ãã M1 Pro / Max ã«ä¹ãæããã»ã©ã§ããªã ã¨ãããã¨ãè¦ãã¾ããã
ãã ä»åã¯Unity以å¤ã®ã¢ããªã¯çµäºãããã¯ãªã¼ã³ãªç°å¢ã§ãã¹ãããã®ã§ããã©ã¦ã¶ã§å¤ãã®ã¿ããéããAndroid StudioãXcodeãªã©ã®å¥ã®ãã¼ã«ãç«ã¡ä¸ãã¡ã¢ãªãæ¶è²»ããç¶æ
ã§ã¯ãã£ã¨å¤§ããªå·®ãåºããã§ãã
å®éããã«ã以å¤ã®æ®éã®æä½ã®ããããæã¯M1 Pro ã®æ©æµã ãªã¨æãã¦ãã¾ãã
ç¾å¨éM1ã®PCãã使ãã®æ¹ã¯M1ã«ä¹ãæããªãçç±ã¯ç¡ãã¨æãã¾ããã
ãã¾ãã¦éãã¦å®ãããã§ã
ã¾ãé©ãã¹ãäºå®ã¨ãã¦ãã¾ã Unityãããããå¼ã°ããJava, Gradleãªã©ã®ãã¼ã«ã¯M1ã«æé©åããã¦ãã¾ããã
追ã£ã¦æé©åãè¡ãããã¨ã¾ãåçã«éããªãã¨æå¾
ã§ãã¾ããããã¯ãã°ã(èªå½).
.
M1 Pro / M1 Max æè¼ã®MacBook Proã«ã¤ãã¦ã¯ãã³ããã¼ã¯è¨äºãããããåºã¦ãã¾ããèªåãå®ç¨ããã¦ã¼ã¹ã±ã¼ã¹ã¨ã¯ä¹é¢ãããã®ã§èªåã§èª¿ã¹ã¦ã¿ãã¨ãã¾ãã¾ãªæ°ã¥ããããã¾ããã
ã¾ããUnityã§ããã¤ã¹åãIL2CPPãã«ããå¤ãè¡ãæ¹ã«ã¨ã£ã¦ãåèã«ãã¦ããããæ
å ±ã«ãªãã®ã§ã¯ãªããã¨æãã¾ãã
ãã¦ããããç¯ç´ã§ããããã«ãªã£ãæéã§ã©ãã ãã³ã¹ããæ¸ãã®ãã¨ãããéé¢ã¯ãã¾ã触ãã¦ãã¾ããã
次åããããä¹ãæããã¨ä½åãå¾ãªã®ï¼ï¼ã£ã¦ããã®ãè¨ç®ãã¦è¨äºãæ¸ãäºå®ã§ãã
Azure Spatial Anchors ã®ãããã«ãã§ããããã¸ã§ã¯ã
What's?
Azure Spatial Anchors ã®åå¼·ãããã®ã§ããããã¥ã¼ããªã¢ã«ããªãã£ã¦ãã«ããã¦ããã«ã¯ãããªãã«æéãããã£ã¦å¤§å¤ã§ãã(ç¬)
ãããã«ãã§ããããã¸ã§ã¯ããå
¬éããã®ã§è¯ãã£ããã使ããã ããã
ä¸è¨ãç¹å¾´ã§ãã
- ã¢ã«ã¦ã³ãæ å ±ãè¨å®ããã°ãããã«ãã§ãã¾ãã
- UWP(Windows Mixed Reality), Android with ARCore, iOS with ARKit ã®3ãã©ãããã©ã¼ã ã«å¯¾ãããã©ãããã©ã¼ã åãæ¿ãã ãã§ãã«ãã§ããåä½ãã¾ã
- Coarse Relocalizationã«å¯¾å¿ãã¦ãã¾ã
ï¼ãã¾ãåããã¦ããªããã©ãããã©ã¼ã ãããã¾ãããªãã¸ããªã®Readmeãåç §ãã ããï¼ - æä½ãã·ã³ãã«ãªã®ã§ãå¶æ¥ãã¦ããã人ã«æ¸¡ããã¢ã¢ããªçã«ä½¿ãã¨ä¾¿å©ã§ãï¼çã ããwï¼
Demo videos
åèãªã³ã¯
宮浦ããããããã¨ããããã¾ãï¼ qiita.com