.. _5 Hardware product development guide : 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: .. image:: _static/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: .. image:: _static/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. 2. 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"): .. image:: _static/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 ============================================== ============================================== ============================================== .. image:: _static/5.1.1.png .. image:: _static/5.2.1.png .. image:: _static/5.3.1.png .. image:: _static/5.1.2.png .. image:: _static/5.2.2.png .. image:: _static/5.3.2.png .. image:: _static/5.1.3.png .. image:: _static/5.2.3.png .. image:: _static/5.3.3.png .. image:: _static/5.1.4.png .. image:: _static/5.2.4.png .. image:: _static/5.3.4.png .. image:: _static/5.1.5.png .. image:: _static/5.2.5.png .. image:: _static/5.3.5.png .. image:: _static/5.1.6.png .. image:: _static/5.2.6.png .. image:: _static/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: .. image:: _static/5.4.png Figure 5.4 Schematic diagram of the G2 controller The corresponding input values can be obtained through the following nodes: .. image:: _static/5.5.png Figure 5.5 How to get the touchpad axis value 5.1.3 Related blueprint nodes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ For the G2 controller, we also provide the following blueprint interfaces: +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.1.3.1.png |Function |Set the controller connection, disconnection, and reconnection response events | + +------------------+-------------------------------------------------------------------------------+ | |Input |OnPicoControllerConnected: Response event when reconnected | | | |OnPicoControllerDisconnected:Response event when disconnected | + +------------------+-------------------------------------------------------------------------------+ | |Output | None | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.1.3.2.png |Function |Set arm Model Gaze type | + +------------------+-------------------------------------------------------------------------------+ | |Input |Gaze type | + +------------------+-------------------------------------------------------------------------------+ | |Output | None | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.1.3.3.png |Function |Get arm Model Gaze type | + +------------------+-------------------------------------------------------------------------------+ | |Input | None | + +------------------+-------------------------------------------------------------------------------+ | |Output |Gaze type | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.1.3.4.png |Function |Set Elbow Height | + +------------------+-------------------------------------------------------------------------------+ | |Input |Elbow Height Offset 0~0.2 | + +------------------+-------------------------------------------------------------------------------+ | |Output | None | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.1.3.5.png |Function |Get Elbow Height | + +------------------+-------------------------------------------------------------------------------+ | |Input | None | + +------------------+-------------------------------------------------------------------------------+ | |Output |Elbow Height Offset | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.1.3.6.png |Function |Set Elbow Depth | + +------------------+-------------------------------------------------------------------------------+ | |Input |Elbow Depth Offset 0~0.2 | + +------------------+-------------------------------------------------------------------------------+ | |Output | None | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.1.3.7.png |Function |Get Elbow Depth | + +------------------+-------------------------------------------------------------------------------+ | |Input | None | + +------------------+-------------------------------------------------------------------------------+ | |Output |Elbow Depth Offset | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.1.3.8.png |Function |Set Pointer Tilt Angle | + +------------------+-------------------------------------------------------------------------------+ | |Input | 0~30 | + +------------------+-------------------------------------------------------------------------------+ | |Output | None | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.1.3.9.png |Function |Get Pointer Tilt Angle | + +------------------+-------------------------------------------------------------------------------+ | |Input | None | + +------------------+-------------------------------------------------------------------------------+ | |Output |Pointer Tilt Angle | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.1.3.10.png |Function |Select the tracking joint of the motion controller | + +------------------+-------------------------------------------------------------------------------+ | |Input | Wrist-Wrist, Elbow-Elbow, Shoulder-Shoulder | + +------------------+-------------------------------------------------------------------------------+ | |Output | None | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.1.3.11.png |Function |Get the current tracking joint of the motion controller | + +------------------+-------------------------------------------------------------------------------+ | |Input | None | + +------------------+-------------------------------------------------------------------------------+ | |Output | Wrist-Wrist, Elbow-Elbow, Shoulder-Shoulder | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+--------------------------------------------------------------------------------------------------------+ | .. image:: _static/5.1.3.12.png |Function |Switch the tracking joints of the motion controller circularly, wrist, elbow and shoulder in sequence | + +------------------+--------------------------------------------------------------------------------------------------------+ | |Input | None | + +------------------+--------------------------------------------------------------------------------------------------------+ | |Output | None | + +------------------+--------------------------------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+--------------------------------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.1.3.13.png |Function |Get controller battery level | + +------------------+-------------------------------------------------------------------------------+ | |Input | None | + +------------------+-------------------------------------------------------------------------------+ | |Output | The battery level is 1 to 5, and 5 is the highest. | + +------------------+-------------------------------------------------------------------------------+ | |Return value | True: Success False: Failure | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.1.3.14.png |Function |Get controller orientation and position | + +------------------+-------------------------------------------------------------------------------+ | |Input | None | + +------------------+-------------------------------------------------------------------------------+ | |Output |Controller orientation and position | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ 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: .. image:: _static/5.6.png Figure 5.6 Add MotionController component 2. 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: .. image:: _static/5.7.png Figure 5.7 Hand property setting 3. Similarly the Hand property of MotionController_Right should be set as Right. 4. 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"): .. image:: _static/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: +--------------------------------+----------+--------------------------------------+-------------------------------------------------------+ | .. image:: _static/5.2.2.1.png |Left | .. image:: _static/5.2.2.2.png | .. image:: _static/5.2.2.3.png | + +----------+--------------------------------------+-------------------------------------------------------+ | |Right | .. image:: _static/5.2.2.4.png | .. image:: _static/5.2.2.5.png | +--------------------------------+----------+--------------------------------------+-------------------------------------------------------+ +--------------------------------+----------+--------------------------------------+-------------------------------------------------------+ | .. image:: _static/5.2.2.6.png |Left | .. image:: _static/5.2.2.7.png | .. image:: _static/5.2.2.8.png | + +----------+--------------------------------------+-------------------------------------------------------+ | |Right | .. image:: _static/5.2.2.9.png | .. image:: _static/5.2.2.10.png | +--------------------------------+----------+--------------------------------------+-------------------------------------------------------+ +--------------------------------+----------+--------------------------------------+-------------------------------------------------------+ | .. image:: _static/5.2.2.11.png|Left | .. image:: _static/5.2.2.12.png | .. image:: _static/5.2.2.13.png | + +----------+--------------------------------------+-------------------------------------------------------+ | |Right | .. image:: _static/5.2.2.14.png | .. image:: _static/5.2.2.15.png | +--------------------------------+----------+--------------------------------------+-------------------------------------------------------+ +--------------------------------+----------+--------------------------------------+-------------------------------------------------------+ | .. image:: _static/5.2.2.16.png|Left | .. image:: _static/5.2.2.17.png | .. image:: _static/5.2.2.18.png | + +----------+--------------------------------------+-------------------------------------------------------+ | |Right | .. image:: _static/5.2.2.19.png | .. image:: _static/5.2.2.20.png | +--------------------------------+----------+--------------------------------------+-------------------------------------------------------+ +--------------------------------+----------+--------------------------------------+-------------------------------------------------------+ | .. image:: _static/5.2.2.21.png|Left | .. image:: _static/5.2.2.22.png | .. image:: _static/5.2.2.23.png | + +----------+--------------------------------------+-------------------------------------------------------+ | |Right | .. image:: _static/5.2.2.24.png | .. image:: _static/5.2.2.25.png | +--------------------------------+----------+--------------------------------------+-------------------------------------------------------+ +--------------------------------+----------+--------------------------------------+-------------------------------------------------------+ | .. image:: _static/5.2.2.26.png|Left | .. image:: _static/5.2.2.27.png | .. image:: _static/5.2.2.28.png | + +----------+--------------------------------------+-------------------------------------------------------+ | |Right | .. image:: _static/5.2.2.29.png | .. image:: _static/5.2.2.30.png | +--------------------------------+----------+--------------------------------------+-------------------------------------------------------+ +--------------------------------+----------+--------------------------------------+-------------------------------------------------------+ | .. image:: _static/5.2.2.31.png|Left | .. image:: _static/5.2.2.32.png | .. image:: _static/5.2.2.33.png | + +----------+--------------------------------------+-------------------------------------------------------+ | |Right | .. image:: _static/5.2.2.34.png | .. image:: _static/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: .. image:: _static/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: .. image:: _static/5.8.6.png Fig 5.10 Key mapping diagram (front view) .. image:: _static/5.8.9.png Fig 5.11 Key mapping diagram (side view) +---------------------+----------+--------------------------------------+-------------------------------------------------------+ |Home |Left | .. image:: _static/5.2.3.1.png | .. image:: _static/5.2.3.2.png | + +----------+--------------------------------------+-------------------------------------------------------+ | |Right | .. image:: _static/5.2.3.3.png | .. image:: _static/5.2.3.4.png | +---------------------+----------+--------------------------------------+-------------------------------------------------------+ +---------------------+----------+--------------------------------------+-------------------------------------------------------+ |Menu |Left | .. image:: _static/5.2.3.5.png | .. image:: _static/5.2.3.6.png | + +----------+--------------------------------------+-------------------------------------------------------+ | |Right | .. image:: _static/5.2.3.7.png | .. image:: _static/5.2.3.8.png | +---------------------+----------+--------------------------------------+-------------------------------------------------------+ +---------------------+----------+--------------------------------------+-------------------------------------------------------+ |Trigger |Left | .. image:: _static/5.2.3.9.png | .. image:: _static/5.2.3.10.png | + +----------+--------------------------------------+-------------------------------------------------------+ | |Right | .. image:: _static/5.2.3.11.png | .. image:: _static/5.2.3.12.png | +---------------------+----------+--------------------------------------+-------------------------------------------------------+ +---------------------+----------+--------------------------------------+-------------------------------------------------------+ |Grip |Left | .. image:: _static/5.2.3.13.png | .. image:: _static/5.2.3.14.png | + +----------+--------------------------------------+-------------------------------------------------------+ | |Right | .. image:: _static/5.2.3.15.png | .. image:: _static/5.2.3.16.png | +---------------------+----------+--------------------------------------+-------------------------------------------------------+ +---------------------+----------+--------------------------------------+-------------------------------------------------------+ |X/A |Left | .. image:: _static/5.2.3.17.png | .. image:: _static/5.2.3.18.png | + +----------+--------------------------------------+-------------------------------------------------------+ | |Right | .. image:: _static/5.2.3.19.png | .. image:: _static/5.2.3.20.png | +---------------------+----------+--------------------------------------+-------------------------------------------------------+ +---------------------+----------+--------------------------------------+-------------------------------------------------------+ |Y/B |Left | .. image:: _static/5.2.3.21.png | .. image:: _static/5.2.3.22.png | + +----------+--------------------------------------+-------------------------------------------------------+ | |Right | .. image:: _static/5.2.3.23.png | .. image:: _static/5.2.3.24.png | +---------------------+----------+--------------------------------------+-------------------------------------------------------+ +---------------------+----------+--------------------------------------+-------------------------------------------------------+ |Joystick |Left | .. image:: _static/5.2.3.25.png | .. image:: _static/5.2.3.26.png | + +----------+--------------------------------------+-------------------------------------------------------+ | |Right | .. image:: _static/5.2.3.27.png | .. image:: _static/5.2.3.28.png | +---------------------+----------+--------------------------------------+-------------------------------------------------------+ +---------------------+----------+--------------------------------------+-------------------------------------------------------+ |X CapTouch |Left | .. image:: _static/5.2.3.29.png | .. image:: _static/5.2.3.30.png | + +----------+--------------------------------------+-------------------------------------------------------+ |A CapTouch |Right | .. image:: _static/5.2.3.31.png | .. image:: _static/5.2.3.32.png | +---------------------+----------+--------------------------------------+-------------------------------------------------------+ +---------------------+----------+--------------------------------------+-------------------------------------------------------+ |Y CapTouch |Left | .. image:: _static/5.2.3.33.png | .. image:: _static/5.2.3.34.png | + +----------+--------------------------------------+-------------------------------------------------------+ |B CapTouch |Right | .. image:: _static/5.2.3.35.png | .. image:: _static/5.2.3.36.png | +---------------------+----------+--------------------------------------+-------------------------------------------------------+ +---------------------+----------+--------------------------------------+-------------------------------------------------------+ |Joystick |Left | .. image:: _static/5.2.3.37.png | .. image:: _static/5.2.3.38.png | + +----------+--------------------------------------+-------------------------------------------------------+ |CapTouch |Right | .. image:: _static/5.2.3.39.png | .. image:: _static/5.2.3.40.png | +---------------------+----------+--------------------------------------+-------------------------------------------------------+ +---------------------+----------+--------------------------------------+-------------------------------------------------------+ |Trigger |Left | .. image:: _static/5.2.3.41.png | .. image:: _static/5.2.3.42.png | + +----------+--------------------------------------+-------------------------------------------------------+ |CapTouch |Right | .. image:: _static/5.2.3.43.png | .. image:: _static/5.2.3.44.png | +---------------------+----------+--------------------------------------+-------------------------------------------------------+ +---------------------+----------+--------------------------------------+-------------------------------------------------------+ |Grip Axis |Left | .. image:: _static/5.2.3.45.png | .. image:: _static/5.2.3.46.png | + +----------+--------------------------------------+-------------------------------------------------------+ | |Right | .. image:: _static/5.2.3.47.png | .. image:: _static/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: .. image:: _static/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: .. image:: _static/5.10.png Figure 5.13 Touchpad-related blueprint nodes1 .. image:: _static/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: .. image:: _static/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: .. image:: _static/5.13.png Figure 5.16 API of Pico Neo controller The detailed use methods of these APIs are as follows: +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/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 | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/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 | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/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 | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.2.4.4.png |Function |Determine if the main controller is connected | + +------------------+-------------------------------------------------------------------------------+ | |Input | None | + +------------------+-------------------------------------------------------------------------------+ | |Output | None | + +------------------+-------------------------------------------------------------------------------+ | |Return value |True-connected, false-not connected | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.2.4.5.png |Function |Determine if the sub controller is connected | + +------------------+-------------------------------------------------------------------------------+ | |Input | None | + +------------------+-------------------------------------------------------------------------------+ | |Output | None | + +------------------+-------------------------------------------------------------------------------+ | |Return value |True-connected, false-not connected | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/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) | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/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) | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.2.4.8.png |Function |Set MainController arm model | + +------------------+-------------------------------------------------------------------------------+ | |Input |Arm model related parameters | + +------------------+-------------------------------------------------------------------------------+ | |Output | None | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.2.4.9.png |Function |Get MainController arm model | + +------------------+-------------------------------------------------------------------------------+ | |Input | None | + +------------------+-------------------------------------------------------------------------------+ | |Output |Arm model related parameters | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.2.4.10.png |Function |Set SubController arm model | + +------------------+-------------------------------------------------------------------------------+ | |Input |Arm model related parameters | + +------------------+-------------------------------------------------------------------------------+ | |Output | None | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.2.4.11.png |Function |Get SubController arm model | + +------------------+-------------------------------------------------------------------------------+ | |Input | None | + +------------------+-------------------------------------------------------------------------------+ | |Output |Arm model related parameters | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.2.4.12.png |Function |Shake Main Controller (the left controller of Neo 2) | + +------------------+-------------------------------------------------------------------------------+ | |Input | None | + +------------------+-------------------------------------------------------------------------------+ | |Output | None | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.2.4.13.png |Function |Shake Sub Controller (the left controller of Neo 2) | + +------------------+-------------------------------------------------------------------------------+ | |Input | None | + +------------------+-------------------------------------------------------------------------------+ | |Output | None | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/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 | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/5.2.4.15.png |Function |Get main controller value | + +------------------+-------------------------------------------------------------------------------+ | |Input | None | + +------------------+-------------------------------------------------------------------------------+ | |Output | 0 - Left 1 - Right | + +------------------+-------------------------------------------------------------------------------+ | |Return value | None | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/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 | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/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 | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/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 | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/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 | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/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 | +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ +---------------------------------------------------------+------------------+-------------------------------------------------------------------------------+ | .. image:: _static/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: .. image:: _static/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. .. image:: _static/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 .. image:: _static/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 ========================== ====================================================