Attaching items to the hands - mrtk

We want to attach some UI and other items to the back of the articulated hand. Just trying to figure out how to do that. I have found how to turn on and off the hand visualizer through MixedRealityHandTrackingProfile but I'm trying to find the Unity Game Object I can parent the items to or at least a way to access the hand transform. Thanks for any pointers!

Step 1: Select the object in the scene hierarchy that you want to follow your hand. Click “add component” in the inspector panel.
Step 2: Type in “RadialView” in the search box and you should see the RadialView solver appear. Click on it. You will see a few additional required scripts appear automatically.
Note: it adds the solver handler script. Along with that, the Radial View script will show up as well just like the orbital script.
Step 3: Change the radial view to not follow the head but follow the left hand. Select the dropdown menu next to the “tracked object to reference” option. Then select “hand joint left” from the menu.
Step 4: As you may see, once you select the hand joint you can choose which part of the hand you want the cube to follow. There are a lot of options to use! For this example, we are going to use the wrist. So next to the option “tracked hand joint” click the dropdown menu and select wrist.
Note: Not all joints, in this current version of the HoloLens2 can be tracked. This is a bug that may be fixed in the near future.
Now if you press play and try it out in your scene, you will see that the object does follow the wrist, but the object may lag a little bit behind and looks like it’s struggling to keep up. Now to fix this and make it so that the object is with the wrist at all time we must change a few things. Set the maximum and minimum distances to 0 so that the cube will not have any distance between it and the user’s wrist. Once set, the cube will be perfectly aligned with the wrist.

In the latest mrtk_development branch as of PR 4532 you can also used the "Hand Constraint" component. You can see an example of how to use it at MixedRealityToolkit.Examples/Experimental/HandTracking/Scenes/HandBasedMenuExample.unity.
Have a look at Assets/MixedRealityToolkit.SDK/Experimental/Features/Utilities/Solvers/HandConstraint.cs for the implementation.
You can add this behavior by adding a "Hand Constraint" solver to the object that you wish to follow the hand.
The Hand Constraint component will also be available in the upcoming MRTK V2.0.0 RC2 release.

Related

Alloy: different instances for integer

I'm new to alloy and i'm doing a little project. In the project i have some instances with different attributes that, with magic layout, i can put in the instance when showing the model. Is there a way to do the same thing with integers? I attach an image that i hope can describe better my issue, in the image you can see that the attributes occupied and type are in the socket, but the socketID no. So, i also wanted to put the integers (for example) in the socket to have a show without some useless instances/relations. I tried with the same approach used for the other attributes but is not working. I think it's because is an integer and not a custom sig.
I hope that the question is clear and thanks a lot in advance.
Not sure it's due to Magical Layout, unless they have implemented a special treatment for ints.
Anyway, the solution is to customize the "theme" yourself:
open the theme customization panel (e.g. by clicking the Theme icon).
Now two trees are displayed on the left, representing (top) the signature hierarchy and (bottom) all relations in your model: click there on socketId and then, at the top of the left panel, tick "Show as attribute" and untick "Show as arc", then apply your new theme by clicking Apply (top right), then click Close to close theme customization.

Visio 2010: Prevent Co-Linear Connector Routes

