Aukiネットワークとトークンエコノミーの基礎を学ぼう
Aukiネットワークで稼働する、独自ドメインを取得しよう
Aukiネットワークのホワイトペーパーの詳細をご覧ください。
Uniswap(DEX)で$AUKIを取引する
MEXC(CEX)で$AUKIを取引する
Aerodrome(DEX)で$AUKIを取引する
Aukiネットワークのネットワーク状況をライブで追跡する
See how the Auki network is empowering robot fleets.
See how the Auki network is enabling AI.
See how the Auki network is enabling XR experiences.
ConjureKitを使って、第一世代のソーシャル拡張現実体験を構築しましょう
Aukiトークンで最大10万ドルの開発者助成金を申請する
当社のSDKを使用して、ポーズメッシュ上でアプリケーションを構築する方法を学びましょう。
すべてのConjureKit SDKドキュメントとサポート
Cactus(カクタス)がどのように小売業の効率を改善できるかをご覧ください。
Gotu(ゴートゥ)がプロパティ管理者にどのように役立つかをご覧ください。
Gotuナビゲーションがどのようにイベントを盛り上げるかをご覧ください。
小売業のための空間AIプラットフォーム
イベントやプロパティ管理用の屋内ナビゲーション
ホームデコ&展示装飾アプリケーション
このローカルマルチプレイヤー共同AR体験で勝利を目指そう
Aukiと共に誰がポーズメッシュを構築をしているかご覧ください
私たちの哲学を深く知ってみてください
ディスコードで会話に参加しませんか
XでAukiコミュニティの最新情報をチェック
Stay up to date with the Auki community on X.
Aukiとポーズメッシュに関するよくある質問
プレスリリース、メディアキット、連絡先等
In this chapter we'll cover how to get started with using and visualizing Ur for hand tracking.
Install the Ur package and import it to ^ConjureKitManager^.
ConjureKitManager^
using Auki.Ur;
Also import ^ARFoundation^ to be able to use the ^ARRaycastManager^.
ARFoundation^
ARRaycastManager^
using UnityEngine.XR.ARFoundation;
Create a private ^HandTracker^ variable, as well as serializable ^ARSession^ and ^ARRaycastManager^ variables.
HandTracker^
ARSession
private HandTracker _handTracker; [SerializeField] private ARSession arSession; [SerializeField] private ARRaycastManager arRaycastManager;
Attach the ^ARRaycastManager^ component to AR Session Origin GameObject. Then drag the ^ARSession^ and the ^ARRaycastManager^ components to coressponding fields on the ^ConjureKitManager^ GameObject.
ARSession^
Get the ^HandTracker^ instance and initialize the AR system in ^ConjureKitManager^'s ^Start()^ function.
Start()^
_handTracker = HandTracker.GetInstance(); _handTracker.SetARSystem(arSession, arCamera, arRaycastManager);
Start the ^HandTracker^ by calling
_handTracker.Start();
Call ^_handTracker.Update()^ every frame to continuously track the hand while moving.
_handTracker.Update()^
private void Update() { _handTracker.Update(); }
Now we want to position a sphere with a collider on our hand's index fingertip so it can interact with the cube.
To begin, create a 3d sphere, rename it to FingertipLandmark, and scale it down to 0.3. On the collider component, tick the ^isTrigger^ checkbox.
isTrigger^
Create a new material, change its color to something more noticeable, and drag it to the sphere mesh renderer.
Add a new tag in Project Settings -> Tags and Layers named hand or any other name you choose and add this tag to the FingertipLandmark we just created.
hand
Create a ^Renderer^ variable for the FingertipLandmark.
Renderer^
[SerializeField] private Renderer Fingertip Landmark;
Populate it with the sphere we just created. And in Start function, set the fingertip landmark as a child of our camera transform.
fingertipLandmark.transform.SetParent(arCamera.transform);
To get triggers from other colliders, the cube should have a ^Rigidbody^ component. Add it and tick the ^Is Kinematic^ checkbox to make sure the cube doesn't fall.
Rigidbody^
Is Kinematic^
Create a new C# script called ^TouchableByHand.cs^ that will handle trigger events on the cube. If the cube is triggered with an object tagged with hand its color will change to a random color. If the trigger exits the cube, it will return to white.
public class TouchableByHand : MonoBehaviour { private void OnTriggerEnter(Collider other) { if (other.tag == "hand") { gameObject.GetComponent<Renderer>().material.color = Random.ColorHSV(); } } private void OnTriggerExit(Collider other) { if (other.tag == "hand") { gameObject.GetComponent<Renderer>().material.color = Color.white; } } }
Add this script to the cube prefab.
To get our landmark positions in real-time, we will use the Ur callback - ^OnUpdate^ that is invoked when a new hand pose is received. This callback will pass 4 data types:
The landmark and translation arrays contain consecutive floats representing the x, y & z-components of a 3D vector.
Once we get the landmarks and translations, we can place the fingertip landmark on landmark 8, the tip of the index finger (see the Ur documentation for a diagram of all hand landmarks). If the hand tracker detects a hand, we should see the fingertip landmark. If not, meaning our hand is not in camera sight, we can disable the fingertip landmark renderer.
_handTracker.OnUpdate += (landmarks, translations, isRightHand, score) => { if (score[0] > 0) { var handPosition = new Vector3( translations[0], translations[1], translations[2]); var pointerLandmarkIndex = 8 * 3; // Index fingertip var pointerLandMarkPosition = new Vector3( landmarks[pointerLandmarkIndex + 0], landmarks[pointerLandmarkIndex + 1], landmarks[pointerLandmarkIndex + 2]); fingertipLandmark.enabled = true; fingertipLandmark.transform.localPosition = handPosition + pointerLandMarkPosition; } else { fingertipLandmark.enabled = false; } };
The Ur package allows us to visualize the hand landmarks in two simple steps.
Start by creating a private boolean.
landmarksVisualizeBool = true;
Then create a toggle method that uses the hand tracker methods ^ShowHandMesh^ and ^HideHandMesh^.
ShowHandMesh^
HideHandMesh^
public void ToggleHandLandmarks() { landmarksVisualizeBool = !landmarksVisualizeBool; if (landmarksVisualizeBool) { _handTracker.ShowHandMesh(); } else { _handTracker.HideHandMesh(); } }
Now it can be toggled using a UI toggle or any other method you choose.
プロジェクトをスタートさせるためにAUKIトークンの助成金を申請し、Auki Labsチームと直接連携して、あなたのクリエイションをマーケットへ。選ばれた申請者は最大10万米ドル相当のAUKIトークンの助成を受け、アウキラボチームによる開発、マーケティング支援を受けることができます。