New Release AttitudeIndicatorMFD

cyph0r

New member
Joined
Feb 10, 2016
Messages
11
Reaction score
2
Points
3
Hello,

After switching from KSP to Orbiter I somehow missed an attitude indicator (aka navball) to help orient myself in orbit.
Since I didn't find any MFD that provided what I was looking for, I decided to make my own attitude indicator MFD, inspired by the KSP navball.
At this point I would like to share the results that I have so far.
Since I am quite new to Orbiter the MFD has not been rigorously tested yet, therefore any feedback as well as bug reports are greatly appreciated.

As it has been suggested in this thread, my implementation is based on the attref.cpp class that is used by the ShuttleA in the upcoming Orbiter 2016.
The attitude indicator MFD uses OpenGL for rendering the 8-ball, which allows for a replaceable surface texture. A config file can be used to alter the navball appearance.
The MFD features prograde/retrograde/normal/target... markers as known from KSP, they furthermore replace the error needles from the ShuttleA's 8-ball.
When selected, the MFD also shows altitude, speed and orbital parameters, providing an alternative to the Surface MFD once in orbit.

Included features:
- 8-ball that can be rotated in ECL, EQU, LH/LN, OV/OM and several NAV frames of reference
- Prograde/retrograde, N+/N-, radial in/out and perpendicular in/out markers on the ball
- Target, velocity and CRS marker in certain NAV modes
- NAV mode supports VOR/ILS, VTOL, XPDR and IDS
- Optional display of altitude, speed and orbital parameters
- Adjustable navball texture and marker colors

Builds for Orbiter 2010 P1 and Orbiter 2016 are attached to this post. The code is available at Github.

Regards,
Paul


1_lhln.PNG
4_ids_2.PNG


Edit: New release (20.09.16)
[ame="http://www.orbithangar.com/searchid.php?ID=7003"]AttitudeIndicatorMFD (20160920) for Orbiter 2010P1[/ame]
[ame="http://www.orbithangar.com/searchid.php?ID=7002"]AttitudeIndicatorMFD (20160920) for Orbiter 2016[/ame]
 
Last edited:

ADSWNJ

Scientist
Addon Developer
Joined
Aug 5, 2011
Messages
1,667
Reaction score
3
Points
38
Nice work - very pretty.
 

JMW

Aspiring Addon Developer
Joined
Aug 5, 2008
Messages
611
Reaction score
52
Points
43
Location
Happy Wherever
Excellent !!
Just what I was looking for to make night flight easier. :tiphat:
 

Interceptor

Well-known member
Joined
Mar 28, 2008
Messages
2,718
Reaction score
76
Points
63
Location
Michigan,Florida
Thanks for making this it works, and looks great, but just one bug, or maybe not, but anyway when you change the instrument panel in an XR-2,or DG the AttitudeIndicatorMFD always reverts back to the default settings, and you have to go through, and set everything back up, like frame of reference,mod,ect,etc.
 

ADSWNJ

Scientist
Addon Developer
Joined
Aug 5, 2011
Messages
1,667
Reaction score
3
Points
38
Thanks for making this it works, and looks great, but just one bug, or maybe not, but anyway when you change the instrument panel in an XR-2,or DG the AttitudeIndicatorMFD always reverts back to the default settings, and you have to go through, and set everything back up, like frame of reference,mod,ect,etc.

For OP - that's one of the tricky things on Orbiter's MFD's. They get destroyed and recreated on change of view (F8), or resizing of the ExtMFD. The standard approach to fix it is to introduce a persistent core and have the MFD search for it on instantiation, and only if not found, then create a new core. Making things more interesting or complex is catering for different vessels (i.e. local settings for the same MFD for 2 vessels in the same scenario), as well as different MFD positions for different vessels (e.g. a multi-page MFD where you want page 1 on the left MFD and page 2 on the right, and supporting restoration of those settings across vessel switching). All doable, but it take careful planning.
 

cyph0r

New member
Joined
Feb 10, 2016
Messages
11
Reaction score
2
Points
3
Thanks for making this it works, and looks great, but just one bug, or maybe not, but anyway when you change the instrument panel in an XR-2,or DG the AttitudeIndicatorMFD always reverts back to the default settings, and you have to go through, and set everything back up, like frame of reference,mod,ect,etc.

