5 Hardware product development guide

This chapter will introduce the use method of SDK on Pico hardware products.

5.1 Pico G2/G2 4K

5.1.1 User manual

Please follow these steps to use Pico G2 controllers:

  1. Add the MotionController component to the default Pawn class in the game to make it have the same level as the Camera component:
_images/5.1.png

Figure 5.1 MotionController component addition

This component is not affected by the Hand property, for example, if the left and right hands need to be changed, please go to the system setup to modify it:

_images/5.2.png

Figure 5.2 Disable Low Latency Update checking

Once packaged and installed, the component will will follow the position/orientation of the Pico controller.

  1. Add a model to MotionController:

Please add the model under the Visualization sub-item of MotionController detail panel (the display can be achieved after checking “Show Plugin Content”):

_images/5.3.png

Figure 5.3 Add Pico controller model

It should be noted that in our plug-in directory, we package the controller with key animation into an Actor, and if you want to reuse it, please attach it to the Pawn or Character in your level.

5.1.2 Input instructions

The keys used by Pico G2 controllers are as follows:

G2 controller key Input binding Blueprint node
_images/5.1.1.png _images/5.2.1.png _images/5.3.1.png
_images/5.1.2.png _images/5.2.2.png _images/5.3.2.png
_images/5.1.3.png _images/5.2.3.png _images/5.3.3.png
_images/5.1.4.png _images/5.2.4.png _images/5.3.4.png
_images/5.1.5.png _images/5.2.5.png _images/5.3.5.png
_images/5.1.6.png _images/5.2.6.png _images/5.3.6.png

The axis input of the G2 controller only contains the touchpad, and the schematic diagram of the touchpad is as follows:

_images/5.4.png

Figure 5.4 Schematic diagram of the G2 controller

The corresponding input values can be obtained through the following nodes:

_images/5.5.png

Figure 5.5 How to get the touchpad axis value

5.2 Pico Neo 2 / Neo 3

5.2.1 User manual

  1. Add two MotionController components to the default Pawn class in the game (named as MotionController_Left and MotionController_Right respectively), and make them have the same level as the Camera component:
_images/5.6.png

Figure 5.6 Add MotionController component

  1. Select MotionController_Left. Find the Hand property under its detail panel and modify it into Left. Thus the component will move following the main controller:
_images/5.7.png

Figure 5.7 Hand property setting

  1. Similarly the Hand property of MotionController_Right should be set as Right.
  2. Add a model to MotionController: please add the model under the Visualization sub-item of MotionController detail panel (the display can also be achieved after checking “Show Plugin Content”):
_images/5.8.png

Figure 5.8 Add the controller model

It should be noted that Pico SDK package the controller with key animation into an Actor, to reuse it, please attach it to the Pawn or Character in your level.

5.2.2 Pico Neo 2 Input instructions

The corresponding events driven by blueprint nodes for keys used by Neo 2 controller are as follows:

_images/5.2.2.1.png Left _images/5.2.2.2.png _images/5.2.2.3.png
Right _images/5.2.2.4.png _images/5.2.2.5.png
_images/5.2.2.6.png Left _images/5.2.2.7.png _images/5.2.2.8.png
Right _images/5.2.2.9.png _images/5.2.2.10.png
_images/5.2.2.11.png Left _images/5.2.2.12.png _images/5.2.2.13.png
Right _images/5.2.2.14.png _images/5.2.2.15.png
_images/5.2.2.16.png Left _images/5.2.2.17.png _images/5.2.2.18.png
Right _images/5.2.2.19.png _images/5.2.2.20.png
_images/5.2.2.21.png Left _images/5.2.2.22.png _images/5.2.2.23.png
Right _images/5.2.2.24.png _images/5.2.2.25.png
_images/5.2.2.26.png Left _images/5.2.2.27.png _images/5.2.2.28.png
Right _images/5.2.2.29.png _images/5.2.2.30.png
_images/5.2.2.31.png Left _images/5.2.2.32.png _images/5.2.2.33.png
Right _images/5.2.2.34.png _images/5.2.2.35.png

