Enough digression. Not much to show yet as I've only spent an hour or two on it this morning, I hadn't put in the VR cockpit data for the TSD buttons so went and put that data in. Had some color issues down to a mix of LE and OpenGL and sorted out the MPD scale for rendering the currently loaded nav map image.
TSD stands for Tactical Situation Display
It is the most complicated system in the helicopter. Which I will strip down to the bone for the first release otherwise I'll be at it for months. The TSD presents a 'Gods eye' view of your helicopter and your environment. Downloaded target information, friendly unit sightings, route navigation and more is presented here. It is a moving map system that can be frozen, panned and scaled.
I need to slim it down into something manageable. Also there are many functions that are desirable to use in the command HQ tent planner and also other helos in future.
Our TSD will feature
- Fire zones (aka PFZs, old school but everyone will want them)
- Route editing
- Threat, target and hazard objects
- Nav and Attack mode (PHASE)
- Freeze, panning, zoom
- Crewman cursor acquisition, click on map and point will be made virtual in the helmet display.
So there's a few things to do but also shared with the ground planning system on the HQ tent computer.
For the base map, it's using the TTerrain() object on the loaded terrain entity (I needed to cast it to get access to the height and normal map data otherwise it's considered a TEntity). A shader converts the normal map into an intensity multiplier ( float intensity = dot( normal , lightdir ) ) for the colourmap, multiply the diffuse and intensity and voila you get a shaded relief map just like the one in the Leadwerks editor (except I don't need the realtime light position and colour that the editor uses).
To this I'll add a colour lookup table from the heightmap and possible some contour lines. I've not used an "lut" function (look up table) in a shader yet so it will be a fun little exercise. Contour lines could be done by setting output colour if the heightmap value is a multiple of 10 (meters) or whatever value I pass to the shader. This just colours the pixel if the value is in that multiple, steep terrain might bypass that value so results will be a bit patchy depending on the source data. I'll look into a proper contour function.
Keep in mind the heightmap in terrain doesn't have a flipped y axis.
* edit *
Elevation bands added to map shader, can be turned on/off. Should be easy to throw in current altitude and have all points above in red. Probably tone down the shading a bit. Need to add masking to my MPD curvedbox function.
* update 2*
Need to clean up the vector font a bit to make it more crisp (tidy work), looks fine on a laptop screen though. I added the backfill to the MPD drawing functions, added a basic waypoint display and most of the buttons I'm going to use except for the scale selection (top right).
This is the NAV mode (toggle between NAV and Combat mode using the PHASE button).
Buttons on right are: CTR, FRZ, CAQ
These are CTR=CENTRE to toggle map centering, otherwise it rotates around your aircraft in the bottom 3rd.
FRZ to hold the map position update so you can pan (when I add that).
CAQ to take the next "MPD ACTION" input and set that as a Pilot or CPG marker the crew can use to say where to go or visualise a situation. The point will be displayed in the HMD virtually.
Buttons at the bottom are: PHASE, BAM, MAP, RTE and POINT
PHASE cycles the TSD modes
BAM is for input of PFZs/NFZs
MAP is for changing of map types (user maps and contour/elevation modes)
RTE is route selection (editing, waypoints since we only support one route)
POINT to allow crewmembers to insert/edit symbols into the nav system (control points, hazards)
A function to send aircraft nav data to other flights and HQ will be provided.