Yes, that is indeed a bug. I thought about avoiding this behavior by making the whole MFD instance singleton, but this didn't work because of the different MFD sizes in the respective views. Persisting the current MFD settings over reinstantiation should however not be a big problem, I will add that.
For now you can use the configuration file to set some default settings (mode, frame, marker state, ...) that the MFD should use on instantiation.
 

Hlynkacg

Aspiring rocket scientist
Addon Developer
Tutorial Publisher
Donator
Joined
Dec 27, 2010
Messages
1,870
Reaction score
3
Points
0
Location
San Diego
Mods, get this guy needs an addon dev tag stat!
 

boogabooga

Bug Crusher
Joined
Apr 16, 2011
Messages
2,999
Reaction score
1
Points
0
I want to point out (in case you didn't know) that the "attitude indicator" functionality is handled in Orbiter by the Orbit Heads-Up Display.

But, what you have here looks really cool and perhaps a bit more intuitive. I think it will be a lot of help for KSP players who want to learn to use Orbiter. :thumbup:
 

Enjo

Mostly harmless
Addon Developer
Tutorial Publisher
Donator
Joined
Nov 25, 2007
Messages
1,665
Reaction score
13
Points
38
Location
Germany
Website
www.enderspace.de
Preferred Pronouns
Can't you smell my T levels?
Yes, that is indeed a bug. I thought about avoiding this behavior by making the whole MFD instance singleton, but this didn't work because of the different MFD sizes in the respective views. Persisting the current MFD settings over reinstantiation should however not be a big problem, I will add that.
For now you can use the configuration file to set some default settings (mode, frame, marker state, ...) that the MFD should use on instantiation.

You can try MultipleVesselsMFD library for this.

[EDIT]
Nice piece of art, btw.
 
Last edited:

cyph0r

New member
Joined
Feb 10, 2016
Messages
11
Reaction score
2
Points
3
I want to point out (in case you didn't know) that the "attitude indicator" functionality is handled in Orbiter by the Orbit Heads-Up Display.

But, what you have here looks really cool and perhaps a bit more intuitive. I think it will be a lot of help for KSP players who want to learn to use Orbiter. :thumbup:
You're right, it actually took me a while to get accustomed to the orbit HUD after having used a navball for orientation all the time. But I suppose that's just the power of habit.

You can try MultipleVesselsMFD library for this.
Thanks for the link. I'll look through it.
 

asbjos

tuanibrO
Addon Developer
Joined
Jun 22, 2011
Messages
696
Reaction score
259
Points
78
Location
This place called "home".
Why not simply use StoreStatus() and RecallStatus(), instead of being dependent on third party libraries?
 

Enjo

Mostly harmless
Addon Developer
Tutorial Publisher
Donator
Joined
Nov 25, 2007
Messages
1,665
Reaction score
13
Points
38
Location
Germany
Website
www.enderspace.de
Preferred Pronouns
Can't you smell my T levels?
Why not simply use StoreStatus() and RecallStatus(), instead of being dependent on third party libraries?
Because they do more than that.
 

boogabooga

Bug Crusher
Joined
Apr 16, 2011
Messages
2,999
Reaction score
1
Points
0
What is the intended application of ECL and EQU modes?
 

cyph0r

New member
Joined
Feb 10, 2016
Messages
11
Reaction score
2
Points
3
What is the intended application of ECL and EQU modes?
I haven't thought about those two modes in particular, they are mainly there because the ShuttleA's ADI ball has them and I use the same base class.

Confirmed, ball invisible with Orbiter 2016 RC3 + D3D9 24.2
Yes, there seems to be a bug in the code that loads the texture, causing a heap corruption. I'm still trying to figure out why this does not happen with the native renderer...

---------- Post added 08-09-16 at 02:36 AM ---------- Previous post was 08-08-16 at 09:25 PM ----------

The memory issue is fixed now, but it wasn't the cause of the problem.
The ball is rendered using the Windows GDI system, but the D3D9 client in version 24.2 does not seem to support that. In the advanced tab of the D3D9 client it only shows n/a for the sketchpad device. Therefore any device context I retrieve is NULL. I tested the D3D9Client R15 release together with Orbiter 2010, there the sketchpad device shows GDI/DirectX and the ball works.
Is GDI not supported anymore by the D3D9Client? Or is this probably just an issue with this particular build or my installation?
 
Top