xrtk / com.xrtk.lumin Goto Github PK
View Code? Open in Web Editor NEWThe Lumin platform components for the XRTK
Home Page: https://github.com/XRTK/XRTK-Core
License: MIT License
The Lumin platform components for the XRTK
Home Page: https://github.com/XRTK/XRTK-Core
License: MIT License
Lumin platform components should include Spatial Observers and work similarly to the WMR components.
Implement eye tracking features
When installing the Lumin package (rather than submoduling) Unity will not load the dll's copied in from the SDK, as they do not have accompanying *.meta files.
Add Lumin via package manager
Make sure the dll shim copy happens (ie, that https://github.com/XRTK/Lumin/blob/dbd3a908bf250af59b7d4d275457ccc09e309251/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/LuminRemote.cs#L80) executes).
See the errors in the console:
Asset Packages/com.xrtk.lumin/Runtime/Plugins/Editor/x64/TouchpadGestureStateMixer.dll has no meta file, but it's in an immutable folder. The asset will be ignored.
? I'm not sure actually, hence this bug report. Definitely no errors though.
Upgrading older XRTK system to latest ML & XRTK packages. Including moving from submodules to package install.
The copy happens successfully (after a wee fix on LabDriver - PR incoming). My guess is that in the developer environment, Unity creates the necessary meta files and this issue is only visible on installed systems.
Perhaps Lumen package could include meta files, or perhaps the copy could happen to the assets folder? What do you think?
After importing package it seems that the plugins folder is somehow malformed. Gotta look into this and make sure everythings all good to go.
Asset Packages/com.xrtk.lumin/Runtime/Plugins has no meta file, but it's in an immutable folder. The asset will be ignored.
Asset Packages/com.xrtk.lumin/Runtime/Plugins/Editor has no meta file, but it's in an immutable folder. The asset will be ignored.
Asset Packages/com.xrtk.lumin/Runtime/Plugins/Editor/x64 has no meta file, but it's in an immutable folder. The asset will be ignored.
'labdriver' is not recognized as an internal or external command,
operable program or batch file.
Failed to copy lumin remote support libraries!
The type or namespace name 'MeshInfo' could not be found
The offending line is:
https://github.com/XRTK/Lumin/blob/dbd3a908bf250af59b7d4d275457ccc09e309251/XRTK.Lumin/Packages/com.xrtk.lumin/Runtime/Providers/SpatialAwarenessSystem/SpatialObservers/LuminSpatialMeshObserver.cs#L152
Create project with 2019.3.
Compile
See above error
Unity Version 2019.3.9f0
XRTK Version 0.2.0
I think MeshInfo got removed in 2019.2. However, I'm also pretty sure that the function throwing the error in XRTK is unused: the lines pointing at it have been commented out.
Hand tracking is missing some joints
Add the upm package.json
and required depenancies.
com.xrtk.core 0.1.4
MLKit doesn't have an OSS friendly license, and we don't want to have to rely on their package for some features. Best to make our own.
The initial support utilizes the MLKit as a prerequisite but we should strive to break that dependency.
This project needs the CI/CD pipelines setup
/azp run
after a quick review to ensure no bad code is run.The default controller setup for some reason isn't picking up the home button presses.
I think it's because the Magic Leap Controller doesn't actually report long presses, but taps only.
More research needed.
Steps to reproduce the behavior:
Home button should report the same status as any other button/key
Latest changes to implement native spatial meshing is not fully completed.
Currently the package doesn't support 2019.2 Unity Editor and the 0.22 .unitypackage
from the Magic Leap Package Manager
Steps to reproduce the behavior:
The Lumin controller has some pretty cool controller LED options you can set.
When selecting a profile asset whose profile definition depends on a specific build target, e.g. Lumin, Unity will throw errors if the profile's custom inspector tries to access fields that are not available.
Bascially as soon as you do serializedObject.GetProperty("myField")
and myField
does not exist in the currently compiled code the error will happen.
Profile definition:
[CreateAssetMenu(menuName = "Mixed Reality Toolkit/Input System/Controller Data Providers/Hands/Lumin Hand Controller Data Provider Profile", fileName = "LuminHandControllerDataProviderProfile", order = (int)CreateProfileMenuItemIndices.Input)]
public class LuminHandControllerDataProviderProfile : BaseMixedRealityControllerDataProviderProfile
{
#if PLATFORM_LUMIN
[SerializeField]
[Tooltip("Configured level for keypoints filtering of keypoints and hand centers.")]
private MLKeyPointFilterLevel keyPointFilterLevel = MLKeyPointFilterLevel.ExtraSmoothed;
/// <summary>
/// Configured level for keypoints filtering of keypoints and hand centers.
/// </summary>
public MLKeyPointFilterLevel KeyPointFilterLevel => keyPointFilterLevel;
[SerializeField]
[Tooltip("Configured level of filtering for static poses.")]
private MLPoseFilterLevel poseFilterLevel = MLPoseFilterLevel.ExtraRobust;
/// <summary>
/// Configured level of filtering for static poses.
/// </summary>
public MLPoseFilterLevel PoseFilterLevel => poseFilterLevel;
#endif
}
Inspector definition:
[CustomEditor(typeof(LuminHandControllerDataProviderProfile))]
public class LuminHandControllerDataProviderProfileInspector : BaseMixedRealityProfileInspector
{
private SerializedProperty handTrackingEnabled;
private SerializedProperty keyPointFilterLevel;
private SerializedProperty poseFilterLevel;
protected override void OnEnable()
{
base.OnEnable();
keyPointFilterLevel = serializedObject.FindProperty("keyPointFilterLevel");
poseFilterLevel = serializedObject.FindProperty("poseFilterLevel");
}
public override void OnInspectorGUI()
{
MixedRealityInspectorUtility.RenderMixedRealityToolkitLogo();
if (thisProfile.ParentProfile != null &&
GUILayout.Button("Back to Configuration Profile"))
{
Selection.activeObject = thisProfile.ParentProfile;
}
EditorGUILayout.Space();
thisProfile.CheckProfileLock();
serializedObject.Update();
EditorGUILayout.BeginVertical("Label");
EditorGUILayout.PropertyField(keyPointFilterLevel);
EditorGUILayout.PropertyField(poseFilterLevel);
EditorGUILayout.EndVertical();
serializedObject.ApplyModifiedProperties();
}
When now selecting an Asset for the type LuminHandControllerDataProviderProfile
errors will get thrown and the custom inspector will not render because the types MLPoseFilterLevel
and MLKeyPointFilterLevel
do not exist when not targeting Lumin.
I get a hint that I need to switch the build target to Lumin to edit the profile.
The inspector fails and I get errors.
The controller should support haptic feedback.
Should Lumin require remote to be running for a debug session?
I want to debut my app, but I don't particularly care if Lumin remote is running (I'm upgrading some internal systems, right now it just needs to put pixels on the screen and I'm happy).
I'm lazy, so I just commented out the line requiring LR: https://github.com/XRTK/Lumin/blob/dbd3a908bf250af59b7d4d275457ccc09e309251/XRTK.Lumin/Packages/com.xrtk.lumin/Editor/LuminRemote.cs#L135
Everything seems to work, but I'm not a fan of disabling something just for the fun of it. What do you think? This wasn't here in the version I'm upgrading from (AFAIK), so it's a new behavior.
Controller should support visualization
When a new user configures the xrtk for Lumin, the Main Camera requires a TrackedPoseDriver
with the following settings:
Without these settings then the camera doesn't work correctly.
A TrackedPoseDriver
should be attached to the main camera for the Lumin platform runtimes when the xrtk is configured.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.