- Download the latest Visual Studio with .NET desktop development enabled.
- Checkout this repository using git clone with the URL:
git clone [email protected]:BIVROST/360PlayerWindows.git --recursive
- Open the solution by doubleclicking
360Player for Windows.sln
. - Restore NuGet packages: Right click on the 360Player for Windows solution in the Solution Explorer and choose Restore NuGet Packages.
- Run the 360Player project.
A few common problems that occured during the development with quick fixes
You forgot to check out the submodules:
# on an already cloned repository:
git submodule init
git submodule update
# or when cloning:
git clone [email protected]:BIVROST/360PlayerWindows.git --recursive
You need to manually install .NET 3.5. And then restart Visual Studio.
Did you install [the drivers][3dconnexion]? [3dconnexion]: http://www.3dconnexion.pl/service/drivers.html
It might help to disable Tools -> Options -> Debugging -> General -> Enable UI Debugging Tools for XAML.
Change Test -> Test settings -> Default processor architecture to x64.
Add to path: C:\Program Files\Oculus\Support\oculus-runtime
.
This is probably some legacy installation issue.
Issue was not found on new installations.
You might encounter this popup after starting the solution:
The security debugging option is set but it requires the Visual Studio hosting process which is unavailable in this debugging configuration. The security debugging option will be disabled. This option may be re-enabled in the Security property page. The debugging session will continue without security debugging
Please ignore it and press OK. Please check this stack overflow answer for details.
Developed with the player:
- 360Player - main project
- 360Player.Test - unit tests for the project (mostly streaming sources)
- AnalyticsForVR - implementation of BIVROST AnalyticsForVR client for WPF
- BivrostAnalytics - Google Analytics plugin
- Licensing - module that manages the connection to the LicenseNinja license server
- Logger - simple logging utility
- PlayerRemote - example application for the remote feature of the player
- MOTD - sub project dealing with detecting if any updates are available (and delivering other important messages on startup)
- MOTD.Test - serialization tests of the MOTD project.
Projects imported from other sources:
- 3DconnexionDriver - .NET wrapper for the 3dConnexion Space Navigator 3d mouse ([source][link-3dconnexion])
- ClientKit - OSVR .NET wrapper ([source][link-clientkit])
- OculusWrap - .NET wrapper for Oculus Rift SDK
The bivrost
protocol enabled links in a browser to run the 360Player.
The protocol syntax is:
bivrost:<url>
[?version=<version>]
[&stereoscopy=<stereoscopy type>]
[&projection=<projection type>]
[&autoplay=<boolean>]
[&loop=<boolean>]
Where:
<url>
is the absolute url to the media file, URI encoded.<version>
is the version of software generating the link<stereoscopy type>
is one of:autodetect
- guess by filename tags and media ratio (the default).mono
- whole image used.side_by_side
- image for left eye is on the left half, and right on the right half of the media.top_and_bottom
- the left eye is the top half of the image, the right one in the bottom half.top_and_bottom_reversed
- the left eye is the bottom half of the image, the right one in the top half.
<projection>
- onlyequirectangular
is supported.
Only the <url>
is required, all other values are optional.
All except of the first argument have to be added with an question mark (?
) or ampersand (&
) at their start. The question mark before the first one and ampersands after the next ones - just like in a normal URI query string.
Stereoscopy in local and remote files is guessed from tags in the filename.
Adding a word in the filename will change the stereoscopy file to that value.
Available words are:
SbS
orLR
- side by side.RL
- reverse side by side.TaB
orTB
- top and bottom.BaT
orBT
- top and bottom reversed.mono
or none of the above - monoscopic.
Words have to be separated from other characters in the filename by interpunction characters (_
, -
, ,
, .
, (
, )
or space).
For example, movie_TaB.mp4
, video(LR).mp4
or http://example.com/another%20movie%20SbS.mp4
will work properly.
In the course of development of 360Player for Windows, some features have been created but ultimately removed or hidden. This is a list of those features with reasons why they are no longer in the default build.
At some point, YouTube stopped serving high definition videos in a format that could be easily integrated.
Currently YT serves a 720p video that can be still watched using the old mechanics, and 720p VR is not worth watching.
The 720p support is still enabled, but is no longer advertised.
Known issue: does not detect 360 video, will happily play everything as equirectangular.
The platform shut down at the end of 2016 and the content is no longer available. Vrideo support has been finally removed in the git commit tagged "vrideo-removed".
Worked at some point, but we stopped keeping up with the constant changes to how Facebook served video.
Facebook had a special cubemap format. The format itself is still implemented.
Facebook support has been finally removed in the git commit tagged "facebook-removed".
At some point the player had a non-published feature with forwarding movie and head position from GearVR to be mirrored on the player.
The feature is hidden behind conditional compilation symbol FEATURE_REMOTE_CONTROL
and also requires Features.remote
to be enabled.
There is a test-server in the solution PlayerRemote.
The Remote Control was just a one time test and is not of production quality. There are plans to make a proper feature in the future.
For some time the 360Player for Windows asked to install browser plugins to the locally installed Firefox and Chrome browsers.
The plugins added the "Open in 360Player" button on the corner of 360 videos on those sites:
- Youtube
- Vrideo
- Littlstar
- Pornhub
The plugin also added a class to the body
element when the domain was bivrost360.com
. This class was used for feature detection from the 360WebPlayer
's open-in-native functionality.
This feature has been disabled as the plugins are not kept up to date.
To enable the 360Player part of installing the plugins, use the conditional compilation flag FEATURE_BROWSER_PLUGINS
.
The source of the plugins is located in a git repository bundle 360Player/BrowserPlugins/browser-plugins-20160418T1309160200-1496ba5.gitbundle
.
GhostVR was one of the AnalyticsForVR session-sink providers. It has been disabled since.
To enable the player side, FEATURE_GHOSTVR
conditional compilation symbol must be added to 360Player, AnalyticsForVR and optionally 360Player.Test projects in the solution.
There is also a license feature GhostVR
to be granted.
Please note that the server is no longer available.
The 360WebPlayer had a button that allowed the user to run the content in this native player.
This was done using bivrost:
protocol and a local websocket server run by the player.
The websockets server's only duty was to inform a popup window that the link has been successfully opened and that the popup window can be closed.
The response functionality has been removed.
360Player for Windows can still run content via bivrost:
protocol and 360WebPlayer still has the button and a popup to do this, the only change is that the popup no longer knows the state of the 360Player.
Removed in tagged commit open-in-native-removed
.
Before moving into the R&D access, 360Player for Windows build had its features restricted by an external license server. Now, no server is queried and basic features are enabled by default without asking.
The licensing feature is now hidden behind conditional compilation symbol FEATURE_LICENSE_NINJA
.
This was an alpha channel for the player that was blocked by special license tokens. The last canary build has been released long ago and was not updated.