-
Notifications
You must be signed in to change notification settings - Fork 4
/
Implementationnotes.html
96 lines (74 loc) · 6.32 KB
/
Implementationnotes.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>cAR Implementation Notes</title>
</head>
<body>
<h1>cAR Implementation Notes</h1>
<h2>Table of Contents</h2>
<ul>
<li><a href="#1">1 Introduction</a></li>
<ul>
<li><a href="#1.1">1.1 Purpose</a></li>
<li><a href="#1.2">1.2 Scope</a></li>
<li><a href="#1.3">1.3 Definitions</a></li>
</ul>
<li><a href="#2">2 ARCore</a></li>
<ul><li><a href="#2.1">2.1 Development RoadBlocks</a></li></ul>
<li><a href="#3">References</a></li>
</ul>>
<h2 id="1">1 Introduction</h2>
<p>
The process of building real software is always arduous and time consuming and will often face roadblocks that cannot be anticipated in the design and analysis of an idea for an application. Implementation notes document all the roadblocks and challenges that were faced in the development of the cAR application. This dwells into detail the plethora of real world software development challenges faced by the developers in attempting to build cAR.
</p>
<h3 id="1.1">1.1 Purpose</h3>
<p>
Implementation notes are a thorough documentation of all the roadblocks and challenges that were faced in the development of the cAR application. The document describes all major issues with external software tools that permanently blocked the development of key features of the cAR application.
</p>
<h3 id="1.2">1.2 Scope</h3>
<p>
Implementation notes will only focus on external software tools used and the unsolvable roadblocks created by said tools. The document will not discuss major issues that were faced, but were eventually solved in the development of cAR.
</p>
<h3 id="1.3">1.3 Definitions</h3>
<p>
<li>AR - Augmented Reality</li>
<li>API - Application Programming Interface</li>
<li>App - Application</li>
<li>IDE - Integrated Development Environment</li>
</p>
<h2 id="2">2 ARCore </h2>
<p>
During the design and analysis phase of cAR, it was discovered that the only way to render AR models in an Android app was through the use of Google's ARCore API. However, ARCore API required significant knowledge of the industry standard graphics library, OpenGL.
<br><br>Using OpenGL, to load and render 3D models requires a developer to have a strong understanding of graphics engineering. None of the engineers on the team had the background to use OpenGL directly. A workaround to this roadblock was to use Google’s third party OpenGl wrapper Sceneform.
<br><br>Sceneform abstracted the calls to OpenGL and removed the massive technical understanding of graphics. The entirety of the android application of cAR, depended on the usability of Sceneform.
<img src="images/Image3.png"
width="806"
height="381"/>
<br><strong>Figure 1</strong>: A screenshot of Sceneform’s marketing material taken from <a href="https://developers.google.com/sceneform">https://developers.google.com/sceneform</a> , in the top right corner the web page states, “Sceneform is a 3D framework that makes it easy for you to build ARCore apps without OpenGL.”
<br><br>Based on the information presented, during the design and analysis phase, it was assumed that Sceneform was a functioning software tool that abstracted OpenGL.
</p>
<h3 id="2.1">2.1 Development RoadBlocks</h3>
<p>
While building the prototype of cAR for android, several tutorials [1,2] were consulted and sample code was looked at. It became obvious that Sceneform was the only viable option to rapidly build cAR on Android.
<br><br>The very first glaring bug that was encountered was the incompatibility of Sceneform with the latest version of Android Studio. Android Studio is the only existing IDE that allows developers to build and test Android applications on an Android device or Android emulator.
<br><br>This incompatibility prevented developers from correctly installing the Sceneform plugin, which further prevented the automatic loading of 3-D assets. The first viable workaround to this issue was to create the Sceneform configuration file manually and point them to the 3-D models. However, since the Sceneform library didn’t generate the required configuration lines in the build gradle file, the model’s textures would not load correctly.
<br><br><img src="images/Image2.png"
width="270"
height="480"/>
<br><strong>Figure 2 </strong>: A screenshot of the textureless car model on Android.
<br><br>In order to find the root cause of the missing textures, several sanity tests were performed using existing 3-D models that were sourced from existing sample applications. These 3-D models were originally sourced from Google’s 3-D model sharing website google.ar.poly.com, which contained 3-D models that were optimized for the purpose of AR. During these sanity checks, it was discovered that Google had indefinitely removed google.ar.poly.com.
<br><br><img src="images/Image1.png"
width="651"
height="367"/>
<br><strong>Figure 3 </strong>: A screenshot of Google’s notice on google.ar.poly.com
<br><br>After doing additional research, it was clear that development and maintenance of Sceneform had indefinitely stopped[3,4]. Google shifted their own priorities for AR apps and decided to suspend several projects that originally supported ARCore.
<br><br>It is now clear that Google is discouraging developers from building AR related applications using Sceneform. This meant that any existing bugs in Sceneform have most certainly not been fixed and that the library is itself broken. Because of cARs dependencies on Sceneform, the only viable decision was to cancel the Android version of the application.
</p>
<h2 id="3">References</h2>
<li><a href="https://github.com/jyotivasu/ARCore-Android" rel="nofollow">https://github.com/jyotivasu/ARCore-Android</a></li>
<li><a href="https://developers.google.com/sceneform/develop/samples" rel="nofollow">https://developers.google.com/sceneform/develop/samples</a></li>
<li><a href="https://blog.devgenius.io/where-did-sceneform-for-ar-development-go-8e6b7cae36c2" rel="nofollow">https://blog.devgenius.io/where-did-sceneform-for-ar-development-go-8e6b7cae36c2</a></li>
<li><a href="https://github.com/google-ar/sceneform-android-sdk/issues/989" rel="nofollow">https://github.com/google-ar/sceneform-android-sdk/issues/989</a></li>
<strong>Author:</strong>Abhirup Das
</body>