{"id":4038,"date":"2015-11-04T01:37:38","date_gmt":"2015-11-03T22:37:38","guid":{"rendered":"http:\/\/unitycoder.com\/blog\/?p=4038"},"modified":"2015-11-04T01:41:07","modified_gmt":"2015-11-03T22:41:07","slug":"leap-motion-get-finger-position-direction","status":"publish","type":"post","link":"https:\/\/unitycoder.com\/blog\/2015\/11\/04\/leap-motion-get-finger-position-direction\/","title":{"rendered":"Leap Motion: Get Finger Position &#038; Direction"},"content":{"rendered":"<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"4039\" data-permalink=\"https:\/\/unitycoder.com\/blog\/2015\/11\/04\/leap-motion-get-finger-position-direction\/leap_motion_unity_get_finger_position_direction_scene_1\/\" data-orig-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2015\/11\/leap_motion_unity_get_finger_position_direction_scene_1.jpg?fit=509%2C426&amp;ssl=1\" data-orig-size=\"509,426\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"leap_motion_unity_get_finger_position_direction_scene_1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2015\/11\/leap_motion_unity_get_finger_position_direction_scene_1.jpg?fit=509%2C426&amp;ssl=1\" class=\"alignnone size-full wp-image-4039\" src=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2015\/11\/leap_motion_unity_get_finger_position_direction_scene_1.jpg?resize=509%2C426\" alt=\"leap_motion_unity_get_finger_position_direction_scene_1\" width=\"509\" height=\"426\" srcset=\"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2015\/11\/leap_motion_unity_get_finger_position_direction_scene_1.jpg?w=509&amp;ssl=1 509w, https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2015\/11\/leap_motion_unity_get_finger_position_direction_scene_1.jpg?resize=300%2C251&amp;ssl=1 300w\" sizes=\"auto, (max-width: 509px) 100vw, 509px\" \/><\/p>\n<p>Took a while to find info on how to simply get the Leap hand finger positions in unity,<br \/>\nhere&#8217;s cleaned up script to draw rays from fingertips to their pointing direction.<\/p>\n<p>&nbsp;<\/p>\n<style>.gist table { margin-bottom: 0; }<\/style>\n<div style=\"tab-size: 8\" id=\"gist27706620\" class=\"gist\">\n<div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n<div class=\"gist-data\">\n<div class=\"js-gist-file-update-container js-task-list-container\">\n<div id=\"file-getleapfingers-cs\" class=\"file my-2\">\n<div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-c  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"GetLeapFingers.cs content, created by unitycoder on 10:33PM on November 03, 2015.\"\n    ><\/p>\n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n<p>  <template class=\"js-file-alert-template\"><\/p>\n<div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg><br \/>\n    <span><br \/>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.<br \/>\n      <a class=\"Link--inTextBlock\" href=\"https:\/\/github.co\/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a><br \/>\n    <\/span><\/p>\n<div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters<br \/>\n<\/a>\n<\/div>\n<\/div>\n<p><\/template><br \/>\n<template class=\"js-line-alert-template\"><br \/>\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\"><br \/>\n    <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg><br \/>\n<\/span><\/template><\/p>\n<table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"GetLeapFingers.cs\">\n<tr>\n<td id=\"file-getleapfingers-cs-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n<td id=\"file-getleapfingers-cs-LC1\" class=\"blob-code blob-code-inner js-file-line\">\/******************************************************************************\\<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n<td id=\"file-getleapfingers-cs-LC2\" class=\"blob-code blob-code-inner js-file-line\">* Copyright (C) Leap Motion, Inc. 2011-2014.                                   *<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n<td id=\"file-getleapfingers-cs-LC3\" class=\"blob-code blob-code-inner js-file-line\">* Leap Motion proprietary. Licensed under Apache 2.0                           *<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n<td id=\"file-getleapfingers-cs-LC4\" class=\"blob-code blob-code-inner js-file-line\">* Available at http:\/\/www.apache.org\/licenses\/LICENSE-2.0.html                 *<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n<td id=\"file-getleapfingers-cs-LC5\" class=\"blob-code blob-code-inner js-file-line\">\\******************************************************************************\/<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n<td id=\"file-getleapfingers-cs-LC6\" class=\"blob-code blob-code-inner js-file-line\">\/\/ Original script: &quot;MagneticPinch.cs&quot; modified by unitycoder.com to just get the finger position &amp; directions<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n<td id=\"file-getleapfingers-cs-LC7\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n<td id=\"file-getleapfingers-cs-LC8\" class=\"blob-code blob-code-inner js-file-line\">using UnityEngine;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n<td id=\"file-getleapfingers-cs-LC9\" class=\"blob-code blob-code-inner js-file-line\">using System.Collections;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n<td id=\"file-getleapfingers-cs-LC10\" class=\"blob-code blob-code-inner js-file-line\">using Leap;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n<td id=\"file-getleapfingers-cs-LC11\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n<td id=\"file-getleapfingers-cs-LC12\" class=\"blob-code blob-code-inner js-file-line\">public class GetLeapFingers : MonoBehaviour <\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n<td id=\"file-getleapfingers-cs-LC13\" class=\"blob-code blob-code-inner js-file-line\">{<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n<td id=\"file-getleapfingers-cs-LC14\" class=\"blob-code blob-code-inner js-file-line\">\tHandModel hand_model;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n<td id=\"file-getleapfingers-cs-LC15\" class=\"blob-code blob-code-inner js-file-line\">\tHand leap_hand;<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L16\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"16\"><\/td>\n<td id=\"file-getleapfingers-cs-LC16\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L17\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"17\"><\/td>\n<td id=\"file-getleapfingers-cs-LC17\" class=\"blob-code blob-code-inner js-file-line\">\tvoid Start() <\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L18\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"18\"><\/td>\n<td id=\"file-getleapfingers-cs-LC18\" class=\"blob-code blob-code-inner js-file-line\">\t{<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L19\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"19\"><\/td>\n<td id=\"file-getleapfingers-cs-LC19\" class=\"blob-code blob-code-inner js-file-line\">\t\thand_model = GetComponent&lt;HandModel&gt;();<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L20\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"20\"><\/td>\n<td id=\"file-getleapfingers-cs-LC20\" class=\"blob-code blob-code-inner js-file-line\">\t\tleap_hand = hand_model.GetLeapHand();<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L21\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"21\"><\/td>\n<td id=\"file-getleapfingers-cs-LC21\" class=\"blob-code blob-code-inner js-file-line\">\t\tif (leap_hand == null) Debug.LogError(&quot;No leap_hand founded&quot;);<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L22\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"22\"><\/td>\n<td id=\"file-getleapfingers-cs-LC22\" class=\"blob-code blob-code-inner js-file-line\">\t}<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L23\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"23\"><\/td>\n<td id=\"file-getleapfingers-cs-LC23\" class=\"blob-code blob-code-inner js-file-line\">\n<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L24\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"24\"><\/td>\n<td id=\"file-getleapfingers-cs-LC24\" class=\"blob-code blob-code-inner js-file-line\">\tvoid Update() <\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L25\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"25\"><\/td>\n<td id=\"file-getleapfingers-cs-LC25\" class=\"blob-code blob-code-inner js-file-line\">\t{<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L26\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"26\"><\/td>\n<td id=\"file-getleapfingers-cs-LC26\" class=\"blob-code blob-code-inner js-file-line\">\t\tfor (int i = 0; i &lt; HandModel.NUM_FINGERS;i++)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L27\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"27\"><\/td>\n<td id=\"file-getleapfingers-cs-LC27\" class=\"blob-code blob-code-inner js-file-line\">\t\t{<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L28\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"28\"><\/td>\n<td id=\"file-getleapfingers-cs-LC28\" class=\"blob-code blob-code-inner js-file-line\">\t\t\tFingerModel finger = hand_model.fingers[i];<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L29\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"29\"><\/td>\n<td id=\"file-getleapfingers-cs-LC29\" class=\"blob-code blob-code-inner js-file-line\">\t\t\t\/\/ draw ray from finger tips (enable Gizmos in Game window to see)<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L30\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"30\"><\/td>\n<td id=\"file-getleapfingers-cs-LC30\" class=\"blob-code blob-code-inner js-file-line\">\t\t\tDebug.DrawRay(finger.GetTipPosition(), finger.GetRay().direction, Color.red); <\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L31\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"31\"><\/td>\n<td id=\"file-getleapfingers-cs-LC31\" class=\"blob-code blob-code-inner js-file-line\">\t\t}<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L32\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"32\"><\/td>\n<td id=\"file-getleapfingers-cs-LC32\" class=\"blob-code blob-code-inner js-file-line\">\t}<\/td>\n<\/tr>\n<tr>\n<td id=\"file-getleapfingers-cs-L33\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"33\"><\/td>\n<td id=\"file-getleapfingers-cs-LC33\" class=\"blob-code blob-code-inner js-file-line\">}<\/td>\n<\/tr>\n<\/table>\n<\/div><\/div>\n<\/p><\/div>\n<\/div><\/div>\n<div class=\"gist-meta\">\n        <a href=\"https:\/\/gist.github.com\/unitycoder\/575878e3b89b39378af8\/raw\/5d1a2e8975aa84de92cda8786fd42b4dcb333931\/GetLeapFingers.cs\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a><br \/>\n        <a href=\"https:\/\/gist.github.com\/unitycoder\/575878e3b89b39378af8#file-getleapfingers-cs\" class=\"Link--inTextBlock\"><br \/>\n          GetLeapFingers.cs<br \/>\n        <\/a><br \/>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https:\/\/github.com\">GitHub<\/a>\n      <\/div>\n<\/p><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Took a while to find info on how to simply get the Leap hand finger positions in unity, here&#8217;s cleaned up script to draw rays from fingertips to their pointing direction. &nbsp; This file contains hidden or bidirectional Unicode text that may be interpreted or [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4039,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[148,3],"tags":[785,209,782,783,784,189,171],"class_list":["post-4038","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-help","category-unity3d","tag-direction","tag-finger","tag-leap","tag-motion","tag-position","tag-script","tag-unity"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/unitycoder.com\/blog\/wp-content\/uploads\/2015\/11\/leap_motion_unity_get_finger_position_direction_scene_1.jpg?fit=509%2C426&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p1KTaT-138","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/4038","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/comments?post=4038"}],"version-history":[{"count":2,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/4038\/revisions"}],"predecessor-version":[{"id":4041,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/posts\/4038\/revisions\/4041"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/media\/4039"}],"wp:attachment":[{"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/media?parent=4038"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/categories?post=4038"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unitycoder.com\/blog\/wp-json\/wp\/v2\/tags?post=4038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}