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
Joined
Feb 6, 2008
Messages
37,588
Reaction score
2,312
Points
203
Location
Wolfsburg
Preferred Pronouns
Sire
How are you planning to design the interactivity in VR?
 

jedidia

shoemaker without legs
Addon Developer
Joined
Mar 19, 2008
Messages
10,842
Reaction score
2,105
Points
203
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
Joined
Feb 6, 2008
Messages
37,588
Reaction score
2,312
Points
203
Location
Wolfsburg
Preferred Pronouns
Sire
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

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,390
Reaction score
577
Points
153
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
Joined
Feb 6, 2008
Messages
37,588
Reaction score
2,312
Points
203
Location
Wolfsburg
Preferred Pronouns
Sire
Is it to keep the VR system closed source?

open_source.png


:rolleyes:
 

Face

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,390
Reaction score
577
Points
153
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
10,842
Reaction score
2,105
Points
203
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

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,390
Reaction score
577
Points
153
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
10,842
Reaction score
2,105
Points
203
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

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,390
Reaction score
577
Points
153
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:

bjsikkem

Member
Joined
Feb 4, 2020
Messages
12
Reaction score
2
Points
18
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 ? )
I know I'm resurrecting a very old thread here, but hoping you may still be online. Very curious to hear more about your project!
 

Sbb1413

Well-known member
Joined
Aug 14, 2018
Messages
948
Reaction score
373
Points
78
Location
India
Preferred Pronouns
he/his/him
The project is dormant, probably because the Stuttgart University is closed due to the COVID-19 pandemic. I am pinging to @miquelbb to get a response.
I have read the explanation of this xkcd at here. Richard did a good job on initiating the GNU Project.
 

Urwumpe

Not funny anymore
Addon Developer
Donator
Joined
Feb 6, 2008
Messages
37,588
Reaction score
2,312
Points
203
Location
Wolfsburg
Preferred Pronouns
Sire
The project is dormant, probably because the Stuttgart University is closed due to the COVID-19 pandemic. I am pinging to @miquelbb to get a response.

I have read the explanation of this xkcd at here. Richard did a good job on initiating the GNU Project.

Yeah, but at the same time, the comic is a smart parody of a certain attitude among the free software world, that still sees itself under threat from closed-source and "not really free" software licences. And lots of flamewars about what actually free open-source software is and that the other licence is not following the true path.

Thus that reference as reaction to asking the already alert question of wether a certain design choice was made to keep things closed-source, instead of maybe being less assuming and maybe just ask, why it can't use a certain existing component there to solve a problem. There can be millions of design choices and factors. Not knowing that a certain library provides a certain functionality is even a more likely than any well-thought design decision against it. Maybe being open yourself is wiser than already searching your katanas under the bed.

But what do I know? I am not caring enough about FOSS to really matter, me little heretic.
 

bjsikkem

Member
Joined
Feb 4, 2020
Messages
12
Reaction score
2
Points
18
See, I'm sitting here thinking that if one's goal was VR, then using Unity to do the visuals makes a lot of sense because there's tons of VR support readily available. Rather than trying to bake something from complete scratch with OVP. I am but a programming peon and I've made functional VR apps in Unity!

Which is what interested me about this thread. I actually had been working a few years back on a VR Mercury simulator (mainly for my own purposes - someone else already has built a full Mercury VR sim in Steam) using Unity. But I was baking my orbital simulation completely from scratch. The idea of using Orbiter to run the math and Unity to do the visuals had never occurred to me!

Katana fights can be fun sometimes, though.
 
Top