What is Reddit's opinion of

""




Categories:

Check price

1 comment of this product found across Reddit:
no94321 /r/DIYRift
2 points
1970-01-18 04:03:02.454 +0000 UTC

Headset parts:

Optional positional tracking:

The headset assembly is pretty simple. Place the screen onto something the size of a cellphone to make it easier to take out or even place in another headset. I had to make some cutouts for the cables on the top. I didn't want to have it on all the time so I attached a usb hub on the side with velcro. I use some cable organizers to route the cables around the top and back. The STM32F I just stuck it on the front with double stick tape.

Truthfully the most important part is the software. It does work with windows 10 and is a bit of a pain to get it going. For the tracker you want to follow this guide to flash the firmware. I had to boot ubuntu off a usb flash drive to flash it. I did run into a problem with installing some dependencies which I solved by searching google for an install command until I found one that worked. If done properly the lights on the board will flash clockwise.

Install osvr runtime. Download OSVR-OpenHMD and OSVR-Fusion and move them to the osvr plugins folder (C:\Program Files\OSVR\Runtime\bin\osvr-plugins-0). Next install steamvr and the Steamvr-OSVR plugin. The installation instructions can be found here, You can use the official plugin release or you can use this one that was compiled by dogeitrade that has a functional vr dashboard. Lastly download oculus 0.2.5 sdk which is needed for the tracker.

Now we have to configure everything. To make it simple I'll just paste mine which should work for you. Keep in mind that you can run this on any monitor if you make a display descriptor for it and use a proper render manager config.

osvr_server_config.json

{ 
    "display": "displays/Fiitvn_1440.json",
    "renderManagerConfig": "sample-configs/renderManager.extended.portrait.HDKv2.0 - Copy.json"
}

In displays folder Fiitvn_1440.json

{
  "meta": {
    "schemaVersion": 1
  },
  "hmd": {
    "device": {
      "vendor": "TopfoisonLCD",
      "model": "DIYRift",
      "num_displays": 1,
      "Version": "TopfoisonLCD",
      "Note": ""
    },
    "field_of_view": {
      "monocular_horizontal": 102,
      "monocular_vertical": 102,
      "overlap_percent": 100,
      "pitch_tilt": 0
    },
    "resolutions": [
      {
        "width": 1440,
        "height": 2560,
        "video_inputs": 1,
        "display_mode": "vert_side_by_side",
        "swap_eyes": 1
      }
    ],
    "distortion": {
                "distance_scale_x": 1,
                "distance_scale_y": 1,
                "polynomial_coeffs_red": [ 0, 1, 0.2 ],
                "polynomial_coeffs_green": [ 0, 1, 0.24 ],
                "polynomial_coeffs_blue": [ 0, 1, 0.32 ]
    },
    "rendering": {
      "right_roll": 0,
      "left_roll": 0
    },
    "eyes": [
      {
        "center_proj_x": 0.5,
        "center_proj_y": 0.5,
        "rotate_180": 0
      },
      {
        "center_proj_x": 0.5,
        "center_proj_y": 0.5,
        "rotate_180": 0
      }
    ]
  }
}

In sample configs folder renderManager.extended.portrait.HDKv2.0 - Copy.json

{
    "meta": {
        "schemaVersion": 1
    },
        "renderManagerConfig": {
            "directModeEnabled": false,
            "directDisplayIndex": 0,
            "directHighPriorityEnabled": false,
            "numBuffers": 2,
            "verticalSyncEnabled": false,
            "verticalSyncBlockRenderingEnabled": false,
            "renderOverfillFactor": 1.5,
            "renderOversampleFactor": 1.0,

            "window": {
                "title": "OSVR",
                "fullScreenEnabled": true,
                "xPosition": 2560,
                "yPosition": 0
            },

            "display": {
                "rotation": 90,
                "bitsPerColor": 8
            },

            "prediction": {
                "enabled": true,
                "staticDelayMS": 26,
                "leftEyeDelayMS": 0,
                "rightEyeDelayMS": 0,
                "localTimeOverride": true
            },

            "timeWarp": {
                "enabled": true,
                "asynchronous": false,
                "maxMsBeforeVSync": 0
            }
        }
}

