Motive is able to send tracking data in its native NatNet Protocol. The NatNetThree2OSC application receives the NatNet datastream, translates it into an OSC format and passes it on as a UDP stream to a chosen IP address and port.
There are two different NatNet protocols, and for each exists a different solution, NatNet2 for Motive1.x or NatNet3 for Motive2.x.
NatNet2 for Motive1.x
The NatNetTwo2OSC software is located under:
D:\00_Core\NatNet2OSC\Motive1.x
inside this folder, there is a batch file called Motive1_to_App. Right-click the file to open and edit the startup parameters:
D:\00_Core\NatNet2OSC\Motive1.x\NatNet2OSC 127.0.0.1 54321 239.255.42.99 0 0
- <D:\00_Core\NatNet2OSC\Motive1.x> is the path to the NatNet2OSC.exe
- <OscSendIP (127.0.0.1)>
- <OscSendPort (54321)>
- <Multicast IP (239.255.42.99)>
- <verbose [1]>
If you want to create another batch file, simply copy this file and change the settings accordingly.
NatNet3 for Motive2.x
The NatNetThree2OSC software is located under:
D:\00_Core\NatNet2OSC\Motive2.x
The script files are inside
D:\00_Core\NatNet2OSC\scripts
Right-click to open and edit the startup parameters, and change the settings accordingly to stream data to the appropriate IPsand with the appropriate settings:
D:\00_Core\NatNet2OSC\Motive2.x\NatNetThree2OSC --localIP=10.128.96.182 --motiveIP=10.128.96.102 --oscSendIP=10.128.96.182 --oscSendPort=54321 --oscCtrlPort=23456 --oscMode=max --yup2zup=true
- D:\00_Core\NatNet2OSC\Motive2.x\NatNetThree2OSC is the path to the NatNetThree2OSC.exe
- –localIP=10.128.96.182 is the IP of the machine this script is running on (change the IP accordingly, since the IP is always different on each pc)
- –motiveIP=10.128.96.102 is the IP of the machine motive is running on (change the IP accordingly, since the IP is always different on each pc)
- –oscSendIP=10.128.96.182 is the IP of the machine OSC is being sent to (change the IP accordingly, since the IP is always different on each pc)
- –oscSendPort=54321 is the port OSC data is sent to (change the IP accordingly, if you want to use another port)
- –oscCtrlPort=23456 is the listening port for controlling motive
- –oscMode=max (or isadora, touch or sparck) separated by a comma (eg. “max,isadora”) if you want to have multiple modes streaming. The oscMode is how the data will be structured (for example with oscMode set to max, the path for a rigidbody position will look like this: /rigidbody <rigidbodyID> position <x> <y> <z>)
- –yup2zup=true transforms all the data from y-up to z-up
If you want to create another batch file, simply copy one of the files and change the settings accordingly.
More info on how to use NatNet2OSC and all its OSC modes can be found on this GitHub-repo.
Bone ID Names
The Bone ID number will vary based on the Skeleton Type Template selected in Motive. The table below is based on Motive Skeleton Type Template: Baseline (41). An example of a max/MSP mode OSC path:
/skeleton/bone <SkeletonName_BoneName> position <x> <y> <z>
Where the <SkeletonName> corresponds to the name given inside Motive and the <BoneName> corresponds to a bone name from the table below. Make sure to set the Skeleton Coordinates inside Motive Streaming Settings to Local.
Bone ID | Bone Name |
---|---|
1 | Hips |
2 | Spine |
3 | Spine1 |
4 | Neck |
5 | Head |
6 | LeftShoulder |
7 | LeftArm |
8 | LeftForeArm |
9 | LeftHand |
10 | RightShoulder |
11 | RightArm |
12 | RightForeArm |
13 | RightHand |
14 | LeftUpLeg |
15 | LeftLeg |
16 | LeftFoot |
17 | LeftToeBase |
18 | RightUpLeg |
19 | RightLeg |
20 | RightFoot |
21 | RightToeBase |
22 | LeftHandThumb1 |
23 | LeftHandThumb2 |
24 | LeftHandThumb3 |
25 | LeftHandIndex1 |
26 | LeftHandIndex2 |
27 | LeftHandIndex3 |
28 | LeftHandMiddle1 |
29 | LeftHandMiddle2 |
30 | LeftHandMiddle3 |
31 | LeftHandRing1 |
32 | LeftHandRing2 |
33 | LeftHandRing3 |
34 | LeftHandPinky1 |
35 | LeftHandPinky2 |
36 | LeftHandPinky3 |
37 | RightHandThumb1 |
38 | RightHandThumb2 |
39 | RightHandThumb3 |
40 | RightHandIndex1 |
41 | RightHandIndex2 |
42 | RightHandIndex3 |
43 | RightHandMiddle1 |
44 | RightHandMiddle2 |
45 | RightHandMiddle3 |
46 | RightHandRing1 |
47 | RightHandRing2 |
48 | RightHandRing3 |
49 | RightHandPinky1 |
50 | RightHandPinky2 |
51 | RightHandPinky3 |