Project Orbiter-Unity Virtual Reality Simulator

miquelbb

New member
Joined
Sep 1, 2015
Messages
2
Reaction score
0
Points
1
Location
Stuttgart, Germany
In the Institute of Space Systems (IRS) of the University of Stuttgart we are currently upgrading our Soyuz Simulator (which is based on Obriter) to a new Virtual Reality simulator developed with the Unity game engine. The new simulator should offer a realistic cockpit interface of the new Russian Spacecraft PTK-Federatsiya (3D Model offered by Scorpius) and perform Earth, lunar and martian missions, mostly docking procedures to the LOP-G.
This thread should open up a discussion on how to develop such a simulator.
The new simulation will be a combination of Unity and Orbiter softwares. We base the orbital mechanics and overall physical simulation on Orbiter, and the spacecraft parameters (Positions, attituted, subsystem status, etc) are sent via an Orbiter Add-on to Unity. The respective client in Unity reads the data and updates the VR environment with the needed values.
As of today, we are still developing the cockpit interfaces and improving the visualization of planets, spacecraft and general lighting.
I look forward to your ideas, recommendations and critics. Soon I'll post some images/videos of the development. If this works, Orbiter will become a VR-Ready Software (for some parts of the flight :thumbup: )
 

Urwumpe

Not funny anymore
Addon Developer
Donator
Addon List Curator
Joined
Feb 6, 2008
Messages
35,989
Reaction score
474
Points
173
Location
Langendernbach
How are you planning to design the interactivity in VR?
 

jedidia

shoemaker without legs
Addon Developer
Joined
Mar 19, 2008
Messages
9,623
Reaction score
457
Points
173
Location
between the planets
Unity's coordinate system is in floats, if I'm not mistaken. How are you planning to address the precision issue arising from that?
 

Urwumpe

Not funny anymore
Addon Developer
Donator
Addon List Curator
Joined
Feb 6, 2008
Messages
35,989
Reaction score
474
Points
173
Location
Langendernbach
Unity's coordinate system is in floats, if I'm not mistaken. How are you planning to address the precision issue arising from that?

Actually, the rendering in Orbiter is already done with just floats... Most GPUs are very bad in processing doubles....
 

Face

Addon Developer
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,226
Reaction score
174
Points
103
Location
Vienna
Why going through the troubles of sending values between processes if there already is a graphics client infrastructure that could be used (aka OVP)? I think it would be better to have e.g. a UnityClient OVP module that supports VR instead of a com module that sends data to a completely different project.

Is it to keep the VR system closed source?
 

Urwumpe

Not funny anymore
Addon Developer
Donator
Addon List Curator
Joined
Feb 6, 2008
Messages
35,989
Reaction score
474
Points
173
Location
Langendernbach
Is it to keep the VR system closed source?

open_source.png


:rolleyes:
 

Face

Addon Developer
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,226
Reaction score
174
Points
103
Location
Vienna
I actually missed that XKCD, thanks for linking it.

Besides the pathetic attempt on ridiculing an honest question, do you actually KNOW the reason why the described design is not using OVP?
 

jedidia

shoemaker without legs
Addon Developer
Joined
Mar 19, 2008
Messages
9,623
Reaction score
457
Points
173
Location
between the planets
I think it would be better to have e.g. a UnityClient OVP module that supports VR instead of a com module that sends data to a completely different project.

Is that even possible, though? I'm not sure at all whether you can just squeeze its runtime into another process, as Unity appears to be more of a framework rather just an engine.
 

Face

Addon Developer
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,226
Reaction score
174
Points
103
Location
Vienna
Is that even possible, though? I'm not sure at all whether you can just squeeze its runtime into another process, as Unity appears to be more of a framework rather just an engine.

It is not about squeezing it into another process, but whether or not you implement the OVP interface to interact with it. Iˋve experimented with Unity embedded in WPF applications already, and it looked promising, thus my first question.

If - for whatever reason .- OVPs license is a problem, Iˋd of course understand the need to forward the values to a separate project. Thus my other question.
 

jedidia

shoemaker without legs
Addon Developer
Joined
Mar 19, 2008
Messages
9,623
Reaction score
457
Points
173
Location
between the planets
Ah, I misunderstood. You're talking about the use of OVP specifically, not about the server/client approach in general.
 

Face

Addon Developer
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,226
Reaction score
174
Points
103
Location
Vienna
Ah, I misunderstood. You're talking about the use of OVP specifically, not about the server/client approach in general.

We already had OVP clients that send data to lean render clients (AFAIK Artlav did that with some OGLA experiment). The point is that there is already a separation interface with OVP.

BTW: I just checked, I can load and start the UnityPlayer.dll of a standalone build just fine inside a custom executable. As it appears, the whole engine is running inside this process. Granted, there is no API as such, but it should be much easier to exchange data between script land and the Orbiter module with such an approach.
 

palebluedot

New member
Joined
Jan 1, 2016
Messages
4
Reaction score
0
Points
0
Hi Face,

I am interested in this too. Are you using -parentHWND as mentioned here: https://stackoverflow.com/questions/44059182/embed-unity3d-app-inside-wpf-application

One of the reasons I want to develop a Unity renderer that's a separate process and communicates through a socket/shared memory/named pipe with a OVP module in the Orbiter process, is to allow the Orbiter process to be stopped and restarted with a different planetary system or scenario :)

Probably the OVP module would simply forward the callback arguments to Unity via a socket and accept the return values. I think local sockets use shared memory anyway, so it will be fast enough for rendering. Using Unity does give access to a great editor and physics, collisions etc, though properly handling them can be tricky.
 
Last edited:
Top