For steamvr.vrsettings in C:\Program Files (x86)\Steam\config

{
   "collisionBounds" : {
      "CollisionBoundsColorGammaA" : 0,
      "CollisionBoundsColorGammaR" : 255
   },
   "driver_osvr" : {
      "cameraPath" : "/je_nourish_kinect/KinectV2/semantic/kinect",
      "displayName" : "TopfoisonLCD",
      "maxTrackingRangeMeters" : 4,
      "minTrackingRangeMeters" : 0.5,
      "scanoutOrigin" : "lower-left",
      "verbose" : false
   },
   "modelskins" : {
      "stage" : "C:\\Program Files (x86)\\Steam\\steamapps\\workshop\\content\\250820\\735442946\\Animus_128_Memory_Corridor\\Animus_128_Memory_Corridor.obj",
      "stage_PublishedFileId" : "735442946"
   },
   "notifications" : {
      "DoNotDisturb" : true
   },
   "perfcheck" : {
      "heuristicActive" : false
   },
   "psmove" : {
      "meters_per_touchpad_units" : 0.075000002980232239,
      "move" : "touchpad",
      "ps" : "system",
      "rumble_suppressed" : true,
      "select" : "button_9",
      "square" : "grip",
      "start" : "button_10",
      "triangle" : "application_menu",
      "trigger" : "trigger",
      "use_spatial_offset_after_touchpad_press_as_touchpad_axis" : true
   },
   "psmove_settings" : {
      "psmove_extend_y" : 0.05000000074505806,
      "psmove_extend_z" : 0.0099999997764825821
   },
   "psmove_touchpad_directions" : {
      "circle" : "touchpad_left",
      "cross" : "touchpad_down"
   },
   "revive" : {
      "PerfHudMode" : 0
   },
   "steamvr" : {
      "activateMultipleDrivers" : true,
      "background" : "C:\\Program Files (x86)\\Steam\\steamapps\\workshop\\content\\250820\\651288602\\holodeckfloor.png",
      "mirrorViewGeometry" : "465 75 720 1280",
      "playAreaColor" : "#FFFFFFFF",
      "showStage" : true
   }
}

You can rename the osvr files but just make sure they match the names in the osvr server config files. Set the topfoison screen to portrait mode in display settings. Now that we have everything setup all you have to do is run the oculus configuration utility then close it before running osvr server. Not sure why this is required but it's the only way to get the tracker recognized by osvr. You can check to see if it's working by running osvr tracker. Then run steamvr.

I also added positional tracking with a kinect v2. I didn't want to waste money on the pc adapter so I just did this mod. You need compatible usb 3.0 ports so you may need to purchase a usb 3.0 pci-e card. Install the OSVR-Kinect plugin. Then use this osvr server config:

{
    "display": "displays/Fiitvn_1440.json",
    "renderManagerConfig": "sample-configs/renderManager.extended.portrait.HDKv2.0 - Copy.json",
    "server": {
        "sleep": 1
    },
    "drivers": [{
        "plugin": "je_nourish_fusion",
        "driver": "FusionDevice",
        "params": {
            "name": "DK1_Kinectv2",
            "position": "/je_nourish_kinect/KinectV2/semantic/body1/head",
            "orientation": "/je_nourish_openhmd/Oculus Rift (Devkit)/semantic/hmd",
            "alignInitialOrientation": true,
            "offsetFromRotationCenter": {
                "x": 0,
                "y": 0.01,
                "z": -0.05
            }
        }
    }],
    "aliases": {
        "/me/head": "/je_nourish_fusion/DK1_Kinectv2/tracker/0"
    }
}

Then just repeat what you did before. Start oculus config utility and close it. Then run osvr server. Spread your hands out so that the kinect can see them so it can track your head. You just have to do this at the start so it can recognize your body. You'll notice that the config file include the server sleep command. This halves the polling to the trackers which greatly reduces cpu usage. You can use this on the other config too just make sure to run it through a json validator to make sure there are no errors. Also sometimes the z and x axis get inverted so you have to restart everything.

If you really wish to take it one step further you can add controllers with psmoveservice.