The axis input of the Pico Neo 2 controller is divided into a touchpad and a trigger, and the schematic diagram of the touchpad is as follows:

_images/5.9.png

Figure 5.9 Schematic diagram of Pico Neo 2 controller touchpad

5.2.3 Pico Neo 3 Input instructions

The corresponding events driven by blueprint nodes for keys used by Neo 3 controller are as follows:

Neo 3 specified key events driven by blueprints are as follow:

_images/5.8.6.png

Fig 5.10 Key mapping diagram (front view)

_images/5.8.9.png

Fig 5.11 Key mapping diagram (side view)

Home Left _images/5.2.3.1.png _images/5.2.3.2.png
Right _images/5.2.3.3.png _images/5.2.3.4.png
Menu Left _images/5.2.3.5.png _images/5.2.3.6.png
Right _images/5.2.3.7.png _images/5.2.3.8.png
Trigger Left _images/5.2.3.9.png _images/5.2.3.10.png
Right _images/5.2.3.11.png _images/5.2.3.12.png
Grip Left _images/5.2.3.13.png _images/5.2.3.14.png
Right _images/5.2.3.15.png _images/5.2.3.16.png
X/A Left _images/5.2.3.17.png _images/5.2.3.18.png
Right _images/5.2.3.19.png _images/5.2.3.20.png
Y/B Left _images/5.2.3.21.png _images/5.2.3.22.png
Right _images/5.2.3.23.png _images/5.2.3.24.png
Joystick Left _images/5.2.3.25.png _images/5.2.3.26.png
Right _images/5.2.3.27.png _images/5.2.3.28.png

X CapTouch

A CapTouch

Left _images/5.2.3.29.png _images/5.2.3.30.png
Right _images/5.2.3.31.png _images/5.2.3.32.png

Y CapTouch

B CapTouch

Left _images/5.2.3.33.png _images/5.2.3.34.png
Right _images/5.2.3.35.png _images/5.2.3.36.png

Joystick

CapTouch

Left _images/5.2.3.37.png _images/5.2.3.38.png
Right _images/5.2.3.39.png _images/5.2.3.40.png

Trigger

CapTouch

Left _images/5.2.3.41.png _images/5.2.3.42.png
Right _images/5.2.3.43.png _images/5.2.3.44.png
Grip Axis Left _images/5.2.3.45.png _images/5.2.3.46.png
Right _images/5.2.3.47.png _images/5.2.3.48.png

The axis input of the Pico Neo 3 controller is divided into a touchpad and a trigger, and the schematic diagram of the touchpad is as follows:

_images/5.9.png

Figure 5.12 Schematic diagram of Pico Neo 3 controller touchpad

The values of the main and sub controller touchpads can be acquired through the following blueprint nodes:

_images/5.10.png

Figure 5.13 Touchpad-related blueprint nodes1

_images/5.11.png

Figure 5.14 Touchpad-related blueprint nodes2

The input range of the trigger is 0-1, and the trigger input values of the main and auxiliary (Left and Right) controllers can be acquired through the following blueprint nodes:

_images/5.12.png

Figure 5.15 Trigger-related blueprint nodes

5.2.4 Related blueprint nodes

For the Pico Neo controller, we provide several APIs in the form of blueprint nodes. Right click on the event graph and expanding Pico Neo->Controller, and these APIs can be seen:

_images/5.13.png

Figure 5.16 API of Pico Neo controller

The detailed use methods of these APIs are as follows:

