1 00:00:00,000 --> 00:00:07,600 2 00:00:07,600 --> 00:00:10,460 >> DAVID: So thank you all so much for coming, as you've been tuning in 3 00:00:10,460 --> 00:00:11,415 online as well. 4 00:00:11,415 --> 00:00:14,650 We're so glad to be joined by our friends Dan and Michael here from Leap 5 00:00:14,650 --> 00:00:18,490 Motion, whose company Leap Motion has very generously donated some hardware 6 00:00:18,490 --> 00:00:21,020 for the course sot that you guys can do cool things with this device. 7 00:00:21,020 --> 00:00:22,590 Without further ado, Dan and Michael. 8 00:00:22,590 --> 00:00:23,590 >> DAN GILL: All right, thanks. 9 00:00:23,590 --> 00:00:24,820 Thanks, David. 10 00:00:24,820 --> 00:00:25,470 Thanks folks. 11 00:00:25,470 --> 00:00:26,760 Nice to see you all. 12 00:00:26,760 --> 00:00:28,275 My name is Dan Gill. 13 00:00:28,275 --> 00:00:30,970 And as David described, I'm with Leap Motion. 14 00:00:30,970 --> 00:00:33,000 This is Michael Sutherland. 15 00:00:33,000 --> 00:00:36,900 Since about 1/10 of our company is actually named Michael we call him 16 00:00:36,900 --> 00:00:40,710 Kiwi, and once you hear the accent you'll understand why. 17 00:00:40,710 --> 00:00:44,100 >> But we're thrilled to be here today to present to you folks and you folks 18 00:00:44,100 --> 00:00:47,610 online, and tell you a little bit more about Leap in the development 19 00:00:47,610 --> 00:00:50,580 environment and our developer community, and how it may be able to 20 00:00:50,580 --> 00:00:52,440 impact some of the things you're doing as you get towards 21 00:00:52,440 --> 00:00:53,840 the end of the semester. 22 00:00:53,840 --> 00:00:57,010 I'm going to start off with just a brief introduction for context about 23 00:00:57,010 --> 00:01:01,130 the company and some of the industry examples that we're seeing and a 24 00:01:01,130 --> 00:01:01,950 little bit about it. 25 00:01:01,950 --> 00:01:05,099 And then we're going to jump right into Michael's bit. 26 00:01:05,099 --> 00:01:07,540 >> Michael runs our developer community. 27 00:01:07,540 --> 00:01:11,900 So there's 70,000 plus folks that have accessed our developer portal and 28 00:01:11,900 --> 00:01:15,120 gotten access to the Leap software development kit and are actively 29 00:01:15,120 --> 00:01:17,480 building all different types of applications that 30 00:01:17,480 --> 00:01:18,820 Michael will talk through. 31 00:01:18,820 --> 00:01:21,000 Personally, I run our Enterprise Business. 32 00:01:21,000 --> 00:01:24,770 Which means all the commercial use case for the Leap in a variety of 33 00:01:24,770 --> 00:01:28,840 industries, and I'll talk briefly about that. 34 00:01:28,840 --> 00:01:32,290 >> So what I wanted to do, at a high level most of you are probably 35 00:01:32,290 --> 00:01:35,750 familiar with some form of 3D motion technology. 36 00:01:35,750 --> 00:01:39,190 You've seen the Kinect, or you've seen the commercials for the Samsung phones 37 00:01:39,190 --> 00:01:40,600 with the swiping. 38 00:01:40,600 --> 00:01:44,160 And at some point you've probably tried one of these platforms or seen 39 00:01:44,160 --> 00:01:45,530 them in action. 40 00:01:45,530 --> 00:01:47,750 >> We really feel like we've broken new ground. 41 00:01:47,750 --> 00:01:51,940 And it's all mapped, so it's a very software-driven solution. 42 00:01:51,940 --> 00:01:56,130 It's all proprietary algorithm based, and it's allowed us to do a number of 43 00:01:56,130 --> 00:01:59,170 things that are different than the others in the space. 44 00:01:59,170 --> 00:02:02,130 >> We've reached a level of accuracy that you'll see in the demonstrations 45 00:02:02,130 --> 00:02:04,870 that's far beyond what other folks have been able to do. 46 00:02:04,870 --> 00:02:10,190 So accurate to 1/100 of a millimeter, we can track the palm position in the 47 00:02:10,190 --> 00:02:14,200 fingertips for as many as fit in the field of view. 48 00:02:14,200 --> 00:02:17,700 And again, that accuracy level's opened up a lot of application 49 00:02:17,700 --> 00:02:21,530 opportunities that haven't existed before. 50 00:02:21,530 --> 00:02:23,830 It's entirely embeddable. 51 00:02:23,830 --> 00:02:27,750 >> Because it's such a software driven solution, this little piece of 52 00:02:27,750 --> 00:02:30,940 hardware that you see here is the device. 53 00:02:30,940 --> 00:02:33,090 These are going to be available to you students. 54 00:02:33,090 --> 00:02:35,720 We have 30 that we've donated to the group. 55 00:02:35,720 --> 00:02:38,570 If you decide to do a project based on the Leap, you'll be able to take these 56 00:02:38,570 --> 00:02:40,820 out on loan and spend time with them. 57 00:02:40,820 --> 00:02:43,290 >> We also just announced an embedded version. 58 00:02:43,290 --> 00:02:45,600 So HP will actually start shipping laptops-- 59 00:02:45,600 --> 00:02:48,150 or has started shipping laptops of the device, an embedded 60 00:02:48,150 --> 00:02:49,560 version of this in it. 61 00:02:49,560 --> 00:02:54,040 And because of the software and how software driven this is, the hardware 62 00:02:54,040 --> 00:02:56,110 is incredibly simple and Michael's going to walk you 63 00:02:56,110 --> 00:02:57,620 through what's in it. 64 00:02:57,620 --> 00:02:59,840 We've created a very content rich environment. 65 00:02:59,840 --> 00:03:03,380 >> So those 70,000 developers are building applications. 66 00:03:03,380 --> 00:03:06,780 You folks will have opportunities to build applications and possibly even 67 00:03:06,780 --> 00:03:08,600 get them into our application environment-- 68 00:03:08,600 --> 00:03:10,710 it's called Airspace. 69 00:03:10,710 --> 00:03:15,470 We've got north of 100 apps there, and many, many, many more in the 70 00:03:15,470 --> 00:03:19,290 certification process and in process to being put to use. 71 00:03:19,290 --> 00:03:22,590 >> You'll see that it's incredibly powerful in terms of its speed. 72 00:03:22,590 --> 00:03:25,700 So you'll see there's no latency in the reaction between when you do 73 00:03:25,700 --> 00:03:29,400 something in the field of view and when something happens on the screen. 74 00:03:29,400 --> 00:03:31,880 If you've played around with the Kinect or others, you'll notice a bit 75 00:03:31,880 --> 00:03:35,290 of a lag when you actually have a movement and something happens. 76 00:03:35,290 --> 00:03:39,000 This powerful lack of latency makes a huge difference in what you can 77 00:03:39,000 --> 00:03:41,120 actually do with this platform. 78 00:03:41,120 --> 00:03:43,750 >> And then one thing that we think is really important, we wanted this 79 00:03:43,750 --> 00:03:46,050 platform to be accessible to everyone-- 80 00:03:46,050 --> 00:03:47,920 as many people as possible. 81 00:03:47,920 --> 00:03:51,330 Having such a great software driven platform has made the device and the 82 00:03:51,330 --> 00:03:53,110 platform very inexpensive. 83 00:03:53,110 --> 00:03:56,940 It's a very simple piece of hardware with very simple, commoditized 84 00:03:56,940 --> 00:04:00,190 components in it that allows us to keep this very inexpensive and very 85 00:04:00,190 --> 00:04:05,110 accessible to anyone who wants to take part with the platform. 86 00:04:05,110 --> 00:04:08,210 >> So as you'll see, there's really three main components in the platform. 87 00:04:08,210 --> 00:04:11,610 We've got the peripheral that I talked about, the controller. 88 00:04:11,610 --> 00:04:16,300 It has a USB connection to connect to any type of computing device with the 89 00:04:16,300 --> 00:04:18,160 supported software. 90 00:04:18,160 --> 00:04:21,140 We've got our software development kit in Drivers, so there's a set of 91 00:04:21,140 --> 00:04:24,980 drivers that run on the Windows or Mac machine that you're connected to. 92 00:04:24,980 --> 00:04:27,620 >> And then we've got the software development kit that we've made 93 00:04:27,620 --> 00:04:34,410 available to everyone at no cost on our website to access and build 94 00:04:34,410 --> 00:04:35,830 applications with. 95 00:04:35,830 --> 00:04:39,150 And then finally we've got our Airspace app store, where there's 96 00:04:39,150 --> 00:04:40,470 third party applications-- 97 00:04:40,470 --> 00:04:42,095 both free and paid for applications. 98 00:04:42,095 --> 00:04:46,750 And it's everything from personal productivity to artistic, like music 99 00:04:46,750 --> 00:04:49,590 and painting and drawing, to business applications like CAD 100 00:04:49,590 --> 00:04:51,640 software and others. 101 00:04:51,640 --> 00:04:54,670 102 00:04:54,670 --> 00:04:56,150 >> So I'm going to go through these quick. 103 00:04:56,150 --> 00:05:00,090 But I thought it would be useful as you think about the platform and think 104 00:05:00,090 --> 00:05:02,700 about how the languages that you can develop in and how that 105 00:05:02,700 --> 00:05:03,980 applies to the platform. 106 00:05:03,980 --> 00:05:06,850 Just to run through a couple examples from the industries that we're seeing. 107 00:05:06,850 --> 00:05:10,640 So these are areas where people are making use of the Leap platform to 108 00:05:10,640 --> 00:05:15,070 improve applications or improve outcomes in those industries. 109 00:05:15,070 --> 00:05:19,570 >> Education, as you can imagine, interactive displays, integrating with 110 00:05:19,570 --> 00:05:23,300 curriculum, like you folks are doing with your computer science curriculum. 111 00:05:23,300 --> 00:05:26,110 Lots of applications for special needs students. 112 00:05:26,110 --> 00:05:29,780 So folks who can't, either for physical or cognitive limitations, 113 00:05:29,780 --> 00:05:34,030 interact through a keyboard and mouse are now able to get social 114 00:05:34,030 --> 00:05:37,220 interactions, interactions with computer applications, and do things 115 00:05:37,220 --> 00:05:38,420 they never could before. 116 00:05:38,420 --> 00:05:44,830 >> And then a lot of universities doing user interface research for various 117 00:05:44,830 --> 00:05:47,380 industries have made great use of the device. 118 00:05:47,380 --> 00:05:50,400 Health care is an exciting sector for us that I thought would be important 119 00:05:50,400 --> 00:05:53,500 to touch on briefly. 120 00:05:53,500 --> 00:05:59,000 You can imagine sterility is of the most importance throughout all aspects 121 00:05:59,000 --> 00:06:00,090 of health care. 122 00:06:00,090 --> 00:06:04,360 In an operating room today, a surgeon might have to have an extra person 123 00:06:04,360 --> 00:06:08,540 there, or unscrub and take their gloves off to be able to manipulate 124 00:06:08,540 --> 00:06:11,820 MRI images or CT scans or important patient information 125 00:06:11,820 --> 00:06:13,240 while they're in surgery. 126 00:06:13,240 --> 00:06:17,590 Very inefficient, could compromise sterility if it's not done right. 127 00:06:17,590 --> 00:06:20,590 >> This type of environment now allows you to interact with computer 128 00:06:20,590 --> 00:06:23,870 applications in a completely touchless manner, as you'll see in the demos, 129 00:06:23,870 --> 00:06:24,710 with gloves on. 130 00:06:24,710 --> 00:06:26,170 So they can leave the surgical gloves on. 131 00:06:26,170 --> 00:06:30,650 They can access the images and do everything they need to do in a much 132 00:06:30,650 --> 00:06:32,090 more efficient way. 133 00:06:32,090 --> 00:06:35,180 We think there's some important applications there. 134 00:06:35,180 --> 00:06:38,270 Information access in what I call "germ-rich" areas-- 135 00:06:38,270 --> 00:06:43,030 so hospitals, ATMs, all different types of areas where you don't want to 136 00:06:43,030 --> 00:06:45,035 touch something but you want to access information, 137 00:06:45,035 --> 00:06:47,270 this has become important. 138 00:06:47,270 --> 00:06:50,350 >> Measuring regression as a result of a disease. 139 00:06:50,350 --> 00:06:55,010 If someone's losing mobility in their hand or their arms, or in movement, 140 00:06:55,010 --> 00:06:57,880 being able to measure that because of the level of accuracy. 141 00:06:57,880 --> 00:07:01,530 Or also progress-- so if you want to measure the progress of a drug or the 142 00:07:01,530 --> 00:07:04,880 progress and recovery from something like a stroke, you can very 143 00:07:04,880 --> 00:07:06,720 accurately do that. 144 00:07:06,720 --> 00:07:08,010 And so those are some examples. 145 00:07:08,010 --> 00:07:11,250 >> Data visualization is another interesting space. 146 00:07:11,250 --> 00:07:13,350 I'm sure you've heard a lot about big data. 147 00:07:13,350 --> 00:07:14,880 Everybody talks about big data. 148 00:07:14,880 --> 00:07:17,920 Well, those large data sets in various industries have created real 149 00:07:17,920 --> 00:07:20,040 complexities around user interfaces. 150 00:07:20,040 --> 00:07:24,620 And how do you interact with that data and find correlations, be able to find 151 00:07:24,620 --> 00:07:27,440 actionable information, be able to share it with colleagues-- 152 00:07:27,440 --> 00:07:28,500 it's a huge challenge. 153 00:07:28,500 --> 00:07:31,710 As the amount of data grows, that challenge only gets bigger. 154 00:07:31,710 --> 00:07:36,140 >> 3D navigation with natural hand movements becomes a really interesting 155 00:07:36,140 --> 00:07:40,410 opportunity in that world, and we've seen a lot of input there. 156 00:07:40,410 --> 00:07:42,670 Manufacturing is another one. 157 00:07:42,670 --> 00:07:45,770 We're going to show you some videos from the folks at SpaceX using this in 158 00:07:45,770 --> 00:07:47,360 the manufacturing process. 159 00:07:47,360 --> 00:07:50,860 Also, the manufacturing floor is really dirty, and so they've destroyed 160 00:07:50,860 --> 00:07:53,530 mice and keyboards, and touchscreens aren't a great solution. 161 00:07:53,530 --> 00:07:58,070 But they need to access things like their ERP systems and other platforms 162 00:07:58,070 --> 00:08:01,210 on the floor, and it becomes a challenge for them. 163 00:08:01,210 --> 00:08:04,840 >> And then just a couple more before I turn things over to Michael. 164 00:08:04,840 --> 00:08:05,780 Retail-- 165 00:08:05,780 --> 00:08:09,460 so hopefully at some point, you'll go into a store and they'll have a Leap 166 00:08:09,460 --> 00:08:15,280 enabled screen or kiosk where you can get access to a product, product 167 00:08:15,280 --> 00:08:18,520 options, shop online if they don't have stuff in stock. 168 00:08:18,520 --> 00:08:21,640 I like to talk about it as non-intrusive consumer engagement. 169 00:08:21,640 --> 00:08:25,770 >> So I've been in sales since I graduated from college. 170 00:08:25,770 --> 00:08:28,350 But we all know when we walk into a retail environment, a lot of times you 171 00:08:28,350 --> 00:08:31,840 get pounced on by three or four people. 172 00:08:31,840 --> 00:08:35,500 We think using this type of technology, you can create real 173 00:08:35,500 --> 00:08:39,570 physical experiences with products and options and colors and different 174 00:08:39,570 --> 00:08:43,679 things without having to have a bunch of people jumping on top of people 175 00:08:43,679 --> 00:08:46,700 when they get into the store, and create some interesting things. 176 00:08:46,700 --> 00:08:48,260 >> Desktop productivity-- 177 00:08:48,260 --> 00:08:52,290 you'll see some basic opportunity to work with productivity apps like 178 00:08:52,290 --> 00:08:56,010 PowerPoint to do web browsing, to interact with your operating system. 179 00:08:56,010 --> 00:08:59,760 All without having you having to use a mouse or keyboard, or in addition to 180 00:08:59,760 --> 00:09:02,510 your mouse or keyboard, being able to get some different types of 181 00:09:02,510 --> 00:09:04,440 interactions. 182 00:09:04,440 --> 00:09:08,060 There's a lot of business applications that have inefficient user interfaces, 183 00:09:08,060 --> 00:09:12,430 or have interfaces that could do a lot more if they were able to take 184 00:09:12,430 --> 00:09:17,760 advantage of the 3D space instead of just a flat 2D user interface, so we 185 00:09:17,760 --> 00:09:19,570 think there's a lot of opportunity there. 186 00:09:19,570 --> 00:09:22,520 >> Salesforce.com might be a company you've heard of. 187 00:09:22,520 --> 00:09:25,640 They make customer relationship management systems. 188 00:09:25,640 --> 00:09:28,880 People like me in sales use them all the time, every day. 189 00:09:28,880 --> 00:09:31,450 But when you work with a big account, you may have hundreds 190 00:09:31,450 --> 00:09:32,550 and hundreds of records. 191 00:09:32,550 --> 00:09:36,575 And it's really hard to get a sense of the organizational structure, or all 192 00:09:36,575 --> 00:09:39,180 the activities of what's happened inside of an account, because it's a 193 00:09:39,180 --> 00:09:41,800 very flat 2D user interface. 194 00:09:41,800 --> 00:09:44,740 So we think there's a lot of opportunity to improve the front end 195 00:09:44,740 --> 00:09:46,800 of various business softwares. 196 00:09:46,800 --> 00:09:51,460 >> And then other B2B type applications, we've seen biometric authentication. 197 00:09:51,460 --> 00:09:55,660 So the idea of holding your hand in the field of view, and it's scanning 198 00:09:55,660 --> 00:09:57,980 your hand all the way down to blood flow. 199 00:09:57,980 --> 00:10:02,090 And then being able to use that later on for authentication to access in 200 00:10:02,090 --> 00:10:06,680 doing transactions, access systems, log in to your laptop, control your 201 00:10:06,680 --> 00:10:08,400 home automation system-- 202 00:10:08,400 --> 00:10:11,040 you name it, there's a lot of applications. 203 00:10:11,040 --> 00:10:12,600 >> Commanding control. 204 00:10:12,600 --> 00:10:16,780 So you can imagine, this is more of the "Minority Report" style thing 205 00:10:16,780 --> 00:10:19,020 people talk about when they think about Leap. 206 00:10:19,020 --> 00:10:22,970 The idea of someone in a command area where they've got five or six screens 207 00:10:22,970 --> 00:10:24,950 with video or other types of content. 208 00:10:24,950 --> 00:10:28,270 They need to navigate across applications and call up different 209 00:10:28,270 --> 00:10:33,310 videos, and pull information in, and do all sorts of interesting things. 210 00:10:33,310 --> 00:10:36,500 >> And then finally CAD. 211 00:10:36,500 --> 00:10:41,020 Those environments have been a big early adopter of the Leap platform in 212 00:10:41,020 --> 00:10:44,790 being able to create a more natural way to interact with models of things 213 00:10:44,790 --> 00:10:48,310 that you're creating in the design process, or adjusting after 214 00:10:48,310 --> 00:10:50,970 something's been built, or things of that nature. 215 00:10:50,970 --> 00:10:54,790 >> So that was just to give you a brief context in some of the industrial 216 00:10:54,790 --> 00:10:56,190 applications for the Leap. 217 00:10:56,190 --> 00:10:58,810 I'm sure you can imagine all the consumer applications, and if you've 218 00:10:58,810 --> 00:11:01,190 seen the website you know what those are. 219 00:11:01,190 --> 00:11:04,020 But I wanted, as you think about programming or applications that might 220 00:11:04,020 --> 00:11:08,030 be interesting to look into, here are some of the areas where industries are 221 00:11:08,030 --> 00:11:09,700 paying a lot of attention to this. 222 00:11:09,700 --> 00:11:12,560 >> We were at Children's Hospital before we came here, and talking to them 223 00:11:12,560 --> 00:11:17,210 about a number of really interesting applications around surgical processes 224 00:11:17,210 --> 00:11:20,790 and training and simulation and all different things. 225 00:11:20,790 --> 00:11:25,610 So there's a lot of really interesting opportunities to use the platform and 226 00:11:25,610 --> 00:11:27,330 to use the development environment. 227 00:11:27,330 --> 00:11:31,350 And so hopefully that's good context for you folks. 228 00:11:31,350 --> 00:11:32,660 >> Kiwi's the smart one here. 229 00:11:32,660 --> 00:11:36,400 So I'm going to get out of the way and let him talk you through our 230 00:11:36,400 --> 00:11:39,410 development community, the development environment, and all the resources 231 00:11:39,410 --> 00:11:42,120 that are there available to you folks if you choose to work 232 00:11:42,120 --> 00:11:43,280 with the Leap platform. 233 00:11:43,280 --> 00:11:44,592 So, thank you. 234 00:11:44,592 --> 00:11:45,900 >> MICHAEL SUTHERLAND: Cool, thanks. 235 00:11:45,900 --> 00:11:49,050 So you can see there's really no shortage of opportunities there. 236 00:11:49,050 --> 00:11:52,150 But one of the things we see a lot is people sit down with Leap and they're 237 00:11:52,150 --> 00:11:53,540 like, where do I start? 238 00:11:53,540 --> 00:11:57,350 So hopefully I can go through a few of the first steps of where to 239 00:11:57,350 --> 00:11:58,110 begin with all this. 240 00:11:58,110 --> 00:12:00,830 Because a lot of people just say there's a lot of white space, so where 241 00:12:00,830 --> 00:12:02,520 do I start? 242 00:12:02,520 --> 00:12:04,640 >> So my name's Mike. 243 00:12:04,640 --> 00:12:07,270 As Dan mentioned, I'm kind of referred to as Kiwi. 244 00:12:07,270 --> 00:12:10,210 I'm from New Zealand, as you may be able to tell from my accent. 245 00:12:10,210 --> 00:12:12,500 I've lived in San Francisco for a couple of years now. 246 00:12:12,500 --> 00:12:14,730 Did my electrical and computer engineering degree back in New 247 00:12:14,730 --> 00:12:18,750 Zealand, so I've sat in the same seat that you guys are in. 248 00:12:18,750 --> 00:12:22,460 >> So I handle platform growth and partnerships for our developer 249 00:12:22,460 --> 00:12:23,710 programs team. 250 00:12:23,710 --> 00:12:26,220 So I'll tell you a little bit more about what the developer programs team 251 00:12:26,220 --> 00:12:28,750 means in a little bit. 252 00:12:28,750 --> 00:12:34,530 But basically, Dan mentioned, this is the peripheral you see here. 253 00:12:34,530 --> 00:12:37,650 So this is the history of where it came from. 254 00:12:37,650 --> 00:12:42,200 >> So you can see there we started back with a very, very early prototype. 255 00:12:42,200 --> 00:12:45,130 Now, all that's in this, you can kind of see here a little bit. 256 00:12:45,130 --> 00:12:47,580 Well, it's a bit hard to see on this display, but really all you've just 257 00:12:47,580 --> 00:12:51,980 got is a couple of infrared optical sensors and a couple of infrared LEDs. 258 00:12:51,980 --> 00:12:54,620 The hardware is actually incredibly simple, and that's why we're able to 259 00:12:54,620 --> 00:12:56,220 keep it so low cost. 260 00:12:56,220 --> 00:12:59,360 The magic is really what's happening on the computer and the software in 261 00:12:59,360 --> 00:13:01,420 the driver layer, and that's really where the breakthrough 262 00:13:01,420 --> 00:13:02,790 for the company came. 263 00:13:02,790 --> 00:13:08,340 >> So I joined and the developer programs team started around about here, 264 00:13:08,340 --> 00:13:09,440 halfway between. 265 00:13:09,440 --> 00:13:13,730 And what we did was these first kits that you see at the bottom there, 266 00:13:13,730 --> 00:13:15,040 they're the first developer units. 267 00:13:15,040 --> 00:13:18,780 And we actually sent out around 12,000 of those to developers that had 268 00:13:18,780 --> 00:13:22,620 contacted us so that they could get started working with the platform. 269 00:13:22,620 --> 00:13:26,290 And that's really been a great seed for the community, and we've had a lot 270 00:13:26,290 --> 00:13:28,650 of great stuff developed over the last year. 271 00:13:28,650 --> 00:13:33,300 And you'll see that when you have a look at Airspace, our apps store. 272 00:13:33,300 --> 00:13:38,860 >> So how many of you have actually heard of Leap Motion before? 273 00:13:38,860 --> 00:13:39,850 So a few of you, yeah. 274 00:13:39,850 --> 00:13:40,790 So that's good. 275 00:13:40,790 --> 00:13:45,830 >> So honestly, what was the first thing you guys thought of when you heard of 276 00:13:45,830 --> 00:13:49,050 Leap Motion or you saw the videos of what it does? 277 00:13:49,050 --> 00:13:54,560 Kind of "Minority Report," "Iron Man?" Yeah, we get a lot of that. 278 00:13:54,560 --> 00:13:58,220 >> And definitely the day will come when we're all sitting there commanding the 279 00:13:58,220 --> 00:14:01,550 world with our hands, and that's going to be exciting. 280 00:14:01,550 --> 00:14:06,670 Right now, that's not the absolute situation that we're trying to build, 281 00:14:06,670 --> 00:14:07,440 but we're going to get there. 282 00:14:07,440 --> 00:14:11,210 But I think it's still a good opportunity to hear from the real 283 00:14:11,210 --> 00:14:16,403 world Tony Stark, and Dan touched on that as well. 284 00:14:16,403 --> 00:14:20,000 >> SPEAKER 1: Right now we interact with computers in a very unnatural and 285 00:14:20,000 --> 00:14:20,370 [INAUDIBLE] 286 00:14:20,370 --> 00:14:20,750 way. 287 00:14:20,750 --> 00:14:25,710 And we're trying to create these 3D objects using a variety of 2D tools. 288 00:14:25,710 --> 00:14:28,960 And it doesn't feel natural, doesn't feel normal the way 289 00:14:28,960 --> 00:14:29,960 you should do things. 290 00:14:29,960 --> 00:14:33,680 >> So we started playing around with the idea and using a few of the things 291 00:14:33,680 --> 00:14:38,730 that are available out there, such as the Beat Motion and Siemens NX, which 292 00:14:38,730 --> 00:14:40,930 is what we used to design the rocket. 293 00:14:40,930 --> 00:14:43,170 And we wrote some code to integrate the two. 294 00:14:43,170 --> 00:14:50,030 And we started off with what you see here, which is a wire frame of a 295 00:14:50,030 --> 00:14:51,820 Merlin rocket engine. 296 00:14:51,820 --> 00:14:58,360 And working through this, I can go ahead and grab it, and I can rotate it 297 00:14:58,360 --> 00:14:59,610 in multiple dimensions. 298 00:14:59,610 --> 00:15:02,040 299 00:15:02,040 --> 00:15:08,340 And then what I can do is I can put another hand in there and I can zoom 300 00:15:08,340 --> 00:15:10,700 in and out on the wire frame. 301 00:15:10,700 --> 00:15:13,040 >> And I can also translate it. 302 00:15:13,040 --> 00:15:18,420 So I can move it around the screen and then zoom and translate. 303 00:15:18,420 --> 00:15:21,690 And this is what we started off with a few months ago. 304 00:15:21,690 --> 00:15:25,720 305 00:15:25,720 --> 00:15:31,480 You can also spin it and then catch it. 306 00:15:31,480 --> 00:15:35,480 So this is kind of a fun way to interface with what is really a very 307 00:15:35,480 --> 00:15:37,564 complex model. 308 00:15:37,564 --> 00:15:44,210 309 00:15:44,210 --> 00:15:49,030 >> Now we'll go from this to what we're able to advance to a few weeks after 310 00:15:49,030 --> 00:15:56,725 the wire frame, which is to actually use a full 3D CAD model of the engine. 311 00:15:56,725 --> 00:16:01,320 312 00:16:01,320 --> 00:16:04,090 So here what you're seeing is the actual interaction 313 00:16:04,090 --> 00:16:05,260 with the CAD software. 314 00:16:05,260 --> 00:16:08,460 Manipulating the real 3D model of the Merlin engine 315 00:16:08,460 --> 00:16:10,100 just using hand gestures. 316 00:16:10,100 --> 00:16:13,880 If you could just go in there and do what you need to do, just 317 00:16:13,880 --> 00:16:16,720 understanding the fundamentals of how the thing should work as opposed to 318 00:16:16,720 --> 00:16:21,310 figure out how to make the computer make it work, then you can achieve a 319 00:16:21,310 --> 00:16:23,810 lot more in a lot shorter period of time. 320 00:16:23,810 --> 00:16:26,780 >> So then we went to a 3D projection. 321 00:16:26,780 --> 00:16:30,145 We started off with the kind of 3D projection that you're familiar with 322 00:16:30,145 --> 00:16:34,340 in the movies where you use 3D glasses. 323 00:16:34,340 --> 00:16:38,630 We also did a free standing glass projection, which is the sort of 324 00:16:38,630 --> 00:16:41,910 technology that was used in the "Iron Man" movies. 325 00:16:41,910 --> 00:16:46,260 >> And then finally, we used the Oculus Rift, which is immersive virtual 326 00:16:46,260 --> 00:16:49,140 reality that actually tracks your head position. 327 00:16:49,140 --> 00:16:50,980 And you really are moving around the object. 328 00:16:50,980 --> 00:16:54,260 It feels like it's right there in front of you. 329 00:16:54,260 --> 00:16:57,500 Now let's use this for an actual component on the rocket, which is a 330 00:16:57,500 --> 00:16:59,310 cryogenic valve housing. 331 00:16:59,310 --> 00:17:03,980 You can really apply your intuition and take something from your mind to a 332 00:17:03,980 --> 00:17:07,510 physical object with far greater ease than we currently do. 333 00:17:07,510 --> 00:17:10,569 >> Now that we've gotten the object out of our head and into the computer, how 334 00:17:10,569 --> 00:17:13,480 do we get it out of the computer and into reality? 335 00:17:13,480 --> 00:17:16,986 So we're actually going to print this with a 3D laser metal printer. 336 00:17:16,986 --> 00:17:21,540 So the way that the 3D printer works is it lays down fine particles of 337 00:17:21,540 --> 00:17:23,869 either titanium or [? inknell, ?] 338 00:17:23,869 --> 00:17:27,569 and then it goes over it with a laser and melts those tiny particles onto 339 00:17:27,569 --> 00:17:28,550 the prior layer. 340 00:17:28,550 --> 00:17:30,730 So it builds it up just layer by layer. 341 00:17:30,730 --> 00:17:33,940 342 00:17:33,940 --> 00:17:36,800 So I believe we're on the verge of a major breakthrough in design and 343 00:17:36,800 --> 00:17:41,100 manufacturing in being able to take the concept of something from your 344 00:17:41,100 --> 00:17:43,160 mind, translate that into a 3D-- 345 00:17:43,160 --> 00:17:48,580 346 00:17:48,580 --> 00:17:50,770 >> MICHAEL SUTHERLAND: --is that even though they're clearly still in pretty 347 00:17:50,770 --> 00:17:53,430 early stages of what they're doing with this sort of technology, it kind 348 00:17:53,430 --> 00:17:56,260 of helps to demonstrate some of the examples that Dan was 349 00:17:56,260 --> 00:17:57,780 talking about before. 350 00:17:57,780 --> 00:18:00,250 So they're really starting to investigate what are these next 351 00:18:00,250 --> 00:18:04,310 generation uses for this sort of 3D gesture technology. 352 00:18:04,310 --> 00:18:07,110 So I think that's just an interesting entry to seeing how some of this 353 00:18:07,110 --> 00:18:08,770 technology is being used. 354 00:18:08,770 --> 00:18:12,730 >> So I'm going to take you through a little bit about-- 355 00:18:12,730 --> 00:18:13,910 it's going to be pretty high level. 356 00:18:13,910 --> 00:18:16,920 But we'll leave some time at the end for question and answers if you guys 357 00:18:16,920 --> 00:18:19,410 have some deeper questions you want to go into. 358 00:18:19,410 --> 00:18:23,220 But we're just talk a little bit about building on the platform, go a little 359 00:18:23,220 --> 00:18:27,370 bit into the high level aspects of the SDK, have a look at what some of the 360 00:18:27,370 --> 00:18:31,990 resources are that are available on our website or through the community. 361 00:18:31,990 --> 00:18:35,550 >> And I'll show you a few demos of some of the stuff that's actually out there 362 00:18:35,550 --> 00:18:38,950 that you can check out and give some inspiration if you wanted to use this 363 00:18:38,950 --> 00:18:43,880 in a project, and then how you can approach us for help. 364 00:18:43,880 --> 00:18:46,450 We're here to help you guys if you want to develop, [? Sue. ?] 365 00:18:46,450 --> 00:18:49,790 Just want to make sure that you're aware of that. 366 00:18:49,790 --> 00:18:53,500 >> So as Dan mentioned, we've got Airspace. 367 00:18:53,500 --> 00:18:59,290 So what's the real benefit for starting to build for Leap Motion 368 00:18:59,290 --> 00:18:59,740 controller? 369 00:18:59,740 --> 00:19:01,130 Is it just a cool piece of technology? 370 00:19:01,130 --> 00:19:04,180 Is it a gimmick, or is there something more to it? 371 00:19:04,180 --> 00:19:08,270 >> And Dan talked a bit about the industrial applications, but on the 372 00:19:08,270 --> 00:19:11,720 consumer side we've actually got a really, really thriving app 373 00:19:11,720 --> 00:19:13,080 community as well. 374 00:19:13,080 --> 00:19:16,650 And you might be saying, well, another app store. 375 00:19:16,650 --> 00:19:19,850 So we prefer to see it as a place of discovery. 376 00:19:19,850 --> 00:19:25,480 >> So this sort of technology, it's exemplified by software that 377 00:19:25,480 --> 00:19:27,100 is built for it. 378 00:19:27,100 --> 00:19:30,570 It's not so much a system where you can port an existing 379 00:19:30,570 --> 00:19:32,050 touch application across. 380 00:19:32,050 --> 00:19:35,030 The biggest applications are the ones that are built for the technology. 381 00:19:35,030 --> 00:19:40,180 So when you go and buy a Leap Motion from a store and you plug it in, the 382 00:19:40,180 --> 00:19:42,680 first thing you see is Airspace. 383 00:19:42,680 --> 00:19:45,100 And so that's going to give you a place to basically find all of the 384 00:19:45,100 --> 00:19:48,650 software that's built for platform. 385 00:19:48,650 --> 00:19:52,000 >> We've got over 100 apps in the store now, so that's pretty good considering 386 00:19:52,000 --> 00:19:53,830 we launched just back in July. 387 00:19:53,830 --> 00:19:58,040 We had over a million app downloads in about the first three weeks. 388 00:19:58,040 --> 00:20:03,090 And we cover categories, productivity, games, education, creativity tools, 389 00:20:03,090 --> 00:20:04,370 music, science. 390 00:20:04,370 --> 00:20:08,090 And the store supports native as well as web apps. 391 00:20:08,090 --> 00:20:13,440 So it's a pretty good ecosystem for anyone that's buying their unit to 392 00:20:13,440 --> 00:20:14,950 have a lot of stuff to use. 393 00:20:14,950 --> 00:20:20,030 >> But for your side, on the development side, what that means is there's an 394 00:20:20,030 --> 00:20:21,465 awesome opportunity to get discovered. 395 00:20:21,465 --> 00:20:25,420 396 00:20:25,420 --> 00:20:27,750 We shipped a couple hundred thousand pre-orders. 397 00:20:27,750 --> 00:20:34,280 We're now in all the Best Buy stores throughout the US, Canada, UK, France, 398 00:20:34,280 --> 00:20:35,960 Australia and New Zealand, and we're about to launch in 399 00:20:35,960 --> 00:20:37,590 other parts of Europe. 400 00:20:37,590 --> 00:20:40,580 That means that everyone that buys one of these units and gets into that 401 00:20:40,580 --> 00:20:42,740 store, they're going to start to see the software that you guys are 402 00:20:42,740 --> 00:20:43,280 developing. 403 00:20:43,280 --> 00:20:46,130 So that's a pretty exciting opportunity right now. 404 00:20:46,130 --> 00:20:49,010 >> Some of the other things that are coming up that maybe we're thinking 405 00:20:49,010 --> 00:20:50,710 about in a year or two. 406 00:20:50,710 --> 00:20:54,000 As you go through and you develop different programming abilities and 407 00:20:54,000 --> 00:20:57,030 start to look at different types of software development, is there 408 00:20:57,030 --> 00:21:00,850 actually some opportunities post-graduation? 409 00:21:00,850 --> 00:21:03,580 Some of our venture partners have actually put together a $25 million 410 00:21:03,580 --> 00:21:06,070 venture fund called The Leap Fund. 411 00:21:06,070 --> 00:21:09,660 They've actually already funded their first company, so that's been really 412 00:21:09,660 --> 00:21:10,820 great to see. 413 00:21:10,820 --> 00:21:13,280 Starting to see that kind of business ecosystem building around the 414 00:21:13,280 --> 00:21:14,620 technology as well. 415 00:21:14,620 --> 00:21:17,670 >> And shortly we're actually going to be seeing a new accelerator as well. 416 00:21:17,670 --> 00:21:21,685 So they'll be taking through teams, new teams that are just forming with 417 00:21:21,685 --> 00:21:24,280 some great ideas, and they'll be providing them with mentors. 418 00:21:24,280 --> 00:21:27,290 And there's some pretty great mentors in that program. 419 00:21:27,290 --> 00:21:30,900 And that will be kicking off next year, so you'll start to see some 420 00:21:30,900 --> 00:21:32,270 really cool stuff coming out. 421 00:21:32,270 --> 00:21:35,490 Not just on the apps side, but in terms of new businesses that are 422 00:21:35,490 --> 00:21:36,740 building around this technology. 423 00:21:36,740 --> 00:21:41,220 424 00:21:41,220 --> 00:21:45,440 >> So we're providing SDK. 425 00:21:45,440 --> 00:21:49,410 We're supporting both native and web development. 426 00:21:49,410 --> 00:21:52,630 I understand you guys are mainly working in C at the moment, and you're 427 00:21:52,630 --> 00:21:54,530 going to be touching a little bit into JavaScript in a 428 00:21:54,530 --> 00:21:55,930 while, so that's great. 429 00:21:55,930 --> 00:21:57,825 >> We've got support for C++. 430 00:21:57,825 --> 00:22:01,340 We do have a pure C API. 431 00:22:01,340 --> 00:22:04,590 It is built by the community, but I can show you how to get to that. 432 00:22:04,590 --> 00:22:09,250 >> So the C++, C#, Objective C, Python and Java-- so if you've got any 433 00:22:09,250 --> 00:22:12,200 familiarity with any of those languages, there should be something 434 00:22:12,200 --> 00:22:14,620 there for you to get started. 435 00:22:14,620 --> 00:22:17,220 The SDK's available from our developer website, which I'll go through in a 436 00:22:17,220 --> 00:22:18,000 little bit. 437 00:22:18,000 --> 00:22:20,730 And then for the web development, we've got a full JavaScript API. 438 00:22:20,730 --> 00:22:24,510 >> So this is probably something that might be interesting as you start to 439 00:22:24,510 --> 00:22:26,160 go into the rest of this course. 440 00:22:26,160 --> 00:22:28,240 Because my understanding is you're about to start to go into some 441 00:22:28,240 --> 00:22:29,140 JavaScript. 442 00:22:29,140 --> 00:22:33,610 And there's a load of great examples and tutorials on the JavaScript API. 443 00:22:33,610 --> 00:22:37,350 So I'll walk you through some of those things as well, and that'll be a good 444 00:22:37,350 --> 00:22:39,770 platform for how to get started. 445 00:22:39,770 --> 00:22:42,535 >> So first is our developer portal. 446 00:22:42,535 --> 00:22:53,570 447 00:22:53,570 --> 00:22:55,380 So this is going to be the place that you guys want to go. 448 00:22:55,380 --> 00:22:58,760 If you're going to do any development on Leap, you probably want to start 449 00:22:58,760 --> 00:23:02,270 here and have a check out of our developer portal. 450 00:23:02,270 --> 00:23:06,390 I'll just walk you through just some of the main things to keep an eye on. 451 00:23:06,390 --> 00:23:10,780 >> So this is your main download section, so this is where you're going to get 452 00:23:10,780 --> 00:23:12,080 your native SDK. 453 00:23:12,080 --> 00:23:15,260 So that's all the languages that I talked about first-- 454 00:23:15,260 --> 00:23:19,140 C++, Objective C, C#. 455 00:23:19,140 --> 00:23:22,060 Inside the SDK you're going to get a bunch of examples, you're going to get 456 00:23:22,060 --> 00:23:24,030 the documentation. 457 00:23:24,030 --> 00:23:28,000 So they'll be everything to get you set up for native app development. 458 00:23:28,000 --> 00:23:32,210 >> So basically anything that you want to run directly on your computer, that's 459 00:23:32,210 --> 00:23:35,520 the place for that-- not so much for the JavaScript. 460 00:23:35,520 --> 00:23:38,810 From here, you've got access to all the documentation. 461 00:23:38,810 --> 00:23:41,650 So this is going to be all the documentation around our API 462 00:23:41,650 --> 00:23:46,080 references, as well as guides and examples. 463 00:23:46,080 --> 00:23:48,030 >> So you can see here we've split it out by language. 464 00:23:48,030 --> 00:23:50,230 So it's pretty easy to find your way around. 465 00:23:50,230 --> 00:23:53,040 And we also have, on top of this, some knowledge based articles 466 00:23:53,040 --> 00:23:55,460 for technical notes. 467 00:23:55,460 --> 00:23:57,470 This is all changing all the time. 468 00:23:57,470 --> 00:24:00,560 So keep an eye on it, you'll see it evolving. 469 00:24:00,560 --> 00:24:04,320 >> So if we just dig into here, I'll just give you a quick example of how we 470 00:24:04,320 --> 00:24:05,720 laid it out. 471 00:24:05,720 --> 00:24:10,310 So if you look under here, you've got all the languages again. 472 00:24:10,310 --> 00:24:13,050 And then under C++ we've got our API references. 473 00:24:13,050 --> 00:24:15,820 So that's where you're going to want to go to find out all the APIs that 474 00:24:15,820 --> 00:24:16,955 are contained in our SDK. 475 00:24:16,955 --> 00:24:20,670 So I'll go through a few of those at a high level later on, but that's going 476 00:24:20,670 --> 00:24:24,270 to be the first stop you want to go to for getting that information. 477 00:24:24,270 --> 00:24:26,500 >> We've got a bunch of guides. 478 00:24:26,500 --> 00:24:29,160 I know it's probably difficult to see on the screen there, but these are 479 00:24:29,160 --> 00:24:32,890 really just a great resource for you to get started. 480 00:24:32,890 --> 00:24:36,130 So we've got things like how you get frame data, and I'll talk to you a 481 00:24:36,130 --> 00:24:39,550 little bit about what frame data means in a little bit. 482 00:24:39,550 --> 00:24:44,460 All the way through to understanding the sample applications that are-- 483 00:24:44,460 --> 00:24:46,080 oh, that's good. 484 00:24:46,080 --> 00:24:47,780 So that might make it a bit easier to read. 485 00:24:47,780 --> 00:24:50,650 So understanding the C++ sample applications-- 486 00:24:50,650 --> 00:24:53,560 so those are included in the SDK bundle that you download. 487 00:24:53,560 --> 00:24:57,150 488 00:24:57,150 --> 00:25:00,830 >> So the other thing that's a great resource for you guys, if you do start 489 00:25:00,830 --> 00:25:03,690 to do some development, is our forums. 490 00:25:03,690 --> 00:25:05,650 You'll be able to access them up here at the top. 491 00:25:05,650 --> 00:25:08,250 492 00:25:08,250 --> 00:25:11,590 Right now these look like this. 493 00:25:11,590 --> 00:25:14,270 You're going to find in a week or so that they're going to look completely 494 00:25:14,270 --> 00:25:17,390 different, because we're just about to launch a whole new forum platform. 495 00:25:17,390 --> 00:25:20,420 But that means an even more engaged community, and it's a great place to 496 00:25:20,420 --> 00:25:23,730 connect with other developers that have been doing the same sort of work 497 00:25:23,730 --> 00:25:24,680 that you guys are going to be doing. 498 00:25:24,680 --> 00:25:27,770 >> So lots of great questions have already been answered in there. 499 00:25:27,770 --> 00:25:30,110 And it's a great place to ask questions as well. 500 00:25:30,110 --> 00:25:34,090 We're in there, our team members, our engineering team are all in there, so 501 00:25:34,090 --> 00:25:35,660 great place to connect with the team. 502 00:25:35,660 --> 00:25:38,820 503 00:25:38,820 --> 00:25:41,330 >> This is also the place that you want to go if you're going to be submitting 504 00:25:41,330 --> 00:25:44,770 an app, but that's probably a little bit further down the track. 505 00:25:44,770 --> 00:25:48,750 But if you are interested in getting something onto Airspace, this is the 506 00:25:48,750 --> 00:25:49,670 portal to do that. 507 00:25:49,670 --> 00:25:52,980 You submit your app, and that will walk you through the process. 508 00:25:52,980 --> 00:25:56,080 >> We have a full review team that goes through and reviews all the apps. 509 00:25:56,080 --> 00:25:57,800 There is a little bit of a bar for quality. 510 00:25:57,800 --> 00:26:01,000 We try and make sure that all the apps are really representative of what the 511 00:26:01,000 --> 00:26:02,850 platform can do. 512 00:26:02,850 --> 00:26:06,020 But at the end of the day, that just creates a really great experience for 513 00:26:06,020 --> 00:26:08,370 the people that are using the technology. 514 00:26:08,370 --> 00:26:11,120 So that's kind of our main developer site. 515 00:26:11,120 --> 00:26:14,081 I just wanted to give you a quick overview so you know where a lot of 516 00:26:14,081 --> 00:26:17,460 these resources are and how to access them. 517 00:26:17,460 --> 00:26:20,380 >> So I also mentioned JavaScript API. 518 00:26:20,380 --> 00:26:24,230 So we've actually split out the native and the JavaScript into 519 00:26:24,230 --> 00:26:27,040 two separate sites. 520 00:26:27,040 --> 00:26:29,590 There's different ways of thinking about that, but we think that 521 00:26:29,590 --> 00:26:33,770 JavaScript is very unique so it really deserves its own site. 522 00:26:33,770 --> 00:26:36,940 And we've had a lot of popularity from our JavaScript API. 523 00:26:36,940 --> 00:26:40,290 >> So this is now js.leapmotion.com. 524 00:26:40,290 --> 00:26:43,830 Has a bit of a different look, a little bit more fun perhaps. 525 00:26:43,830 --> 00:26:47,320 But this is probably one of the best places for you guys 526 00:26:47,320 --> 00:26:48,560 to go to get started. 527 00:26:48,560 --> 00:26:51,810 >> JavaScript, as you'll probably start to find out, is going to be a great 528 00:26:51,810 --> 00:26:53,365 language to get started on this platform. 529 00:26:53,365 --> 00:26:56,090 530 00:26:56,090 --> 00:26:58,870 How many of you are familiar with JavaScript development already? 531 00:26:58,870 --> 00:26:59,480 So a couple. 532 00:26:59,480 --> 00:27:03,810 So what you'll find is that JavaScript being a scripted language and not a 533 00:27:03,810 --> 00:27:06,690 compiled language means that you can go straight into anything that's 534 00:27:06,690 --> 00:27:09,030 running on the web, right-click it, view source, you've got 535 00:27:09,030 --> 00:27:10,150 all the code there. 536 00:27:10,150 --> 00:27:13,200 So it's the easiest way to get started in a language. 537 00:27:13,200 --> 00:27:18,850 >> And what you'll find here is a bunch of awesome examples. 538 00:27:18,850 --> 00:27:20,650 We're adding to these all the time. 539 00:27:20,650 --> 00:27:23,400 You can just click on these, they'll run in the browser. 540 00:27:23,400 --> 00:27:27,030 >> So let's try one of them right now. 541 00:27:27,030 --> 00:27:30,110 542 00:27:30,110 --> 00:27:33,100 So this is just running in the browser. 543 00:27:33,100 --> 00:27:34,940 The code behind this is super simple. 544 00:27:34,940 --> 00:27:38,300 545 00:27:38,300 --> 00:27:43,560 So here you go, just View Page Source, you get all the code, it's right here. 546 00:27:43,560 --> 00:27:45,690 Don't worry about this too much at the moment. 547 00:27:45,690 --> 00:27:49,510 It may look intimidating, or to some of you that are familiar with it, 548 00:27:49,510 --> 00:27:50,390 it'll be fine. 549 00:27:50,390 --> 00:27:57,670 >> But most of this is actually something called 3JS in WebGL. 550 00:27:57,670 --> 00:28:01,780 The actual part for the Leap is down here a little bit further, but it's 551 00:28:01,780 --> 00:28:03,800 actually very simple once you dig into it. 552 00:28:03,800 --> 00:28:06,280 And if anyone's interested, I can walk you through some of these afterwards. 553 00:28:06,280 --> 00:28:11,690 But it's probably best to keep it high level at the moment. 554 00:28:11,690 --> 00:28:14,950 >> But anyway, so this is a great place to start looking at 555 00:28:14,950 --> 00:28:15,850 some different examples. 556 00:28:15,850 --> 00:28:20,750 And you can see here we've got some basic demos to some different types of 557 00:28:20,750 --> 00:28:27,610 menus, a globe that you can interact with, some data visualizations. 558 00:28:27,610 --> 00:28:28,680 There's just a whole host of stuff. 559 00:28:28,680 --> 00:28:32,800 It's a great place to check out some source code. 560 00:28:32,800 --> 00:28:35,960 >> The other thing that you'll find here which will be a big help to getting 561 00:28:35,960 --> 00:28:39,450 started is we have a great set of tutorials. 562 00:28:39,450 --> 00:28:43,100 This walks you from the very basics of just how to get a frame-- 563 00:28:43,100 --> 00:28:45,570 and like I said I'll go through that in a little bit-- 564 00:28:45,570 --> 00:28:48,020 through to getting a basic application set up. 565 00:28:48,020 --> 00:28:51,980 So I can definitely recommend js.leapmotion as a great place to 566 00:28:51,980 --> 00:28:55,450 start if you're thinking about doing some development. 567 00:28:55,450 --> 00:28:57,750 And again, we've got our API docs. 568 00:28:57,750 --> 00:28:58,790 >> So it's a very simple layout here. 569 00:28:58,790 --> 00:29:01,930 It's a little bit simpler than the developer website. 570 00:29:01,930 --> 00:29:04,560 It's a little bit lighter-- it's just focused on JavaScript. 571 00:29:04,560 --> 00:29:06,630 But you've kind of got those three main things-- 572 00:29:06,630 --> 00:29:08,806 examples, tutorials and APIs. 573 00:29:08,806 --> 00:29:14,510 And that will be a big help, I'd say, for getting started. 574 00:29:14,510 --> 00:29:17,630 So I'll just jump back into this. 575 00:29:17,630 --> 00:29:23,700 576 00:29:23,700 --> 00:29:26,832 So let me just grab a quick drink. 577 00:29:26,832 --> 00:29:32,050 578 00:29:32,050 --> 00:29:35,520 >> So this isn't really about what is the Leap Motion controller. 579 00:29:35,520 --> 00:29:39,320 What I wanted to talk about here is what is it not. 580 00:29:39,320 --> 00:29:43,650 So a lot of people when the Leap Motion came out they were like, oh my 581 00:29:43,650 --> 00:29:45,360 goodness, this is a mouse replacement. 582 00:29:45,360 --> 00:29:48,470 I never need to use my mouse and keyboard anymore. 583 00:29:48,470 --> 00:29:49,650 >> We don't really see it that way. 584 00:29:49,650 --> 00:29:51,610 Because if you remember, when the mouse came out, the 585 00:29:51,610 --> 00:29:53,000 keyboard didn't disappear. 586 00:29:53,000 --> 00:29:56,030 The mouse augmented the keyboard experience, and so that's really what 587 00:29:56,030 --> 00:29:57,590 this technology allows you to do. 588 00:29:57,590 --> 00:29:59,860 It allows you to augment the experience that you're having. 589 00:29:59,860 --> 00:30:02,280 It allows you to do some things better. 590 00:30:02,280 --> 00:30:06,260 >> And that's really what developing for this platform is all about. 591 00:30:06,260 --> 00:30:09,520 It's not about trying to do everything with the Leap right now. 592 00:30:09,520 --> 00:30:12,100 Because what you'll do is you'll find it becomes infuriating. 593 00:30:12,100 --> 00:30:14,850 You'll find it doesn't get the results that you want. 594 00:30:14,850 --> 00:30:18,160 The best way to approach it is what are the things that I can do better 595 00:30:18,160 --> 00:30:21,760 with the Leap, and I'll show you a few of those demos. 596 00:30:21,760 --> 00:30:26,000 >> But what you'll start to see as you dig a little bit into it, one of the 597 00:30:26,000 --> 00:30:27,910 favorite things for everyone to do-- 598 00:30:27,910 --> 00:30:30,990 and by all means, have a play around with this as well-- 599 00:30:30,990 --> 00:30:33,960 is build a mouse cursor with the Leap. 600 00:30:33,960 --> 00:30:38,300 So I want to use the Leap to control the cursor with my finger. 601 00:30:38,300 --> 00:30:42,090 It's definitely an application that can be built with the Leap. 602 00:30:42,090 --> 00:30:43,600 >> Is it the best use of the Leap? 603 00:30:43,600 --> 00:30:44,580 Probably not. 604 00:30:44,580 --> 00:30:47,780 So what I would try to encourage you guys to think about is what are the 605 00:30:47,780 --> 00:30:48,360 applications? 606 00:30:48,360 --> 00:30:50,750 If you want to build some of these, what are the applications 607 00:30:50,750 --> 00:30:51,620 that you can do better? 608 00:30:51,620 --> 00:30:54,510 They don't have to be really complex, but what are some of the things that 609 00:30:54,510 --> 00:30:57,410 just make your life a little bit more efficient, or maybe a little bit more 610 00:30:57,410 --> 00:31:01,150 fun, or allow you to navigate a little bit better? 611 00:31:01,150 --> 00:31:04,700 So that's just what I wanted to give you a quick thought of that. 612 00:31:04,700 --> 00:31:09,690 >> So that leads into what are some of the applications that are around that 613 00:31:09,690 --> 00:31:12,870 do a good job of demonstrating the power of this platform? 614 00:31:12,870 --> 00:31:15,830 So I'm going to take you through a couple of them right now. 615 00:31:15,830 --> 00:31:17,190 We can go through them pretty quickly. 616 00:31:17,190 --> 00:31:21,800 617 00:31:21,800 --> 00:31:33,790 >> So the first one is a little game called Block 54 which I'll put on your 618 00:31:33,790 --> 00:31:35,040 screen, not my screen. 619 00:31:35,040 --> 00:31:55,970 620 00:31:55,970 --> 00:31:57,310 We'll try it Windowed instead. 621 00:31:57,310 --> 00:32:05,830 622 00:32:05,830 --> 00:32:16,480 So one of the reasons I wanted to show you this application is because this 623 00:32:16,480 --> 00:32:20,940 is really something that has never been possible before. 624 00:32:20,940 --> 00:32:22,450 This is not something you can do with a mouse. 625 00:32:22,450 --> 00:32:26,350 This is not something you can do with a keyboard. 626 00:32:26,350 --> 00:32:29,560 It's probably a little bit more advanced, but it's a great example of 627 00:32:29,560 --> 00:32:32,774 some of the things that you can do with the Leap. 628 00:32:32,774 --> 00:32:46,440 629 00:32:46,440 --> 00:32:49,130 >> So what you see here, we've got a Jenga tower, obviously-- 630 00:32:49,130 --> 00:32:52,720 or it's a Block 54 tower, I should say. 631 00:32:52,720 --> 00:33:08,070 So what I can do here is I can actually grab these pieces, if my 632 00:33:08,070 --> 00:33:11,890 computer doesn't slow down too much. 633 00:33:11,890 --> 00:33:14,290 Sorry, my computer seems to be having a little bit of a hard 634 00:33:14,290 --> 00:33:15,460 time with this one. 635 00:33:15,460 --> 00:33:19,640 So I can actually grab these pieces and move them just as though they were 636 00:33:19,640 --> 00:33:21,150 physical objects. 637 00:33:21,150 --> 00:33:24,890 And that's really one of the major advantages, bringing that real-world. 638 00:33:24,890 --> 00:33:27,426 639 00:33:27,426 --> 00:33:34,640 >> So I can literally grab that piece and pick it up. 640 00:33:34,640 --> 00:33:36,950 I can throw it away. 641 00:33:36,950 --> 00:33:42,220 Wow, it's running a little bit slower for some reason. 642 00:33:42,220 --> 00:33:43,860 So you can kind of get the feeling there. 643 00:33:43,860 --> 00:33:48,030 So this is something that you literally could not do on a-- 644 00:33:48,030 --> 00:33:52,870 645 00:33:52,870 --> 00:33:54,840 I'm just going to push this one out of the way now. 646 00:33:54,840 --> 00:33:56,890 There we go. 647 00:33:56,890 --> 00:33:58,940 >> So that's a lot of fun. 648 00:33:58,940 --> 00:34:02,120 If my computer wasn't chugging along so much, then that 649 00:34:02,120 --> 00:34:02,800 would be a lot smoother. 650 00:34:02,800 --> 00:34:07,230 But you can kind of see there that this is an example of bringing 651 00:34:07,230 --> 00:34:10,199 something that was real-world into the digital space, and it's allowing you 652 00:34:10,199 --> 00:34:13,230 to interact in a way that's very natural. 653 00:34:13,230 --> 00:34:16,780 >> I'm not using a menu system to go through that. 654 00:34:16,780 --> 00:34:19,219 I'm not clicking, or using keyboard shortcuts or anything. 655 00:34:19,219 --> 00:34:23,199 It's just literally me reaching out and manipulating the blocks in the 656 00:34:23,199 --> 00:34:24,449 digital space. 657 00:34:24,449 --> 00:34:36,460 658 00:34:36,460 --> 00:34:40,449 >> So this next one is a little bit along the same lines, but it's about 659 00:34:40,449 --> 00:34:44,219 bringing these real-world experiences into the digital world. 660 00:34:44,219 --> 00:34:50,929 And so this was an experience that I believe one of our co-founders had. 661 00:34:50,929 --> 00:34:55,820 I don't want to quote him on this, but there was the ability to be in the 662 00:34:55,820 --> 00:34:59,470 ocean and see these schools of fish swimming around and being able to 663 00:34:59,470 --> 00:35:00,760 interact with them. 664 00:35:00,760 --> 00:35:04,470 And that's something that's really difficult to communicate verbally. 665 00:35:04,470 --> 00:35:08,210 It's also very difficult to communicate digitally without a proper 666 00:35:08,210 --> 00:35:11,420 input mechanism to be able to manipulate that 3D world. 667 00:35:11,420 --> 00:35:19,358 >> So I'll just bring this one up. 668 00:35:19,358 --> 00:35:24,750 669 00:35:24,750 --> 00:35:28,010 You might not be able to see that on the streaming version-- it could be a 670 00:35:28,010 --> 00:35:29,260 little dark. 671 00:35:29,260 --> 00:35:33,560 672 00:35:33,560 --> 00:35:36,810 So what you're seeing here is my hands in the 3D space. 673 00:35:36,810 --> 00:35:39,030 I've got complete freedom of movement. 674 00:35:39,030 --> 00:35:42,950 And I can just hold my hands still, see the fish and then 675 00:35:42,950 --> 00:35:44,200 scatter them away. 676 00:35:44,200 --> 00:35:51,750 677 00:35:51,750 --> 00:35:55,190 >> And you can see the freedom in this digital space is like something that 678 00:35:55,190 --> 00:35:58,700 really hasn't been possible before. 679 00:35:58,700 --> 00:36:02,880 I can bring them out to the screen and scare them away. 680 00:36:02,880 --> 00:36:05,840 681 00:36:05,840 --> 00:36:11,100 So it's a simple demo, but it's highlighting the fact of being able to 682 00:36:11,100 --> 00:36:13,520 bring some of these real-world experience that haven't really 683 00:36:13,520 --> 00:36:17,280 translated into the digital space into this digital space finally for the 684 00:36:17,280 --> 00:36:18,480 first time. 685 00:36:18,480 --> 00:36:22,464 >> AUDIENCE: You can actually see those at The Museum of Science [INAUDIBLE] 686 00:36:22,464 --> 00:36:27,440 687 00:36:27,440 --> 00:36:28,550 >> MICHAEL SUTHERLAND: And this is a great one as well. 688 00:36:28,550 --> 00:36:31,900 Because what we find is when people first put their hands into this, it's 689 00:36:31,900 --> 00:36:35,250 the best time that they've seen themselves represented so fluidly in 690 00:36:35,250 --> 00:36:38,500 their digital space, so you usually get an interesting reaction. 691 00:36:38,500 --> 00:36:43,290 So by all means, if we've got time afterwards, I'd be happy to show you 692 00:36:43,290 --> 00:36:44,700 guys some of these demos. 693 00:36:44,700 --> 00:36:49,870 694 00:36:49,870 --> 00:36:50,720 >> So this next one-- 695 00:36:50,720 --> 00:36:52,930 I won't bring the slide deck up again. 696 00:36:52,930 --> 00:36:56,000 697 00:36:56,000 --> 00:37:13,450 This next one is about creating an experience that you can just explore. 698 00:37:13,450 --> 00:37:17,160 So there's very limited rules to this. 699 00:37:17,160 --> 00:37:20,300 It's creating this immersive experience. 700 00:37:20,300 --> 00:37:24,480 >> And the developer that built this is a guy called Eddie Lee out of Japan. 701 00:37:24,480 --> 00:37:28,880 And this was actually an experience he had in Kyoto. 702 00:37:28,880 --> 00:37:31,190 And he wanted to basically bring that experience and share 703 00:37:31,190 --> 00:37:32,660 it with other people. 704 00:37:32,660 --> 00:37:36,505 705 00:37:36,505 --> 00:37:37,600 >> I don't know if you can hear that. 706 00:37:37,600 --> 00:37:40,830 But you can just drag your fingers through the water and mess around with 707 00:37:40,830 --> 00:37:42,460 the reflections. 708 00:37:42,460 --> 00:37:44,700 There's nothing that's telling me what I can do. 709 00:37:44,700 --> 00:38:05,260 710 00:38:05,260 --> 00:38:07,790 It's just a very zen experience. 711 00:38:07,790 --> 00:38:12,420 But it's something that you can just really immerse yourself into and 712 00:38:12,420 --> 00:38:14,420 forget about how you're actually interacting with it. 713 00:38:14,420 --> 00:38:18,290 And just put your hands in and just feel your way around. 714 00:38:18,290 --> 00:38:21,900 715 00:38:21,900 --> 00:38:25,920 >> And you can see the entire environment is there to just play around with. 716 00:38:25,920 --> 00:38:41,790 717 00:38:41,790 --> 00:38:44,680 And there is actually a story line to this. 718 00:38:44,680 --> 00:38:49,080 It takes a little while to go through it, but you can explore your way 719 00:38:49,080 --> 00:38:51,060 through it. 720 00:38:51,060 --> 00:38:55,750 It's kind of a lot of fun, and a lot of natural interaction. 721 00:38:55,750 --> 00:39:05,290 722 00:39:05,290 --> 00:39:08,835 >> So this is actually something by the same developer. 723 00:39:08,835 --> 00:39:14,600 724 00:39:14,600 --> 00:39:19,260 This one's a little bit crazier, but it highlights some interesting use 725 00:39:19,260 --> 00:39:22,740 cases, and again, something that you can only really do with 726 00:39:22,740 --> 00:39:24,030 this sort of platform. 727 00:39:24,030 --> 00:39:26,690 So I'll just come around here. 728 00:39:26,690 --> 00:39:37,290 729 00:39:37,290 --> 00:39:39,180 >> So this is actually the menu page. 730 00:39:39,180 --> 00:39:43,690 And this is a menu like hasn't really existed before. 731 00:39:43,690 --> 00:39:48,760 So literally it's just looking at how many fingers I hold up, and basically 732 00:39:48,760 --> 00:39:49,780 choosing the menu through that. 733 00:39:49,780 --> 00:39:54,860 So you can see the rules are being rewritten around 734 00:39:54,860 --> 00:39:56,420 interface design here. 735 00:39:56,420 --> 00:39:59,666 You've got total freedom to do whatever you want. 736 00:39:59,666 --> 00:40:01,950 >> So in this one, this is kind of a little crazy. 737 00:40:01,950 --> 00:40:09,200 738 00:40:09,200 --> 00:40:10,450 I love these guys. 739 00:40:10,450 --> 00:40:26,740 740 00:40:26,740 --> 00:40:29,012 I could watch these guys bouncing all day. 741 00:40:29,012 --> 00:40:40,550 742 00:40:40,550 --> 00:40:44,940 He's got a whole bunch of different experiences there. 743 00:40:44,940 --> 00:40:47,020 >> All of these you can get through Airspace. 744 00:40:47,020 --> 00:40:49,080 So feel free to sign up. 745 00:40:49,080 --> 00:40:49,600 It's free. 746 00:40:49,600 --> 00:40:52,070 You can go have a look at the apps. 747 00:40:52,070 --> 00:40:54,060 >> This is kind of a musical experiment. 748 00:40:54,060 --> 00:40:58,680 But what he's doing is he's using the full 3D space to create different 749 00:40:58,680 --> 00:40:59,930 sound effects. 750 00:40:59,930 --> 00:41:14,815 751 00:41:14,815 --> 00:41:17,100 It's probably a little bit hard to hear through the sound system. 752 00:41:17,100 --> 00:41:20,550 But basically he's using this full 3D space to create a new type of 753 00:41:20,550 --> 00:41:21,350 instrument. 754 00:41:21,350 --> 00:41:25,690 And then whether I use three fingers, four fingers, or one finger, I can 755 00:41:25,690 --> 00:41:30,360 basically start to change the effect of a sound. 756 00:41:30,360 --> 00:41:34,690 So it's definitely very experimental, but it highlights that 757 00:41:34,690 --> 00:41:35,940 freedom in that 3D space. 758 00:41:35,940 --> 00:41:44,320 759 00:41:44,320 --> 00:41:48,510 >> So you saw Block 54, it's a game. 760 00:41:48,510 --> 00:41:54,850 And the last two were more creative, experiential kind of things. 761 00:41:54,850 --> 00:41:58,000 It's easy to get wrapped up in that kind of creative world, and there's so 762 00:41:58,000 --> 00:42:00,110 much amazing stuff that we're seeing come out. 763 00:42:00,110 --> 00:42:03,670 And if nothing else, that's a great reason to develop for the Leap Motion. 764 00:42:03,670 --> 00:42:08,310 >> We're seeing so much amazing, creative stuff, but there's also an element of 765 00:42:08,310 --> 00:42:10,360 efficiency. 766 00:42:10,360 --> 00:42:15,030 And so I just want to show you a quick integration that the 767 00:42:15,030 --> 00:42:16,280 Google Earth team-- 768 00:42:16,280 --> 00:42:18,490 769 00:42:18,490 --> 00:42:20,130 some of you might have seen this before. 770 00:42:20,130 --> 00:42:23,710 771 00:42:23,710 --> 00:42:31,240 Hopefully I've got an OK connection here, because it is a little bit 772 00:42:31,240 --> 00:42:32,490 bandwidth intensive. 773 00:42:32,490 --> 00:42:35,150 774 00:42:35,150 --> 00:42:37,630 >> But you're probably familiar with Google Earth and how you generally 775 00:42:37,630 --> 00:42:38,860 would navigate around that. 776 00:42:38,860 --> 00:42:43,650 It's click and drag, you've got the sliders for zoom in, zoom out. 777 00:42:43,650 --> 00:42:47,045 If you're really proficient at it, you've got keyboard shortcuts, click 778 00:42:47,045 --> 00:42:48,530 and pan and tilt. 779 00:42:48,530 --> 00:42:51,400 There's all these different ways that you can navigate around this 3D 780 00:42:51,400 --> 00:42:52,360 environment. 781 00:42:52,360 --> 00:42:56,180 But what the Google team did was they just rewrote the rules on that. 782 00:42:56,180 --> 00:43:00,630 783 00:43:00,630 --> 00:43:02,240 >> We might have a little bit of bandwidth issues. 784 00:43:02,240 --> 00:43:10,560 But what you can kind of see there is you can basically just navigate. 785 00:43:10,560 --> 00:43:16,990 So let's see where we want to go to. 786 00:43:16,990 --> 00:43:20,220 Oh, yeah, we're a little bit stilted there. 787 00:43:20,220 --> 00:43:25,280 But what it's allowing me to do is I can control multiple degrees of 788 00:43:25,280 --> 00:43:27,260 freedom all with one fluid movement. 789 00:43:27,260 --> 00:43:31,320 >> So I can pan left to right. 790 00:43:31,320 --> 00:43:33,440 I've got look up, look down. 791 00:43:33,440 --> 00:43:34,930 I can change my elevation. 792 00:43:34,930 --> 00:43:36,550 I can move forward. 793 00:43:36,550 --> 00:43:45,040 I can basically go and I can spin around a certain point and just keep 794 00:43:45,040 --> 00:43:46,460 my focus on it. 795 00:43:46,460 --> 00:43:49,010 I've got complete freedom in this 3D space. 796 00:43:49,010 --> 00:43:53,400 >> And all of a sudden, my efficiency of navigating around the space is just 797 00:43:53,400 --> 00:43:56,110 multiplied immensely. 798 00:43:56,110 --> 00:44:01,180 So I can jump from Boston to San Francisco to New Zealand in a couple 799 00:44:01,180 --> 00:44:01,840 of seconds. 800 00:44:01,840 --> 00:44:06,120 Previously, that sort of operation would have taken me quite a few 801 00:44:06,120 --> 00:44:08,600 different clicks and movements and keyboard shortcuts, and I have to 802 00:44:08,600 --> 00:44:09,560 remember it all. 803 00:44:09,560 --> 00:44:14,500 >> So this is an application where this sort of natural interaction is 804 00:44:14,500 --> 00:44:16,350 allowing a greater efficiency. 805 00:44:16,350 --> 00:44:18,540 So that's another thing to keep at the back of your mind. 806 00:44:18,540 --> 00:44:22,175 Is this something that I can make more efficient in what I'm building? 807 00:44:22,175 --> 00:44:27,290 808 00:44:27,290 --> 00:44:33,940 >> And the final one I want to show you before I go into the SDK is about the 809 00:44:33,940 --> 00:44:35,220 educational possibilities. 810 00:44:35,220 --> 00:44:37,190 And this is something that Dan touched on lightly with 811 00:44:37,190 --> 00:44:39,490 the Children's Hospital. 812 00:44:39,490 --> 00:44:40,410 We're going full screen. 813 00:44:40,410 --> 00:44:41,660 Hang on a second. 814 00:44:41,660 --> 00:44:46,780 815 00:44:46,780 --> 00:44:48,030 Here we go. 816 00:44:48,030 --> 00:45:07,280 817 00:45:07,280 --> 00:45:08,530 >> This is a bit strange. 818 00:45:08,530 --> 00:45:14,860 819 00:45:14,860 --> 00:45:16,380 Let's try giving that a full screen again. 820 00:45:16,380 --> 00:45:20,502 821 00:45:20,502 --> 00:45:23,580 Well, that one doesn't look like it wants to run on this predictive for 822 00:45:23,580 --> 00:45:24,830 some reason. 823 00:45:24,830 --> 00:45:31,180 824 00:45:31,180 --> 00:45:32,430 Interesting. 825 00:45:32,430 --> 00:45:34,602 826 00:45:34,602 --> 00:45:38,220 Oh well, that's too bad. 827 00:45:38,220 --> 00:45:40,980 >> So this one is basically a little app. 828 00:45:40,980 --> 00:45:46,730 You can have a look at it later, after this if you want. 829 00:45:46,730 --> 00:45:51,110 But basically what it's doing is it's a full 3D representation of the skull. 830 00:45:51,110 --> 00:45:54,090 And what you can do is basically take it apart in 3D. 831 00:45:54,090 --> 00:45:55,780 It becomes a 3D jigsaw. 832 00:45:55,780 --> 00:45:58,450 >> So some of these applications, they'll [? ask ?] for a more immersive 833 00:45:58,450 --> 00:45:59,400 learning environment. 834 00:45:59,400 --> 00:46:03,930 So when you're able to interact with what you're learning, you start to 835 00:46:03,930 --> 00:46:04,870 take it in a lot more. 836 00:46:04,870 --> 00:46:09,910 So we're seeing a lot of interesting applications being developed, both in 837 00:46:09,910 --> 00:46:13,132 early learning and special needs learning, as well as all the way 838 00:46:13,132 --> 00:46:15,000 through the sciences. 839 00:46:15,000 --> 00:46:18,180 So there's a lot of interesting applications along that. 840 00:46:18,180 --> 00:46:25,250 >> I'll try and show you this one, but it's going to be a little bit hit and 841 00:46:25,250 --> 00:46:28,040 miss whether we can get it to work here. 842 00:46:28,040 --> 00:46:40,660 843 00:46:40,660 --> 00:46:45,740 This is only showing half of the anatomy at the moment. 844 00:46:45,740 --> 00:46:48,670 But what this is allowing you to do is see how you can navigate 845 00:46:48,670 --> 00:46:51,900 around this in 3D. 846 00:46:51,900 --> 00:46:58,130 I can basically start removing sections and be able to navigate. 847 00:46:58,130 --> 00:47:07,610 I can actually start to basically peel back the different layers. 848 00:47:07,610 --> 00:47:10,580 It's almost like seeing an MRI in real time. 849 00:47:10,580 --> 00:47:14,425 >> This is part of the BioDigital Human Project. 850 00:47:14,425 --> 00:47:17,200 So this is actually something that's brand new that's come out. 851 00:47:17,200 --> 00:47:22,190 You can sort of see how you can just take pieces apart and then just 852 00:47:22,190 --> 00:47:27,880 basically navigate in and examine it a lot more closely. 853 00:47:27,880 --> 00:47:31,020 You can see this is actually running directly in the browser, so this is an 854 00:47:31,020 --> 00:47:33,370 example of what's possible with the JavaScript API. 855 00:47:33,370 --> 00:47:36,120 856 00:47:36,120 --> 00:47:45,190 >> So those are a few different examples of some of the applications. 857 00:47:45,190 --> 00:47:48,310 You saw the creative exploratory situation. 858 00:47:48,310 --> 00:47:51,560 You saw some of the efficiency increases, some sort of interactive 859 00:47:51,560 --> 00:47:52,850 learning examples. 860 00:47:52,850 --> 00:47:54,600 So you can see there's a wide variety of different 861 00:47:54,600 --> 00:47:55,850 applications, different software. 862 00:47:55,850 --> 00:47:59,310 863 00:47:59,310 --> 00:48:02,010 >> I'm guessing that probably not many people have had a look at the SDK by 864 00:48:02,010 --> 00:48:03,000 this stage. 865 00:48:03,000 --> 00:48:07,530 So I'll just go at a very, very high level through what is the data that's 866 00:48:07,530 --> 00:48:09,190 making all of this work. 867 00:48:09,190 --> 00:48:12,630 What is it as you as a developer would be working with to create those sort 868 00:48:12,630 --> 00:48:14,240 of experiences. 869 00:48:14,240 --> 00:48:17,430 >> So I've touched on, a few times now, Frames. 870 00:48:17,430 --> 00:48:21,780 So at the very, very lowest level, we have what we call Frames. 871 00:48:21,780 --> 00:48:25,610 And a frame is basically returned to you up to 200 times a second, and it 872 00:48:25,610 --> 00:48:28,870 contains everything that the Leap sees. 873 00:48:28,870 --> 00:48:32,740 So the Leap see hands, it see fingers, and it sees tools. 874 00:48:32,740 --> 00:48:35,290 So I'll show you quickly in our visualizer what that looks like. 875 00:48:35,290 --> 00:48:45,970 876 00:48:45,970 --> 00:48:49,720 >> So if you're interested in doing some Leap development, this tool here is 877 00:48:49,720 --> 00:48:53,150 probably going to be one of the most useful things that you can 878 00:48:53,150 --> 00:48:54,490 start to play with. 879 00:48:54,490 --> 00:48:59,090 It's actually not immediately clear possibly where you get to this from. 880 00:48:59,090 --> 00:49:01,690 And I'll show you quickly just so that you're all aware of where you can 881 00:49:01,690 --> 00:49:02,610 actually get to this. 882 00:49:02,610 --> 00:49:05,380 >> So when you're running the Leap Motion software, you've got this 883 00:49:05,380 --> 00:49:06,460 little icon up here. 884 00:49:06,460 --> 00:49:09,350 This is where you can launch Airspace from, it's where you can get to your 885 00:49:09,350 --> 00:49:10,610 settings from. 886 00:49:10,610 --> 00:49:18,680 One of the things in here is this thing called the diagnostics 887 00:49:18,680 --> 00:49:21,280 visualizer, and that's under Troubleshooting. 888 00:49:21,280 --> 00:49:26,932 It'll launch this tool here, and this is basically-- 889 00:49:26,932 --> 00:49:28,182 >> AUDIENCE: [INAUDIBLE]. 890 00:49:28,182 --> 00:49:30,310 891 00:49:30,310 --> 00:49:30,770 >> MICHAEL SUTHERLAND: Oh, right. 892 00:49:30,770 --> 00:49:31,390 Yeah, thanks for that. 893 00:49:31,390 --> 00:49:32,640 I noticed that as well. 894 00:49:32,640 --> 00:49:37,550 895 00:49:37,550 --> 00:49:37,860 Thanks. 896 00:49:37,860 --> 00:49:39,970 It just kind of popped out before. 897 00:49:39,970 --> 00:49:41,970 Thanks for noticing that. 898 00:49:41,970 --> 00:49:46,410 >> So this is basically just what the Leap is pumping out. 899 00:49:46,410 --> 00:49:49,080 So this is the data that's coming out being processed by us. 900 00:49:49,080 --> 00:49:52,480 And at the end of the day, this is what you get. 901 00:49:52,480 --> 00:49:54,740 So this is hands and fingers, basically. 902 00:49:54,740 --> 00:49:58,260 What you're seeing there is all my fingers represented in real time down 903 00:49:58,260 --> 00:50:00,150 to a hundredth of a millimeter. 904 00:50:00,150 --> 00:50:01,330 >> You can see the arrows. 905 00:50:01,330 --> 00:50:03,760 The arrows represent the direction of my finger. 906 00:50:03,760 --> 00:50:05,960 So that's something that you'll get through IPI. 907 00:50:05,960 --> 00:50:09,660 You can see where they're drawing-- that's the position of the fingers. 908 00:50:09,660 --> 00:50:13,790 And you also get the velocity at any one time as well. 909 00:50:13,790 --> 00:50:16,990 >> And you'll see there the two big circles representing my palm. 910 00:50:16,990 --> 00:50:20,240 And you've got a big arrow sticking out the bottom, or the top if I hold 911 00:50:20,240 --> 00:50:25,130 my hand upside down, and those are representing the palm normal vectors. 912 00:50:25,130 --> 00:50:29,490 So basically normal vector being just a vector that's sticking straight out 913 00:50:29,490 --> 00:50:31,340 of your palm's surface. 914 00:50:31,340 --> 00:50:36,290 So those are the fundamental building blocks that you'd be working with with 915 00:50:36,290 --> 00:50:37,595 building Leap software. 916 00:50:37,595 --> 00:50:43,020 And this tool allows you to really see exactly what's going on. 917 00:50:43,020 --> 00:50:46,250 >> And there's a few things that you can do, a few little tips in this 918 00:50:46,250 --> 00:50:49,070 visualize that may be helpful. 919 00:50:49,070 --> 00:50:52,925 One is just to represent your fingers a little bit more clearly. 920 00:50:52,925 --> 00:50:55,770 921 00:50:55,770 --> 00:51:02,020 The other thing that may help is this is essentially 922 00:51:02,020 --> 00:51:04,410 what the Leap is seeing. 923 00:51:04,410 --> 00:51:07,150 >> So I mentioned before, there's a couple of optical sensors. 924 00:51:07,150 --> 00:51:11,120 So these things have basically a field of view of about 150 degrees. 925 00:51:11,120 --> 00:51:15,220 And so this yellow box here is representing what this can see. 926 00:51:15,220 --> 00:51:18,340 So you can see here as I go outside that box I'm 927 00:51:18,340 --> 00:51:20,580 starting to lose my hands. 928 00:51:20,580 --> 00:51:23,780 And if I start to go outside here, it'll still pick it up, but you're 929 00:51:23,780 --> 00:51:25,730 starting to lose it on the edges. 930 00:51:25,730 --> 00:51:28,300 So this gives you a bit of a sense of the space that you've 931 00:51:28,300 --> 00:51:29,550 having to play with. 932 00:51:29,550 --> 00:51:36,940 933 00:51:36,940 --> 00:51:41,090 >> And you'll see here if you press H, it'll toggle this menu. 934 00:51:41,090 --> 00:51:43,005 And that will actually give you a whole bunch of different options that 935 00:51:43,005 --> 00:51:45,060 you can access. 936 00:51:45,060 --> 00:51:47,020 Most of it you probably won't need. 937 00:51:47,020 --> 00:51:52,630 But it's a great way of visualizing what's going on without getting dug 938 00:51:52,630 --> 00:51:53,880 down into the data. 939 00:51:53,880 --> 00:52:00,740 940 00:52:00,740 --> 00:52:03,950 >> So that's the Frames, Hands, Fingers and Tools. 941 00:52:03,950 --> 00:52:09,060 Actually, I'll show you just quickly before I go back, the Tool. 942 00:52:09,060 --> 00:52:11,170 So let me see, this should work. 943 00:52:11,170 --> 00:52:15,870 944 00:52:15,870 --> 00:52:19,240 So you can see here my hands. 945 00:52:19,240 --> 00:52:22,330 And if I bring in this pin, it's coming up as gray. 946 00:52:22,330 --> 00:52:24,470 And what that's saying is that that's a tool. 947 00:52:24,470 --> 00:52:26,610 >> So we have what we call a tool API. 948 00:52:26,610 --> 00:52:31,430 It actually recognizes objects like pens or paintbrushes, anything that's 949 00:52:31,430 --> 00:52:32,520 roughly of this sort of shape. 950 00:52:32,520 --> 00:52:35,570 It'll be able to tell that that's not a finger, and you can actually use 951 00:52:35,570 --> 00:52:38,020 that to your advantage when you're building software for this. 952 00:52:38,020 --> 00:52:40,710 953 00:52:40,710 --> 00:52:43,340 >> You can start to bring real-world objects into your 954 00:52:43,340 --> 00:52:44,790 application, for example. 955 00:52:44,790 --> 00:52:49,140 So you might have literally an easel of different paintbrushes, and each 956 00:52:49,140 --> 00:52:51,480 paintbrush you've coded up to represent a different 957 00:52:51,480 --> 00:52:52,720 brush in the software. 958 00:52:52,720 --> 00:52:56,450 So instead of actually changing it through a menu on the software, you 959 00:52:56,450 --> 00:52:58,900 can literally just pick up a different brush and start painting with it and 960 00:52:58,900 --> 00:53:00,150 have the software adapt to it. 961 00:53:00,150 --> 00:53:06,160 962 00:53:06,160 --> 00:53:09,400 >> So that's Frames, Hands, Fingers and Tools. 963 00:53:09,400 --> 00:53:12,500 So that's the really, really low level stuff that we have. 964 00:53:12,500 --> 00:53:18,270 I don't know if anyone here has any familiarity with the Kinect. 965 00:53:18,270 --> 00:53:23,210 One of the things we get asked a lot is where is the raw data. 966 00:53:23,210 --> 00:53:28,890 And what that means is in other 3D tracking systems, it's basically a 967 00:53:28,890 --> 00:53:30,310 blob of data. 968 00:53:30,310 --> 00:53:32,600 >> What we do here is create a more structured approach. 969 00:53:32,600 --> 00:53:34,230 So this is actually the lowest level data. 970 00:53:34,230 --> 00:53:37,220 And we find that because it's structured like this, it really helps 971 00:53:37,220 --> 00:53:39,360 people to get started quicker. 972 00:53:39,360 --> 00:53:43,030 If you just got given a full 3D blob of data, it becomes very 973 00:53:43,030 --> 00:53:44,720 difficult to work with. 974 00:53:44,720 --> 00:53:47,333 So that's one of the reasons why it's structured in the way it is. 975 00:53:47,333 --> 00:53:51,906 >> So is there any questions around any of that? 976 00:53:51,906 --> 00:53:52,902 Nope. 977 00:53:52,902 --> 00:53:54,152 So we'll move on. 978 00:53:54,152 --> 00:53:57,060 979 00:53:57,060 --> 00:54:01,060 >> You might be able to start to see even though the data is structured in a way 980 00:54:01,060 --> 00:54:05,180 that gives you literally what you're seeing, like hands and fingers, it can 981 00:54:05,180 --> 00:54:10,650 be a little daunting at first to start to figure out how to work with that. 982 00:54:10,650 --> 00:54:13,570 Now I'm tracking fingers in 3D, what do I do with that? 983 00:54:13,570 --> 00:54:18,670 So we do have some higher level APIs to help get around some of those 984 00:54:18,670 --> 00:54:21,540 areas, and it might be a way to get started a bit quicker as well. 985 00:54:21,540 --> 00:54:25,300 >> So this is conceptually called Motions. 986 00:54:25,300 --> 00:54:26,550 It's a part of our API. 987 00:54:26,550 --> 00:54:29,290 988 00:54:29,290 --> 00:54:33,150 You'll find some guides on what Motions is. 989 00:54:33,150 --> 00:54:36,310 But at a conceptual level, what it's doing is it's basically taking all 990 00:54:36,310 --> 00:54:39,610 these movements in the space and turning them into one of three 991 00:54:39,610 --> 00:54:42,590 things-- translation, rotation, and scaling. 992 00:54:42,590 --> 00:54:44,860 >> So don't get too caught up in that. 993 00:54:44,860 --> 00:54:49,770 But what it basically allows you to do is it converts these complex movements 994 00:54:49,770 --> 00:54:55,310 into single digits, or a degree of rotation, or a scaling 995 00:54:55,310 --> 00:54:56,530 factor like a number. 996 00:54:56,530 --> 00:55:02,190 So what it does is it abstracts out a lot of the complex mechanics and if 997 00:55:02,190 --> 00:55:06,150 I'm doing this, it gives you a number that says this is scaling by 10. 998 00:55:06,150 --> 00:55:10,280 >> So what you can do then is if you had an image that you wanted to enlarge, 999 00:55:10,280 --> 00:55:12,120 you could grab the image. 1000 00:55:12,120 --> 00:55:15,370 And then use this sort of API to say, well, now I'm scaling it by a factor 1001 00:55:15,370 --> 00:55:18,570 of 10 and you don't have to worry about all the data that's going on. 1002 00:55:18,570 --> 00:55:20,400 So it's something to just keep at the back of your mind. 1003 00:55:20,400 --> 00:55:23,740 It may make it a little easier if you're trying to do some of those more 1004 00:55:23,740 --> 00:55:26,680 complex interactions. 1005 00:55:26,680 --> 00:55:28,420 >> That's what we call the Motions API. 1006 00:55:28,420 --> 00:55:32,180 You won't see it actually called Motions in the documentation. 1007 00:55:32,180 --> 00:55:35,750 It's actually a collection of APIs from different places. 1008 00:55:35,750 --> 00:55:38,790 But what I can do is if anyone's interested in learning more about 1009 00:55:38,790 --> 00:55:45,230 that, I'm happy to point you at some guides for how to get started on that. 1010 00:55:45,230 --> 00:55:47,540 >> And then the next thing up, which is the thing that most people are 1011 00:55:47,540 --> 00:55:49,920 probably most familiar with, is Gestures. 1012 00:55:49,920 --> 00:55:53,680 So this is much higher level abstraction. 1013 00:55:53,680 --> 00:55:55,910 So you're basically taking all of these sort of movements and you're 1014 00:55:55,910 --> 00:55:58,510 saying, right, what's a discrete thing that I can do? 1015 00:55:58,510 --> 00:56:03,690 So I can circle with my finger, or I can swipe with my hand, or I can tap 1016 00:56:03,690 --> 00:56:04,720 in the ear. 1017 00:56:04,720 --> 00:56:08,240 And so we've broken those down just to try and make it a little bit easier to 1018 00:56:08,240 --> 00:56:11,860 get started into some of these gestures. 1019 00:56:11,860 --> 00:56:14,390 And I'll show you show a little bit about how some of those work. 1020 00:56:14,390 --> 00:56:17,860 1021 00:56:17,860 --> 00:56:24,675 >> So back in the visualizer, if I turn Gestures on-- 1022 00:56:24,675 --> 00:56:37,550 1023 00:56:37,550 --> 00:56:42,675 let me just stop that so it's not rotating and making it run dizzy. 1024 00:56:42,675 --> 00:56:43,430 Right, there we go. 1025 00:56:43,430 --> 00:56:44,680 Turn it up. 1026 00:56:44,680 --> 00:56:49,750 1027 00:56:49,750 --> 00:56:50,800 Right, here we go. 1028 00:56:50,800 --> 00:56:53,560 >> So now you can see that my hands are in the space. 1029 00:56:53,560 --> 00:56:57,750 If I draw a circle, it's coming up and showing a circle. 1030 00:56:57,750 --> 00:57:01,140 And you can see that's actually in any plane. 1031 00:57:01,140 --> 00:57:02,360 It doesn't really matter how I draw it. 1032 00:57:02,360 --> 00:57:05,760 But it's basically detecting that I'm drawing a circle with my finger. 1033 00:57:05,760 --> 00:57:10,830 >> And at the API level, we've tried to make that as easy as possible to use. 1034 00:57:10,830 --> 00:57:14,880 So you don't really have to think about the mechanics of tracking points 1035 00:57:14,880 --> 00:57:16,610 in 3D and figuring out whether it's a circle. 1036 00:57:16,610 --> 00:57:19,690 You can just say, is a circle happening? 1037 00:57:19,690 --> 00:57:23,150 So it's one thing that you can use as a control mechanism. 1038 00:57:23,150 --> 00:57:26,257 >> You'll also see there that we've got swipes, taps. 1039 00:57:26,257 --> 00:57:30,570 1040 00:57:30,570 --> 00:57:34,280 You can see those little balls bouncing there at the bottom. 1041 00:57:34,280 --> 00:57:37,990 So those are visually how we show what the gestures are. 1042 00:57:37,990 --> 00:57:42,600 >> But in terms of developing software for this, it's just a high level way 1043 00:57:42,600 --> 00:57:47,130 of simplifying a lot of the complexity of tracking fingers, so you can just 1044 00:57:47,130 --> 00:57:49,210 use those as is. 1045 00:57:49,210 --> 00:57:51,250 You'll start to see different approaches to that. 1046 00:57:51,250 --> 00:57:54,890 And I'll show you another approach a little bit later on of a different way 1047 00:57:54,890 --> 00:57:59,390 of doing that, but those all built into the API. 1048 00:57:59,390 --> 00:58:05,900 1049 00:58:05,900 --> 00:58:09,340 >> So we have a few other parts to the SDK that might be 1050 00:58:09,340 --> 00:58:10,700 interesting to you guys. 1051 00:58:10,700 --> 00:58:15,440 So just to cover those last bits, there's three levels of abstraction I 1052 00:58:15,440 --> 00:58:16,000 talked about. 1053 00:58:16,000 --> 00:58:20,330 The low level, which is the Frames, the Hands and the Fingers. 1054 00:58:20,330 --> 00:58:23,570 >> The middle level, where it's converting a lot of that movement into 1055 00:58:23,570 --> 00:58:30,510 continuous movement, so Rotation, or Scaling, or Translation. 1056 00:58:30,510 --> 00:58:33,010 And then to the next level up which is the gestures, like 1057 00:58:33,010 --> 00:58:34,160 am I doing a circle? 1058 00:58:34,160 --> 00:58:35,560 Am I doing a tap? 1059 00:58:35,560 --> 00:58:37,890 Am I doing a swipe? 1060 00:58:37,890 --> 00:58:42,480 >> Then on the other side of it, we've got things called the Interaction Box. 1061 00:58:42,480 --> 00:58:45,620 I don't want to go into too many details, because this is all just to 1062 00:58:45,620 --> 00:58:47,990 give you a bit of a taste of what some of the things are. 1063 00:58:47,990 --> 00:58:51,710 You're definitely more than welcome to reach out to me with specifics later 1064 00:58:51,710 --> 00:58:52,740 on about this. 1065 00:58:52,740 --> 00:58:56,320 But the Interaction Box is another way that we're trying to make it a little 1066 00:58:56,320 --> 00:59:00,880 bit simpler to think about coordinates in the space. 1067 00:59:00,880 --> 00:59:03,630 >> So I mentioned before you saw the space-- 1068 00:59:03,630 --> 00:59:06,520 it's this 3D inverted pyramid. 1069 00:59:06,520 --> 00:59:07,940 That could become a little tricky. 1070 00:59:07,940 --> 00:59:08,700 You can sort of see it there. 1071 00:59:08,700 --> 00:59:11,760 That can become a little tricky if you're trying to translate that into 1072 00:59:11,760 --> 00:59:15,770 screen space where you're displaying what you're working on. 1073 00:59:15,770 --> 00:59:17,685 >> So what we created is an Interaction Box. 1074 00:59:17,685 --> 00:59:25,630 1075 00:59:25,630 --> 00:59:27,280 It's going to be very difficult-- 1076 00:59:27,280 --> 00:59:29,560 oh, there we go if I turn that one on. 1077 00:59:29,560 --> 00:59:31,170 So you can see that white box there. 1078 00:59:31,170 --> 00:59:34,650 1079 00:59:34,650 --> 00:59:40,990 And basically what that's doing is it's just mapping that to zero to one, 1080 00:59:40,990 --> 00:59:41,540 zero to one. 1081 00:59:41,540 --> 00:59:44,480 So you just get a scaled space that's always fixed. 1082 00:59:44,480 --> 00:59:47,900 You don't need to worry about how far you are above the device, 1083 00:59:47,900 --> 00:59:48,520 or wherever it is. 1084 00:59:48,520 --> 00:59:49,770 >> And this adjusts-- 1085 00:59:49,770 --> 00:59:52,410 1086 00:59:52,410 --> 00:59:54,160 at least it should adjust. 1087 00:59:54,160 --> 00:59:59,850 1088 00:59:59,850 --> 01:00:02,570 This is obviously demo mode. 1089 01:00:02,570 --> 01:00:06,630 But basically what will happen with that is it will just adjust to 1090 01:00:06,630 --> 01:00:10,890 wherever the person is above the device, and it'll create a consistent 1091 01:00:10,890 --> 01:00:12,870 space for you to work in. 1092 01:00:12,870 --> 01:00:16,090 >> It sounds a little complex with the way I'm explaining it there. 1093 01:00:16,090 --> 01:00:20,620 But what it essentially allows you to do is just forget about 1094 01:00:20,620 --> 01:00:21,600 where the person is. 1095 01:00:21,600 --> 01:00:25,610 It just gives you a scaled zero to one in the Y, zero to one in the X. And 1096 01:00:25,610 --> 01:00:29,550 you just don't need to worry about all the complexity of where the person is, 1097 01:00:29,550 --> 01:00:33,000 whether they're using big movements or small movements, and it just scales 1098 01:00:33,000 --> 01:00:35,030 everything for you. 1099 01:00:35,030 --> 01:00:36,330 So that's just something to keep an eye out. 1100 01:00:36,330 --> 01:00:38,350 >> If you do look through the documentation and you see something 1101 01:00:38,350 --> 01:00:41,920 about Interaction Box, that's what that's referring to. 1102 01:00:41,920 --> 01:00:45,792 It can be a little difficult concept to understand what it is. 1103 01:00:45,792 --> 01:00:57,040 And it's unfortunate that it's not scaling up with me, but that's OK. 1104 01:00:57,040 --> 01:01:01,260 >> And while we're on this view, the other API that would be interesting to 1105 01:01:01,260 --> 01:01:03,530 maybe talk about is our Touch Zone API. 1106 01:01:03,530 --> 01:01:08,900 So one of the first things that people ask is how do you click with the Leap? 1107 01:01:08,900 --> 01:01:11,250 It's kind of an interesting question, because you don't really need to click 1108 01:01:11,250 --> 01:01:12,390 with the Leap. 1109 01:01:12,390 --> 01:01:15,350 What we try and encourage is to think about actually interacting with the 1110 01:01:15,350 --> 01:01:19,410 space, grab it and move it-- you don't need to click and drag. 1111 01:01:19,410 --> 01:01:23,850 >> But for the applications where some sort of interaction is necessary, we 1112 01:01:23,850 --> 01:01:25,775 have an API that's called a Touch Zone API. 1113 01:01:25,775 --> 01:01:29,470 And it just tries to take a lot of the complexity of figuring out exactly 1114 01:01:29,470 --> 01:01:33,130 what the user's doing in the air and simplifies it into just an event that 1115 01:01:33,130 --> 01:01:35,600 says you've either clicked or not. 1116 01:01:35,600 --> 01:01:38,250 And I'll just show you very quickly how that works. 1117 01:01:38,250 --> 01:01:43,720 1118 01:01:43,720 --> 01:01:52,000 >> So you can see here my finger's being represented as a cursor, and you'll 1119 01:01:52,000 --> 01:01:54,720 get given this position throughout API. 1120 01:01:54,720 --> 01:01:58,250 And as I start to move forward, it basically says I'm now clicking and I 1121 01:01:58,250 --> 01:02:00,080 can drag this around. 1122 01:02:00,080 --> 01:02:02,700 And it doesn't really matter where I am in the 3D space-- 1123 01:02:02,700 --> 01:02:04,650 it'll work no matter where I am. 1124 01:02:04,650 --> 01:02:09,060 >> And so at face value it looks very simple. 1125 01:02:09,060 --> 01:02:12,180 There's actually a lot of complex mechanics around that. 1126 01:02:12,180 --> 01:02:15,800 So that's why we try to encapsulate all that into an API and make it a 1127 01:02:15,800 --> 01:02:17,610 little simpler for you guys. 1128 01:02:17,610 --> 01:02:21,140 So if you have a look at the API, it's actually pretty straightforward to 1129 01:02:21,140 --> 01:02:23,780 build that into your application, and you don't have to worry about all the 1130 01:02:23,780 --> 01:02:27,130 complexities of where the person's hand is. 1131 01:02:27,130 --> 01:02:31,380 >> So there's a lot of other stuff in the SDK. 1132 01:02:31,380 --> 01:02:33,610 If you want to have a bit of explore, you'll start to find some 1133 01:02:33,610 --> 01:02:34,210 of the other things. 1134 01:02:34,210 --> 01:02:38,860 But those are some of the high level concepts that are in our SDK. 1135 01:02:38,860 --> 01:02:42,760 >> It might be a little bit much to take in without having had a chance to play 1136 01:02:42,760 --> 01:02:44,050 around with the Leap yet. 1137 01:02:44,050 --> 01:02:47,800 But I just wanted to give you a bit of a flavor of what's in there so that 1138 01:02:47,800 --> 01:02:51,850 when you do get to it, as I said, feel free to reach out to us. 1139 01:02:51,850 --> 01:02:54,470 I can point you in the right direction for any sort of documentation to help 1140 01:02:54,470 --> 01:02:55,720 you get started. 1141 01:02:55,720 --> 01:03:01,080 1142 01:03:01,080 --> 01:03:06,960 >> So as I mentioned, our SDK has a bunch of native languages. 1143 01:03:06,960 --> 01:03:08,870 We have the JavaScript API. 1144 01:03:08,870 --> 01:03:13,310 One of the easiest ways to get started might be to look at some of the 1145 01:03:13,310 --> 01:03:16,560 platforms of the frameworks that are out there. 1146 01:03:16,560 --> 01:03:19,370 >> I don't know if people are familiar with Unity. 1147 01:03:19,370 --> 01:03:22,340 famo.us, goo and Vuo are all very new ones to the scene. 1148 01:03:22,340 --> 01:03:24,820 Unreal you've probably seen in game engines. 1149 01:03:24,820 --> 01:03:30,040 >> But what these kind of environments do is it may be an easier way to help to 1150 01:03:30,040 --> 01:03:30,930 get started. 1151 01:03:30,930 --> 01:03:33,890 Because what some of them do will provide you with a 3D framework to 1152 01:03:33,890 --> 01:03:34,770 start with. 1153 01:03:34,770 --> 01:03:37,490 So it kind of takes out some of the complexity. 1154 01:03:37,490 --> 01:03:40,930 You get more of a visual environment to work in. 1155 01:03:40,930 --> 01:03:45,380 >> famo.us is a new platform that's coming out for a web app development. 1156 01:03:45,380 --> 01:03:48,950 Their aim is to make web app development super easy. 1157 01:03:48,950 --> 01:03:50,830 So that will be coming out-- 1158 01:03:50,830 --> 01:03:52,340 there's no time frame for it at the moment. 1159 01:03:52,340 --> 01:03:54,790 But if that's something you're interested in doing, it could be one 1160 01:03:54,790 --> 01:03:56,430 to keep an eye on. 1161 01:03:56,430 --> 01:04:00,410 >> goo is an amazing HTML5 gaming platform. 1162 01:04:00,410 --> 01:04:05,530 They're doing a very visual editor as well online, again, for high 1163 01:04:05,530 --> 01:04:07,480 performance web apps. 1164 01:04:07,480 --> 01:04:11,520 Vuo is something I can go over very briefly. 1165 01:04:11,520 --> 01:04:15,580 This brings in the concept of rapid prototyping. 1166 01:04:15,580 --> 01:04:17,100 >> And I don't want to go too deep into that. 1167 01:04:17,100 --> 01:04:20,226 But one of the things if you are really interested in getting into this 1168 01:04:20,226 --> 01:04:25,370 sort of development, finding a good tool to do rapid prototyping could be 1169 01:04:25,370 --> 01:04:26,480 really valuable. 1170 01:04:26,480 --> 01:04:30,520 And what I mean by that is it's a framework where you have to do very, 1171 01:04:30,520 --> 01:04:33,200 very little effort to get a lot of return. 1172 01:04:33,200 --> 01:04:35,450 So you don't really need to do a lot of coding. 1173 01:04:35,450 --> 01:04:38,640 A lot of it's very visual-- it's dragging blocks around. 1174 01:04:38,640 --> 01:04:45,230 >> In fact, I can show you a very, very brief example of this. 1175 01:04:45,230 --> 01:05:04,650 1176 01:05:04,650 --> 01:05:07,710 So you can see here, it's just a completely visual environment-- 1177 01:05:07,710 --> 01:05:08,960 you don't even need to code. 1178 01:05:08,960 --> 01:05:18,888 1179 01:05:18,888 --> 01:05:21,220 Oh, great-- 1180 01:05:21,220 --> 01:05:23,340 we won't do that demo at the moment. 1181 01:05:23,340 --> 01:05:25,330 It doesn't seem to want to run at the moment. 1182 01:05:25,330 --> 01:05:29,490 So without going into too many details, it's what's called a visual 1183 01:05:29,490 --> 01:05:30,910 programming language. 1184 01:05:30,910 --> 01:05:34,460 It allows you to get some basic functionality working. 1185 01:05:34,460 --> 01:05:40,970 >> I'll just quickly bring up a completed version of this. 1186 01:05:40,970 --> 01:05:47,870 So you can see here, this is a very simple application that basically 1187 01:05:47,870 --> 01:05:50,400 takes an image and allows you to move it around with the Leap. 1188 01:05:50,400 --> 01:05:53,730 And these green blocks here are essentially all you need to do to get 1189 01:05:53,730 --> 01:05:55,380 started with the Leap side of it. 1190 01:05:55,380 --> 01:05:58,660 So it's a good way to get started. 1191 01:05:58,660 --> 01:06:01,550 If you have some ideas you want to experiment with before you even get 1192 01:06:01,550 --> 01:06:03,460 any code down, it's a good way to get started. 1193 01:06:03,460 --> 01:06:06,000 1194 01:06:06,000 --> 01:06:08,280 >> AUDIENCE: If we use [INAUDIBLE] 1195 01:06:08,280 --> 01:06:12,000 look at, would it translate into actual code? 1196 01:06:12,000 --> 01:06:14,870 >> MICHAEL SUTHERLAND: In that situation, I don't think you have the ability to 1197 01:06:14,870 --> 01:06:16,410 translate to code. 1198 01:06:16,410 --> 01:06:18,820 There are definitely some other frameworks out there. 1199 01:06:18,820 --> 01:06:21,990 Quartz Composer is actually an Apple tool. 1200 01:06:21,990 --> 01:06:25,560 It's no longer officially supported, but there's a big community around it. 1201 01:06:25,560 --> 01:06:27,550 >> We've seen some amazingly Leap stuff come out of that. 1202 01:06:27,550 --> 01:06:29,280 There's some plug-ins available. 1203 01:06:29,280 --> 01:06:34,260 I think there is access to low level code from Quartz, although I'm not 1204 01:06:34,260 --> 01:06:36,170 entirely sure about that. 1205 01:06:36,170 --> 01:06:38,400 But that's a good question. 1206 01:06:38,400 --> 01:06:45,790 1207 01:06:45,790 --> 01:06:50,210 >> So I'm just going to show you some very, very high level terms for things 1208 01:06:50,210 --> 01:06:53,470 to think about when you're developing. 1209 01:06:53,470 --> 01:06:57,830 Lighting conditions generally aren't a big issue for the Leap anymore. 1210 01:06:57,830 --> 01:07:01,330 We've got an amazing team that's basically been able to eliminate for 1211 01:07:01,330 --> 01:07:03,310 almost all lighting conditions, because that's something that can 1212 01:07:03,310 --> 01:07:04,080 potentially affect. 1213 01:07:04,080 --> 01:07:07,530 Infrared sources coming in from the outside have the ability to affect the 1214 01:07:07,530 --> 01:07:08,770 performance. 1215 01:07:08,770 --> 01:07:12,660 >> In general, you won't really come across many stumbling blocks. 1216 01:07:12,660 --> 01:07:17,590 If in your development you see that the device goes into robust mode, 1217 01:07:17,590 --> 01:07:21,680 really all it means is it may have detected that there's some infrared 1218 01:07:21,680 --> 01:07:23,880 light sources in the environment and it's compensating for it. 1219 01:07:23,880 --> 01:07:27,110 So don't be too worried about that. 1220 01:07:27,110 --> 01:07:32,870 >> In general, when you're designing software for the Leap, it's important 1221 01:07:32,870 --> 01:07:37,890 to realize that this could be the first time that your user is using 1222 01:07:37,890 --> 01:07:39,070 this technology. 1223 01:07:39,070 --> 01:07:44,560 And this is something that it's hard to get your head around initially. 1224 01:07:44,560 --> 01:07:49,240 What we try and encourage people to do is think about instead of just 1225 01:07:49,240 --> 01:07:53,490 allowing the user to have to find their way around the interaction, what 1226 01:07:53,490 --> 01:07:57,470 you're asking your user to do, try and explain it to them a little bit. 1227 01:07:57,470 --> 01:08:00,120 Treat them as though they may never have seen this technology. 1228 01:08:00,120 --> 01:08:04,400 Sometimes people won't even know to reach their hands out over the device, 1229 01:08:04,400 --> 01:08:06,830 so don't take anything for granted. 1230 01:08:06,830 --> 01:08:11,110 >> If you have a look around on Airspace, you'll notice that a lot of the apps 1231 01:08:11,110 --> 01:08:16,290 really infer the user into how to actually interact with that app. 1232 01:08:16,290 --> 01:08:18,060 That's something to just be aware of. 1233 01:08:18,060 --> 01:08:21,460 If you are developing software for this platform, it is new. 1234 01:08:21,460 --> 01:08:24,979 People aren't familiar with the technology yet, and so you may need to 1235 01:08:24,979 --> 01:08:29,220 help ease them into whatever it is that you're building. 1236 01:08:29,220 --> 01:08:31,600 >> Data is your friend. 1237 01:08:31,600 --> 01:08:32,880 I mentioned before the Visualizer. 1238 01:08:32,880 --> 01:08:35,240 It could be one of the best tools you use. 1239 01:08:35,240 --> 01:08:38,970 It just allows you to look and what you're doing. 1240 01:08:38,970 --> 01:08:42,890 Think about the action that you're trying to code up, and then look at 1241 01:08:42,890 --> 01:08:44,970 what it looks like in the Visualizer. 1242 01:08:44,970 --> 01:08:48,300 And then it will give you a better sense of what that data means that 1243 01:08:48,300 --> 01:08:51,740 you're getting out of the SDK. 1244 01:08:51,740 --> 01:08:59,779 >> If you're doing anything that needs a menu, menus are something that you 1245 01:08:59,779 --> 01:09:02,450 want the user to be able to do without even thinking. 1246 01:09:02,450 --> 01:09:04,380 It's not really part of your application. 1247 01:09:04,380 --> 01:09:07,080 It's a part of how the user uses your application. 1248 01:09:07,080 --> 01:09:09,670 >> So we have some resources on the developer site. 1249 01:09:09,670 --> 01:09:14,040 Just a couple of different systems for menus that take the burden off you 1250 01:09:14,040 --> 01:09:16,399 guys for having to think about how to build menus. 1251 01:09:16,399 --> 01:09:19,130 Because menus can be something that you could spend a lot of time trying 1252 01:09:19,130 --> 01:09:22,590 to build into your application, when really what you're trying to do is 1253 01:09:22,590 --> 01:09:24,850 build the idea that you have, not the menu. 1254 01:09:24,850 --> 01:09:29,140 So I would recommend if you have to do any sort of menu systems, definitely 1255 01:09:29,140 --> 01:09:31,430 have a look at the resources we have on the developer site. 1256 01:09:31,430 --> 01:09:34,370 We've got some great examples of how to do menus, and how to keep them 1257 01:09:34,370 --> 01:09:37,350 consistent so that users have a consistent experience across 1258 01:09:37,350 --> 01:09:40,170 applications. 1259 01:09:40,170 --> 01:09:41,689 >> Visual feedback. 1260 01:09:41,689 --> 01:09:45,870 So what I mean by that is if for example you're trying to do something 1261 01:09:45,870 --> 01:09:51,600 that is showing a 3D space, it's very important to provide some sort of 1262 01:09:51,600 --> 01:09:52,830 visual feedback. 1263 01:09:52,830 --> 01:09:58,340 So whether that's showing where your fingers are in that space, or in the 1264 01:09:58,340 --> 01:10:03,230 case of Block 54 that we saw at the very start, you may have noticed that 1265 01:10:03,230 --> 01:10:04,860 the [? pedals ?] were illuminated. 1266 01:10:04,860 --> 01:10:10,510 And when I went close to the tower of blocks, you could actually see 1267 01:10:10,510 --> 01:10:12,480 visually that I was close to them. 1268 01:10:12,480 --> 01:10:15,920 And it's a small trick, but it's actually a very important one. 1269 01:10:15,920 --> 01:10:19,940 So make sure that the user's oriented in that 3D space. 1270 01:10:19,940 --> 01:10:21,470 >> And again, rapid prototyping. 1271 01:10:21,470 --> 01:10:24,740 If you can find some tools that you find helpful, I definitely would 1272 01:10:24,740 --> 01:10:26,500 encourage you to invest the time in it. 1273 01:10:26,500 --> 01:10:30,210 Being able to get your ideas out quickly instead of having to spend a 1274 01:10:30,210 --> 01:10:34,090 lot of time coding at a lower level and trying to figure out how to code 1275 01:10:34,090 --> 01:10:37,600 it up, if you can get those ideas out in front of you, play around with them 1276 01:10:37,600 --> 01:10:45,380 a bit and then code it up, it could be a great time saver. 1277 01:10:45,380 --> 01:10:48,760 >> So we're getting to the end. 1278 01:10:48,760 --> 01:10:52,092 How are we for time? 1279 01:10:52,092 --> 01:10:55,960 >> SPEAKER 2: [INAUDIBLE] eight minutes until 5:30. 1280 01:10:55,960 --> 01:10:57,543 >> MICHAEL SUTHERLAND: We'll finish at 5:30? 1281 01:10:57,543 --> 01:10:58,505 >> SPEAKER 2: I do that. 1282 01:10:58,505 --> 01:11:01,010 That was the spot we advertise in here. 1283 01:11:01,010 --> 01:11:02,770 But we can do one on one Q&A after this. 1284 01:11:02,770 --> 01:11:05,260 >> MICHAEL SUTHERLAND: Yeah, I won't go too deep into the rest of this then. 1285 01:11:05,260 --> 01:11:07,570 I did mention before a different way of doing gestures. 1286 01:11:07,570 --> 01:11:14,050 If you're interested and you are working with JavaScript, this is a 1287 01:11:14,050 --> 01:11:18,820 JavaScript application that a developer named Robert Leary built. 1288 01:11:18,820 --> 01:11:21,920 What it does is it takes a lot of the complexity out of 1289 01:11:21,920 --> 01:11:24,270 recording and using movements. 1290 01:11:24,270 --> 01:11:27,660 >> So what he's done is he's basically created a gesture recorder. 1291 01:11:27,660 --> 01:11:30,410 You can type in the gesture, record it. 1292 01:11:30,410 --> 01:11:34,160 It spits out something that you can then pull into your application. 1293 01:11:34,160 --> 01:11:39,820 So instead of having to code up all the complex movements in 3D, you can 1294 01:11:39,820 --> 01:11:43,310 just take this, do the action, and save it for your application. 1295 01:11:43,310 --> 01:11:45,560 So that could be an interesting tool to help you get started. 1296 01:11:45,560 --> 01:11:49,150 1297 01:11:49,150 --> 01:11:50,900 >> I can go through these very quickly. 1298 01:11:50,900 --> 01:11:54,850 It's just a couple of videos that show some of the interesting applications. 1299 01:11:54,850 --> 01:11:58,850 Some of the stuff you might not see either in Airspace, but it's floating 1300 01:11:58,850 --> 01:12:00,190 around in the developer community. 1301 01:12:00,190 --> 01:12:03,860 Just some amazing work that people have been working on that show some 1302 01:12:03,860 --> 01:12:06,700 maybe some more unique applications possible. 1303 01:12:06,700 --> 01:12:10,920 1304 01:12:10,920 --> 01:12:16,300 >> So this is a system that's using basically head tracking on the camera 1305 01:12:16,300 --> 01:12:17,550 to give that depth perspective. 1306 01:12:17,550 --> 01:12:29,550 1307 01:12:29,550 --> 01:12:31,975 But you can see it's a pretty interesting visual trick. 1308 01:12:31,975 --> 01:12:42,610 1309 01:12:42,610 --> 01:12:45,910 So that's kind of an interesting thing that is possible with this type of 1310 01:12:45,910 --> 01:12:47,160 technology. 1311 01:12:47,160 --> 01:12:53,030 1312 01:12:53,030 --> 01:12:56,270 >> And then some of you may be familiar with the Oculus Rift. 1313 01:12:56,270 --> 01:12:59,000 This is just some experimental work that some of the developers have been 1314 01:12:59,000 --> 01:13:03,190 doing around combining Leap Motion with the Oculus Rift, so for the first 1315 01:13:03,190 --> 01:13:06,830 time you can be inside that virtual world. 1316 01:13:06,830 --> 01:13:11,730 So that's going to be an interesting approach for gaming coming up soon. 1317 01:13:11,730 --> 01:13:13,565 The Oculus Rift is a VR headset. 1318 01:13:13,565 --> 01:13:17,650 1319 01:13:17,650 --> 01:13:19,360 Poor guy-- 1320 01:13:19,360 --> 01:13:20,610 he really got a hard time. 1321 01:13:20,610 --> 01:13:25,850 1322 01:13:25,850 --> 01:13:30,050 >> This was an exhibit that was done using projection mapping 1323 01:13:30,050 --> 01:13:33,070 with the Leap Motion. 1324 01:13:33,070 --> 01:13:36,220 Just a really nice interactive environment where people 1325 01:13:36,220 --> 01:13:37,470 can just play around. 1326 01:13:37,470 --> 01:13:41,540 1327 01:13:41,540 --> 01:13:44,510 You can see there they created these 3D trees using projection mapping 1328 01:13:44,510 --> 01:13:45,760 techniques. 1329 01:13:45,760 --> 01:13:59,590 1330 01:13:59,590 --> 01:14:02,790 This was an interesting one done in Taipei with Heineken doing an 1331 01:14:02,790 --> 01:14:04,513 installation. 1332 01:14:04,513 --> 01:14:39,240 1333 01:14:39,240 --> 01:14:42,230 >> The whole "Iron Man" approach there. 1334 01:14:42,230 --> 01:14:45,690 But for the sake of time, I'll just quickly get to the end. 1335 01:14:45,690 --> 01:14:50,500 So if there's three things that would be nice to take away-- because I 1336 01:14:50,500 --> 01:14:52,800 realize there's a lot of information that we just covered. 1337 01:14:52,800 --> 01:14:57,350 And a lot of it you'll really need to spend a little bit of time to just dig 1338 01:14:57,350 --> 01:14:59,000 down into the resources that are available. 1339 01:14:59,000 --> 01:15:03,710 >> But I think the first thing is really if you are designing software, try and 1340 01:15:03,710 --> 01:15:09,470 design for the user, not for "Iron Man." So forget about I want to be 1341 01:15:09,470 --> 01:15:16,040 "Iron Man." I want to be on "Minority Report." But instead, 1342 01:15:16,040 --> 01:15:17,050 design for the user. 1343 01:15:17,050 --> 01:15:19,040 Design for the person that's going to be using your software. 1344 01:15:19,040 --> 01:15:22,340 >> So think about how can I make their experience better? 1345 01:15:22,340 --> 01:15:25,310 How can I make something that they're doing better? 1346 01:15:25,310 --> 01:15:28,120 And that's really going to be where the most powerful and the most 1347 01:15:28,120 --> 01:15:29,370 engaging software comes from. 1348 01:15:29,370 --> 01:15:33,710 1349 01:15:33,710 --> 01:15:37,740 >> And if you're familiar with UI/UX, you can almost throw the rules out the 1350 01:15:37,740 --> 01:15:39,740 window in some sense. 1351 01:15:39,740 --> 01:15:42,590 With this sort of technology, we're starting to rewrite the rules as we 1352 01:15:42,590 --> 01:15:46,590 go, and that just means that you've got a blank canvas. 1353 01:15:46,590 --> 01:15:48,650 So you guys are really starting at the right time. 1354 01:15:48,650 --> 01:15:52,010 If you're just getting into programming now, that means you get to 1355 01:15:52,010 --> 01:15:54,470 write the rule book as you learn, so that's an amazing 1356 01:15:54,470 --> 01:15:55,720 opportunity for this. 1357 01:15:55,720 --> 01:15:58,160 1358 01:15:58,160 --> 01:16:01,800 >> And I would just say again, be able to find a way to prototype quickly and 1359 01:16:01,800 --> 01:16:02,270 then build. 1360 01:16:02,270 --> 01:16:06,900 Don't necessarily waste all your time getting into the nuts and bolts 1361 01:16:06,900 --> 01:16:07,280 straight away. 1362 01:16:07,280 --> 01:16:09,150 See if you can get your ideas out. 1363 01:16:09,150 --> 01:16:11,720 >> It used to be that it was good to get them on paper. 1364 01:16:11,720 --> 01:16:13,500 And paper's still a great way to go. 1365 01:16:13,500 --> 01:16:16,910 But once you start to get these dynamic interfaces, you really start 1366 01:16:16,910 --> 01:16:21,330 to need some better tools to be able to get those dynamic ideas out. 1367 01:16:21,330 --> 01:16:25,750 And so if you can find some tools that help you to prototype, try and learn 1368 01:16:25,750 --> 01:16:28,030 them and use them, and you'll probably save yourself a 1369 01:16:28,030 --> 01:16:31,710 lot of time and hassle. 1370 01:16:31,710 --> 01:16:34,820 >> So a few resources. 1371 01:16:34,820 --> 01:16:37,620 Once you start getting into JavaScript, 1372 01:16:37,620 --> 01:16:41,690 js.leapmotion.com/tutorials, that'll be a great way to get started. 1373 01:16:41,690 --> 01:16:44,240 Examples again on js.leapmotion.com, you'll find some 1374 01:16:44,240 --> 01:16:46,140 great JavaScript examples. 1375 01:16:46,140 --> 01:16:51,860 >> Please feel free to engage in the forums, ask developers, ask us. 1376 01:16:51,860 --> 01:16:54,360 It's a great way to learn. 1377 01:16:54,360 --> 01:16:58,190 If you're interested in reading more content about what's out there, some 1378 01:16:58,190 --> 01:17:01,520 of the thought leadership in the space, labs.leapmotion.com's a great 1379 01:17:01,520 --> 01:17:02,560 blog for that. 1380 01:17:02,560 --> 01:17:05,600 We're putting out new content every week, it's a great space. 1381 01:17:05,600 --> 01:17:09,290 >> And if you want to connect with us, again, the forums. 1382 01:17:09,290 --> 01:17:12,032 You can email us at developers@leapmotion.com. 1383 01:17:12,032 --> 01:17:14,960 We're on @leapmotiondev on Twitter, so just tweet at us. 1384 01:17:14,960 --> 01:17:16,350 We're pretty active on there. 1385 01:17:16,350 --> 01:17:18,430 And our main handle, @leapmotion. 1386 01:17:18,430 --> 01:17:21,100 @leapmotiondev obviously is our developer Twitter handle. 1387 01:17:21,100 --> 01:17:23,700 1388 01:17:23,700 --> 01:17:26,050 >> So that's really about it. 1389 01:17:26,050 --> 01:17:28,450 If there's some time for questions, definitely happy 1390 01:17:28,450 --> 01:17:30,130 to answer any questions. 1391 01:17:30,130 --> 01:17:33,550 If you think of anything afterwards, please feel free to reach out to me 1392 01:17:33,550 --> 01:17:38,370 directly at kiwi@leapmotion.com, or tweet at me at @kiwi. 1393 01:17:38,370 --> 01:17:39,750 Cool. 1394 01:17:39,750 --> 01:17:40,930 Any questions? 1395 01:17:40,930 --> 01:17:45,230 >> AUDIENCE: In addition to developing apps that [INAUDIBLE], how feasible is 1396 01:17:45,230 --> 01:17:49,940 it to make [INAUDIBLE] level software so that you could scroll left, right, 1397 01:17:49,940 --> 01:17:51,320 up, down, and any [INAUDIBLE] 1398 01:17:51,320 --> 01:17:52,055 applications, [? for instance ?] 1399 01:17:52,055 --> 01:17:53,270 [INAUDIBLE]? 1400 01:17:53,270 --> 01:17:55,530 >> MICHAEL SUTHERLAND: So there are applications for that. 1401 01:17:55,530 --> 01:17:58,760 If you have a look on Airspace, you'll find a few different applications. 1402 01:17:58,760 --> 01:18:04,570 Some of the more popular ones are one called HandWAVE that allows you to do 1403 01:18:04,570 --> 01:18:06,070 some basic gesturing. 1404 01:18:06,070 --> 01:18:09,050 If you want to do that sort of stuff, there's really nothing that limits you 1405 01:18:09,050 --> 01:18:10,760 in the SDK to do it. 1406 01:18:10,760 --> 01:18:17,320 It's really a question of if you're building that OS level control, is it 1407 01:18:17,320 --> 01:18:21,810 actually making that experience of using the OS better? 1408 01:18:21,810 --> 01:18:25,450 >> Over time, we'll start to see the operating systems evolve to a state 1409 01:18:25,450 --> 01:18:28,400 that really is made for this type of input. 1410 01:18:28,400 --> 01:18:32,000 For right now, we are actually using operating systems that have been built 1411 01:18:32,000 --> 01:18:34,340 for 26-year-old technology. 1412 01:18:34,340 --> 01:18:37,240 If you have a look at the Mac interface, it really hasn't changed in 1413 01:18:37,240 --> 01:18:38,790 about 26 years. 1414 01:18:38,790 --> 01:18:43,020 So we're really battling a 26 year learning curve where people have got 1415 01:18:43,020 --> 01:18:47,170 so used to this type of interface that it's hard to see beyond that. 1416 01:18:47,170 --> 01:18:51,770 So if you can improve that experience, that's a definite win. 1417 01:18:51,770 --> 01:18:56,730 >> But if it's just doing a gesture for the sake of doing a gesture, what 1418 01:18:56,730 --> 01:19:01,360 you'll probably find is that users, they'll find it easier to just go back 1419 01:19:01,360 --> 01:19:04,440 to their keyboard and mouse because that's what they're comfortable with. 1420 01:19:04,440 --> 01:19:08,670 So that's why it's really important to think about who am I designing for? 1421 01:19:08,670 --> 01:19:13,670 Who is that end user, and how can I make their life a bit better? 1422 01:19:13,670 --> 01:19:22,350 >> But if we have the time, I can show you a quick one. 1423 01:19:22,350 --> 01:19:31,670 1424 01:19:31,670 --> 01:19:33,650 This is an interesting one that just came out. 1425 01:19:33,650 --> 01:19:39,660 1426 01:19:39,660 --> 01:19:42,890 It's a very simple cursor, but it's kind of cute because it has this 1427 01:19:42,890 --> 01:19:44,140 little hand-- 1428 01:19:44,140 --> 01:19:46,110 1429 01:19:46,110 --> 01:19:48,360 or it doesn't. 1430 01:19:48,360 --> 01:19:49,610 Are we in there? 1431 01:19:49,610 --> 01:19:54,050 1432 01:19:54,050 --> 01:19:55,300 Interesting. 1433 01:19:55,300 --> 01:19:59,650 1434 01:19:59,650 --> 01:20:00,710 >> Well, I won't show you that demo. 1435 01:20:00,710 --> 01:20:04,060 But that [? leapcursor.js ?] 1436 01:20:04,060 --> 01:20:08,370 is an interesting little example that basically lets you scroll up and down 1437 01:20:08,370 --> 01:20:12,840 fluidly in a web page and sort of clicks just by flexing your hand. 1438 01:20:12,840 --> 01:20:16,200 So it's supposed to be more of a laid back kind of scroll 1439 01:20:16,200 --> 01:20:17,910 up and down, flicks. 1440 01:20:17,910 --> 01:20:20,410 >> AUDIENCE: You mentioned the device itself is largely commodity hardware. 1441 01:20:20,410 --> 01:20:24,005 What is the underlying hardware technology that's actually doing the 1442 01:20:24,005 --> 01:20:25,950 detecting of objects? 1443 01:20:25,950 --> 01:20:28,740 >> MICHAEL SUTHERLAND: So the actual detection of the objects-- so 1444 01:20:28,740 --> 01:20:33,490 basically if you were to hack the USB on here, you're just going to get a 1445 01:20:33,490 --> 01:20:35,940 whole bunch of image data back. 1446 01:20:35,940 --> 01:20:37,730 People have already done it. 1447 01:20:37,730 --> 01:20:41,260 Where the magic is happening is basically once it gets into the 1448 01:20:41,260 --> 01:20:45,980 computer, it's essentially some proprietary algorithms that were 1449 01:20:45,980 --> 01:20:51,410 originally developed by our co-founder and have now just taken on a 1450 01:20:51,410 --> 01:20:52,300 life of their own. 1451 01:20:52,300 --> 01:20:55,830 >> AUDIENCE: Is it through infrared, or a magnetic [INAUDIBLE]? 1452 01:20:55,830 --> 01:20:57,600 >> MICHAEL SUTHERLAND: So it's just purely infrared. 1453 01:20:57,600 --> 01:21:00,900 So literally, it's kind of like having a little webcam sitting on your disk 1454 01:21:00,900 --> 01:21:03,920 and then a spotlight shining on your hand. 1455 01:21:03,920 --> 01:21:05,190 It's just all done in infrared. 1456 01:21:05,190 --> 01:21:08,380 So it's just some infrared optical sensors, and some infrared LEDs, and 1457 01:21:08,380 --> 01:21:11,680 there's really nothing too complex about it. 1458 01:21:11,680 --> 01:21:15,850 It's the way that we're able to take that data and then turn it into 1459 01:21:15,850 --> 01:21:17,425 something useful in 3D. 1460 01:21:17,425 --> 01:21:23,300 1461 01:21:23,300 --> 01:21:29,640 >> AUDIENCE: So it seems fairly easy for people [INAUDIBLE]. 1462 01:21:29,640 --> 01:21:36,786 1463 01:21:36,786 --> 01:21:43,555 But is there any way for a developer to maybe apply [INAUDIBLE] 1464 01:21:43,555 --> 01:21:48,475 for other types of objects-- maybe faces or other types of things that 1465 01:21:48,475 --> 01:21:51,145 the user might put forward? 1466 01:21:51,145 --> 01:21:56,130 >> MICHAEL SUTHERLAND: At the moment we do support a limited set of tools. 1467 01:21:56,130 --> 01:21:58,940 Unfortunately, with the way that we've structured the data, because we wanted 1468 01:21:58,940 --> 01:22:02,630 to do it in a simple fashion or one that makes the most sense for hands 1469 01:22:02,630 --> 01:22:08,230 and fingers, the API won't support face tracking or 1470 01:22:08,230 --> 01:22:10,160 generic object tracking. 1471 01:22:10,160 --> 01:22:11,750 That may come in the future. 1472 01:22:11,750 --> 01:22:15,940 But for right now, it's really fine tuned for hands and fingers and 1473 01:22:15,940 --> 01:22:17,190 specific tools. 1474 01:22:17,190 --> 01:22:25,060 1475 01:22:25,060 --> 01:22:25,960 Cool. 1476 01:22:25,960 --> 01:22:26,860 >> [? DAVE: Thank ?] you so much. 1477 01:22:26,860 --> 01:22:28,660 This is terrific. 1478 01:22:28,660 --> 01:22:31,960 >> [APPLAUSE] 1479 01:22:31,960 --> 01:22:33,210