I’m trying to create a blueprint where a user will be able to turn a big bowl in VR in only the Z axis. It has 3 parts, a top, a middle, and a bottom. I’d like to be able to have the top and bottom parts to rotate in a positive direction, while the middle part rotates in a negative direction. I have a screengrab of what I have so far, just trying to figure out what I’m doing wrong. The handles are the parent of the Top, Mid and bottom parts of the bowl as well:
Any help with this would be greatly appreciated.
I would use the add rotation node. I would also use local space instead of world space. On the top and bottom you add positive rotation, and the middle add negative rotation.
Thanks for the reply! Would this work with motion controller interaction or would this only be automatic rotation?
I have not worked with VR or motion controllers sadly. They way I would try and do it with a motion controller is save the location of the controller at tick and then determine the offset between it and the last tick and make a rotation based on that.
I am not by a pc with UE4 at the momement but here is a crude picture.
What you need to get the angle between those to vectors is: angle = acos(V1 * V2) where * is a dot product. Here is the documentation on the dot product node Dot Product | Unreal Engine Documentation and the acos node Acos (Degrees) | Unreal Engine Documentation. Hope this helps. Let me know if you need further explanation.
Hey thanks again for the replies. I’m actually not familiar with these nodes, but I’ll try to see if I can find some examples of how they’re used. I’m pretty new to blueprints so I’m still figuring this system out.
Here is the blueprint example I made really quick.
Oh sorry theres an error. The multiply -1 is supposed to come from the ACOSd to the add rotation Z.
Awesome, thanks for this! I have the whole thing set up, I’m just confused about the “last hand location” float.
Still trying to figure that part out. Is it a custom variable?
Its a custom vector variable, the difference is that instead using a “break vector” node he has spitted the output. You can do this by right clicking on the pin output of the variable and chose “split output” or something like this, so you will get the individual XYZ vectors as float values.
Got it, now I just need to know how to create a custom vector variable, haha.
Scratch that, figured it out, Thanks!
So I tried to simulate this but it just makes the bowl freak out, it looks like its shifting back and forth super fast.
The way they rotate the crank in this video is exactly what I’m looking for, the only difference is that I would need the middle section to rotate in an opposite direction and it would be on the Z axis:
Still trying to figure this out, if anyone has any ideas I’d greatly appreciate it.
I sort of figured this out, now I just need to know if there’s any way to create more than one physics constraint component so I can grab all four handles instead of just one.