_images/5.2.4.1.png Function Set the customized controller disconnection and reconnection events
Input On Main Controller Connect: Main controller reconnection On Main Controller Disconnect: Main controller disconnection On Sub Controller Connect: Sub controller reconnection On Sub Controller Disconnect: Sub controller disconnection
Output None
Return value None
_images/5.2.4.2.png Function Get the battery level of the main controller
Input None
Output None
Return value The battery level of the main controller, 1-5
_images/5.2.4.3.png Function Get the battery level of the sub controller
Input None
Output None
Return value The battery level of the sub controller, 1-5
_images/5.2.4.4.png Function Determine if the main controller is connected
Input None
Output None
Return value True-connected, false-not connected
_images/5.2.4.5.png Function Determine if the sub controller is connected
Input None
Output None
Return value True-connected, false-not connected
_images/5.2.4.6.png Function Determine if the main controller supports 6DoF tracking
Input None
Output None
Return value True-support, false-not support (i.e. 3DoF tracking)
_images/5.2.4.7.png Function Determine if the sub controller supports 6DoF tracking
Input None
Output None
Return value True-support, false-not support (i.e. 3DoF tracking)
_images/5.2.4.8.png Function Set MainController arm model
Input Arm model related parameters
Output None
Return value None
_images/5.2.4.9.png Function Get MainController arm model
Input None
Output Arm model related parameters
Return value None
_images/5.2.4.10.png Function Set SubController arm model
Input Arm model related parameters
Output None
Return value None
_images/5.2.4.11.png Function Get SubController arm model
Input None
Output Arm model related parameters
Return value None
_images/5.2.4.12.png Function Shake Main Controller (the left controller of Neo 2)
Input None
Output None
Return value None
_images/5.2.4.13.png Function Shake Sub Controller (the left controller of Neo 2)
Input None
Output None
Return value None
_images/5.2.4.14.png Function Shake Neo 2 Controller (Also applicable for Neo 3)
Input Strength - The shaking strength, ranging from 0 to 1 Time - The shaking time, ranging from 0 to 65535 ms Hand - 0 for the left controller, and 1 for the right controller
Output None
Return value None
_images/5.2.4.15.png Function Get main controller value
Input None
Output 0 - Left 1 - Right
Return value None
_images/5.2.4.16.png Function Get the linear acceleration of Neo 2 left controller or Neo main controller
Input None
Output Linear acceleration with mm/s^2 as the unit
Return value None
_images/5.2.4.17.png Function Get the linear acceleration of Neo 2 right controller or Neo sub controller
Input None
Output Linear acceleration with mm/s^2 as the unit
Return value None
_images/5.2.4.18.png Function Get the angular velocity of Neo 2 left controller or Neo main controller
Input None
Output Angular velocity with rad/s as the unit
Return value None
_images/5.2.4.19.png Function Get the angular velocity of Neo 2 right controller or Neo sub controller
Input None
Output Angular velocity with rad/s as the unit
Return value None
_images/5.2.4.20.png Function Get the linear velocity of Neo 2 left controller
Input None
Output Linear velocity with mm/s as the unit
Return value None
_images/5.2.4.21.png Function Get the linear velocity of Neo 2 right controller
Input None
Output Linear velocity with mm/s as the unit
Return value None

5.2.5 Security boundary

Please refer to Chapter 6.2 to see the open interfaces.

5.2.6 Disable position tracking function

To develop 3Dof applications, disable the position tracking function.

Open the menu Edit->Project Settings…, find the Plugins sub-item, and check the following two options as needed:

_images/5.14.png

Figure 5.17 Pico Neo/Neo 2 6DoF options

5.2.7 Adjusting controller model angle

Pico Neo 3 uses a different design from Neo 2 that Neo 3 controller bends 34 degree comparing to horizontal plane when user holds it. See figure below for details.

_images/5.2.7.png

Fig 5.18 Pico controller angle diagram

Latest Pico SDK adds adjustment to the angle of controller model to allow application designed for Neo 3 can work well on Neo 2. To use latest SDK on Neo 2, it’s suggested to adjust the controller angle and adjust the controller 34 degrees on Pitch -axis.

5.3 Pico all-in-one key

The following table refers to the correspondence between the keys on the all-in-one machine and the key values in UE.

HMD Key UE input key
Confirm Key _images/5.21.1.png
Home Key Android standard HOME (occupied by the system)
Volume Up Key Android standard VOLUME_UP
Volume Down Key Android standard VOLUME_DOWN
Return key Android standard BACK