I have recently picked up Microsoft Office Visio 2010 in the interest of drawing out the execution flow of a software application I am planning. So far I have enjoyed the program, and it has helped me significantly to figure out exactly what interactions and events I will need for the program even before I begin coding it. However, there is one gripe I have with the software, as I add new elements to the diagram, Visio tends to try to combine routes as often as possible. This can make it difficult at times to see exactly where some of the routes are pointing. For example:
Example 1: Example 2:
In Example 1, You can see that there are three routes, each with a different label. Originally, these labels would overlap each other as well. I figured out this can be turned off in the "Page Layout" dialog, so it's a little better than it was, but the beginnings and ends of the route are still combined. Here it's not really an issue, but it could be as shown in Example 2.
What's pointing where in Example 2? The line coming in from the left is pointing at the diamond on the bottom, and then there are three routes coming out the top of the diamond. This is the problem I'm trying to solve. It's not shown in these examples, but putting labels on those three routes in Example 2 puts the labels all on that long stretch of vertical, which makes it impossible to tell which label corresponds to which line.
Is there a way to prevent the lines from overlapping like this? I have fully explored the "Page Setup" dialog, but none of the options available there seem to allow this behavior. The only solution I was able to find online was to draw all the routes manually, but this would mean I cannot use the "Re-Layout Page" feature, and it could be rather time-intensive if Visio decides to do it often.
Update: While messing around with some more settings trying to find a solution to this, I came up with a great example showing just how bad this can get. Now, this is an extreme example, and if your diagrams look like this you're probably doing it wrong, but it clearly shows that it can quickly become impossible to tell what the source and destination for each line is.
After many more hours of searching for ways to make routes either not overlap or play nice, the only solution I've found that keeps being recommended is to re-arrange the routes manually. Changing things like snap settings and page layout options do help to some degree, but not completely. Hopefully the next incarnation of Visio will handle this better. Oh well, it's still a great tool and has definitely helped me visualize execution flow.
This may not be the solution for you but in my network diagrams, I can perform the following.
In Visio 2010 click Design tab, now click Connectors, and select curved.
It separates the lines but again it might not look right for a flow chart.
I'm having the exact same issue and have not found a satisfactory solution.
I've tried all the permutations of snap/glue settings, layout behaviour and connector behaviour with no success.
The best solution I've found so far is to manually add multiple connector points to your source and destination and use those to connect your shapes. Make sure 'no overlap' is specified for your connectors. You can then use the automatic align/layout tools and get something reasonably unambiguous.
You do lose the benefits of dynamic glue but you can mitigate that by deleting connection points (ie from one side of a shape) to force Visio to use your custom connections. You'll also have to disable 'glue to geometry' in the snap/glue options.
http://office.microsoft.com/en-au/visio-help/add-move-or-delete-connection-points-HP001231166.aspx
Please update this question if you find a better solution.
Huh. Most of the time, I have trouble getting my lines to overlap nicely :).
You might try changing some of the Snap & Glue settings:
On the View tab, in the Visual Aids group, click the dialog box launcher (the little two-headed arrow). In the Snap & Glue dialog box, I'd try changing the Snap to setting for Shape geometry.
I cna't tell if you're talking about doing this from code or not, but I've found the Design -> Layout -> Re-Layout option takes care of this.
Similarly to Alex I've found adding my own glue points to shapes and removing the default ones helps enormously. So does making sure one has appropriate settings under Page Setup | Layout and Routing:
Style: Right Angle
Separate: All lines
Overlap: No Lines
Appearance: Straight
Spacing: I found all these distances especially important
Being aware of the setting for each connector under Developer | Behaviour | Connector | Reroute, how that setting changes from "Freely" to "On Crossover" when a connector is rerouted manually is also important. Sometimes I find it necessary to set a particular connector to "Never". Also useful is the ability to select all the connectors (and NOT the shapes) with Select by Type when forcing Visio to reroute.
I'm doing this with Visio 2013's ERD diagrams and I've noticed that whilst I have defined my own connection points now on each entity it is usually best not to actually select them but let Visio dynamically select the "best" one - then if I re-arrange the entities the re-routing still works. One curiosity I've noticed is that Visio's connectors do not align with my connection points at the bottom of each entity but (since I deleted the OotB connection point at the bottom of the entity at any rate) is spacing the connectors appropriately. Along the top and down the sides the connectors are dynamically attached in the same places as my connection points.
I still sometimes have problems with connectors being placed under/inside/through entities (so a connector running through/inside/under a shape) [with ERD's especially with self-referential relationships] despite Developer | Behavior settings on both the connector and the shape seemingly to prevent that. Those are often the ones I have to route manually and set to re-route "Never".
[Visio 2016]
Not a complete solution, just an aid to manual re-routing, ...
Add "Connection Point" to the two shapes. Each connection line will then have its own route, ... though some overlapping might still occur.
Being graphically challenged, here is how I accomplish it, ...
Select the one of shapes (I have to also zoom in to get better placement control).
Select the X in the [Home] menu bar.
The selected shape will have small bumps for any shape connection points.
Press and hold the Ctrl key and hover on the boarder of the shape, the mouse cursor will change to show where a point would be added.
Ctrl-Click to add a connection point. Here I added 10 or so points.
Add additional connection points to the other shape and move the connectors to use unique points on the two shapes. Your connectors will be (more or less) separated.

On Visual C++, How to make a simple paint program?

I want to make a simple paint program on visual c++ which allows the user to draw a path of a series of straight lines which follow on from each other. Once the user is done this, they should double click to stop drawing. It is important that I record the co-ordinates of the beginning and end points of each line of the path because I want to use this information to find the magnitude and direction of each line using simple math. Please can someone give me somewhere to start and any other guidance.
You should start with a tutorial in: MFC.
Learn the basics: Document/View architecture and
how painting is done (GDI and device contexts).
Basically, you should:
1. create an MFC application (SDI - single document interface),
2. Handle the OnLButtonDown (WM_LBUTTONDOWN), OnMouseMove (WM_MOVE), OnLButtonUp (WM_LBUTTONUP).
3. Maintain an dynamic array/List (TypedPtrList) of the points
4. handle the double-click event for detecting completion.
You should use the Invalidate() function on (after) each click, in order to see the changes
on the screen.
That's just a little bit of information to get you started
You'll want:
a class or struct to represent a point (if you make it a class, it could have computation methods that would, for example, calculate the distance and direction to another point)
a member variable: an instance of a container class (list, array, etc) to hold your points
a member variable: a boolean flag to represent whether you are drawing or not (starting with not)
and you'll need to handle:
the mouse click event to instantiate a point and add it to your container
the mouse move event to draw a line from the last point to the current mouse position if the drawing flag is true
the mouse double-click event to add the double-click location to your container of points and turn off the drawing flag
Yaron's strategy doesn't draw lines until 2 points are clicked. Mine uses "rubberbanding" to anchor the first end of the line then let the second end follow your cursor until you click to anchor it down. Use whichever one you like better.
if i were you i would use Qt.
Qt widgets are great for user interface. you should check qt examples...
if you want to make an image processing behind, you can use imagemagick library.
this library is great for any image manipulation.

Group box with title as Check box

I am using Visual Studio 6.0 (VC++ with MFC) in Windows XP platform. I am trying to create a group box with the title of the group box as a check box. My intention is this: If the check box is enabled, the controls inside the group box should be enabled; or else disabled.
Is this possible to accomplish? If yes, please give me some directions.
Thanks.
There are a few things you can try, depending on how true you want to stay to your idea and how much work you are prepared to put into the effort:
Simple method
Use a normal group box, and then inside this make the first item be the checkbox. This is simple to accomplish, but you lose the goal of having the checkbox as the title.
Funky drawing method 1
Use a normal group box, then in the space over where you know the title is to go, place your checkbox. You will have to perform some tricky calculation to get it to fit in nicely and draw well without flicker.
Funky drawing method 2
Use some form of superclass or subclass/subclass on the group box. You can override the WM_PAINT handler to draw in only the frame for the group box. Place a normal checkbox in the place where you know the title is to go. This should work better because you will have more control over the drawing, but it is likely to be tricky to get right. In my experience, subclassing is lower risk to implement than superclassing.
Are you using the Dialog editor? If so, put down the group box. Next, on top of it, put a check box over the line of the group box. Edit the resource to set the Z order, or do it in code. You want the checkbox to be on top of the group box. Add a handler for the checkbox and enable / disable controls depending on the check box state.
I wrote one called CGroupCheck a few years back and it's available from CodeProject: http://www.codeproject.com/KB/buttons/groupcheck123.aspx

Building Nav Bars with rollovers in DreamWeaver CS3

I'm working with Dreamweaver CS3. The question here is what part of the code (listed below) do I need to replicate to have my secondary nav bar utilize the on-click action?
FYI...DW has two menu options or auto insert items...one for roll over images and one for "navbar". DW will only allow you to use the 'navbar' item once per page
the nav bar option builds all the rollover actions for you (listed below)
the "rollover" option ONLY builds normal and over, but no click
I guess I really have two questions...the first is what part of the code do I need to insert manually, the second is what does the "MM_nbGroup" code mean?
"../photogallery.html" target="_top" onClick="MM_nbGroup('down','group1','photoMainNav','../images/buttons/photography_down.gif',1)"
onMouseOver="MM_nbGroup('over','photoMainNav','../images/buttons/photography_over.gif','../images/buttons/photography_over.gif',1)" onMouseOut="MM_nbGroup('out')"><img src="../images/buttons/photography.gif"
Thanks for any help on this in advance!
For anyone wondering the same thing, here's what I've found so far...
The 'insert' bar provided in DWCS3 doesn't allow for two 'inserted' menu bars on one page. However, the 'Behaviors' palette will allow you to add effective roll-overs with the "Set Nav Bar Image" option. Unfortunately (as far as I can tell) DWCS3 is not as smart as Adobe's GoLive was, in that it won't automatically fill in the appropriate items if you name your files correctly. Even still, you should name your images accordingly (xxx_over, xxx_down, etc) to keep it straight in your own head.
As for the MM_nbGroup question, best I can tell this is WYSIWYG code that ships with DWCS3 (the kind of stuff that really mifs some of you developers, sorry guys), as it names items by group # and doesn't seem to have any real relevance in the lexicon of html. I could be mistaken on this however, and am open to enlightenment on the topic if anyone can offer.

Resources