Jump to content

[0.25] RasterPropMonitor - putting the A in your IVA (v0.18.3) [8 Oct]


Mihara

Recommended Posts

NEW THREAD, http://forum.kerbalspaceprogram.com/threads/117471-1-0-RasterPropMonitor-still-putting-the-A-in-IVA

A Note on 0.90.0 Compatibility:

In Mihara's absence, MOARdv has kindly recompiled fixed versions of the RasterPropMonitor DLL for KSP 0.90.0 - download links are available here.


This is a plugin initially conceived to handle the internal monitor displays of the ALCOR capsule, with the intent of supplanting MechJeb/Engineer windows when flying from IVA. It evolved to the point when it's an entire kit of tools and widgets for creating advanced IVA props, capable of displaying information in many ways and dragging the kicking and screaming kerbals into the XXI century from the 1930s they seem to be stuck in.

While this mod is mostly intended as an IVA making toolkit for modders, this package shows off some (amusingly, not all) of it's capabilities by completely redoing the instrument placement in all stock capsule interiors, which I'm sure many people will find useful exactly as presented -- consider it an independently useful technology demo, which I'd like to hand over for someone else to run. It's most important function is to be "that mod where RasterPropMonitor.dll comes from" just like the popular Firespitter package is also the source of the Firespitter.dll which is used in lots of other places. If you wish to have RasterPropMonitor in the capsule you made, poke me and I'll help -- though please don't be offended if I'll reply by copypasting from the extensive documentation I wrote specifically for this.

Javascript is disabled. View full album

The core of the plugin is an IVA information display, capable of displaying lots of useful data, (Total number of individual data variables you can display or make props act on is over 150!) as well as a number of outer cameras. All the information pages are completely configurable, pretty much nothing is hardcoded, the plugin can be used to create a wide variety of shapes and sizes of IVA display prop, as well as buttons, switches, gauges, alarms, and there are probably potential uses which I'm simply not seeing. Everything is exhaustively documented, and the system is designed to be flexible and extensible. You can write plugins for it, and in fact, that's how much of it works internally.

Despite glowing comments, the IVAs this package provides are pretty basic, and much more elaborate usages exist.

Notable projects using RasterPropMonitor that you can also play with:

What started as an attempt to help make a lander can that doesn't suck is turning into an industry. Please tell me about your RPM-using IVA so I can add it to this list!

  • Download: From GitHub releases page, from Curse project page.
  • Frequently Asked Questions: Please read.
  • What not to suggest: See PLANS.
  • Installation: Unzip so that the package's GameData matches your GameData, simple. Despite how simple it is, people seem to be getting this wrong, so I'll use big bold letters: THIS MOD IS VERY PICKY ABOUT BEING INSTALLED EXACTLY WHERE IT EXPECTS, everything that is within the GameData directory in the package must end up directly within your GameData directory, and there is nothing I can do about that. WARNING: Installation by overwriting previous versions is NOT guaranteed to work and NOT recommended. If you do that, you're on your own.
  • Source code: GitHub and released under GNU GPLv3. Pull requests welcome. No, seriously.
  • Full documentation: On GitHub in the wiki. It's about as long as the sourcecode, because I like to write detailed manuals.

Extra things:

  • SCANsat natively supports RasterPropMonitor and can display maps of celestial bodies. These are the maps you see on those pictures.
  • VesselView can show a graphical representation of your vessel on your screens.
  • Engine Ignitor has a menu for RPM if you like engines with limited number of ignitions.
  • NavUtilities supports RPM and has a nice ILS/HSI page for use in aircraft.
  • VexcomHUD for RPM, an aftermarket set of HUD bitmaps and an extra HUD for the stock cupola.
  • Better, more advanced menus: Kerbal Space Industries MFD Package has an interface that is more in line with the way real multi-function displays work and is more optimized for actually using it day to day than my own feeble attempt at using my own code. :)
  • Squad Texture Reduction Pack: You don't really want to use it, because Active Texture Reduction does the same in a non-invasive future proof manner, and the texture reduction pack is multiple versions out of date. If you still insist on using it, though, you also need this ModuleManager Patch.
  • Kerbonov Kn-2 cockpit: There's a patch to support it.
  • TouhouTorpedo's MK3 cockpit: This cockpit is not supported in the package itself because it does not have a well-established installation method for modern versions of KSP. There is, however, this ModuleManager patch if you did get it installed.
  • FASA Gemini Pod: It is not directly supported because I don't feel it's appropriate to just go and override what is an extremely detailed replica of historical craft with modern instruments in a package meant for general use. But if you don't care about historical accuracy, MOARdV has made a package for you.
  • Playing first person throughout: There are two plugins that do this sort of thing: FirstPersonEVA and Through the Eyes of a Kerbal

RasterPropMonitor v0.18.3

This is a maintenance release to make RPM work with KSP 0.25 again.

  • Bundled ModuleManager version updated to 2.5.1.
  • Bug where transparent pods would cause spurious configuration error warnings has been fixed.

Edited by B787_300
Moderator Edit to point to new thread
Link to comment
Share on other sites

Brilliant work here, good to see a new way to make those displays.

What do you mean by supporting exactly one camera, though? Most internals have multiple possible camera positions, usually accessed by double-clicking the windows. Is the text rendered in screen-space or via some similar way so that it will be missing or incorrectly projected if you'll look at a display from another camera?

Link to comment
Share on other sites

Looking good, but... the obsessive in me notes that it's not quite lined up with all the other instruments on that console. -_-;;

Because the console itself is kind of crooked and not lined up. Get PartTools 20, load it in Unity and see for yourself.

Patches welcome. :)

Link to comment
Share on other sites

What do you mean by supporting exactly one camera, though? Most internals have multiple possible camera positions, usually accessed by double-clicking the windows. Is the text rendered in screen-space or via some similar way so that it will be missing or incorrectly projected if you'll look at a display from another camera?

No-no-no. External camera. Look closer at the first image in the album... guess I should have included more and better pictures.

Every display page can have an associated named transform. This transform can be located anywhere within the vessel. When the page is activated, this transform will become the location of a camera, which will render into the screen background. You can have as many of those as you can have pages, the (arbitrary) limit on these is 8. (You can have as many individual different prop displays per pod as you like.)

This distribution is more an example than anything else, and I don't have a model with a named transform in it handy, so in the example display here, the name of the transform it looks for is "port". Every stock docking port has one, unfortunately there's no telling which one will be found first. :)

Link to comment
Share on other sites

Here is something I did to the PTK NP. Since I don't have the mesh for this capsule to create the transforms I created 8 unique camera parts and placed them around the outside of the capsule in various places.

Link to comment
Share on other sites

Awesome!

What bothers me with MJ, KER and most addons is that they add behavior windows to display their stuff and this behavior does not really fit the game GUI aesthetics.

I love mods, but I sometimes miss the clean look of a fresh KSP install... :D

Providing data in IVA view is the solution to this problem and reinforces the immersion into the game.

Can't wait to see what modders will do with your work : in my opnion, the only thing that KSP really lacked until now were MFDs as cool as those in found Orbiter Flight Simulator...

Link to comment
Share on other sites

I'm missing something: I tried adding a transform named "port" in both a pod external and an internal model and the screen5 will not show the cam. Also, why does it say "port, 30" for camera 5? If we want multiple cams, do we just add that camera line under each page in that module?

Link to comment
Share on other sites

I'm missing something: I tried adding a transform named "port" in both a pod external and an internal model and the screen5 will not show the cam. Also, why does it say "port, 30" for camera 5? If we want multiple cams, do we just add that camera line under each page in that module?

What do the logs say, and why did you name it 'port'? I only used that in the example prop config because that's a transform name that stock docking ports have. I'm not sure what's happening exactly, but I have a suspicion it's finding something (otherwise there would be a log message that the transform was not found) but that something has a position from which it's not possible to see anything. The transform has to be on the external model, (it can be on any part of the vessel, but the pod is searched first. The search is done again every time you switch pages.) and Z+ will be the direction it will be pointed into.

If you want multiple cams, you add camera1, camera2, etc. The ",30" is the field of view the camera will have. For example, here's a config from an ALCOR screen that I used while testing:


MODULE
{
name = RasterPropMonitorGenerator

refreshRate = 10
refreshDataRate = 10

button1 = buttonR1
page1 = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/landing40x10.txt
camera1 = Ext_B_CamTransform,40


button2 = buttonR2
page2 = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/orbit40x10.txt

button3 = buttonR3
page3 = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/target40x10.txt
camera3 = DockingCamTransform,20

button4 = buttonR4
page4 = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/shipinfo40x10.txt

button5 = buttonR5
page5 = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/Crew40x10.txt

button6 = buttonR6
page6 = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/resources40x10.txt

button7 = buttonR7
page7 = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/misc-1-40x10.txt

button8 = buttonR8
page8 = ASET/ASET_Lander_Cabin01/Props/FlatMon40x10/misc-2-40x10.txt
camera8 = Ext_A_CamTransform,60
}

Link to comment
Share on other sites

I have a transform on my external model set up the way it is in the cfg and it still just shows as black. The color values in the cfg also didn't seem to change anything, is that for the text?

The color values are just the color that is used to wipe the screen before printing it again. They aren't used if the monitor is showing a camera image. If the camera transform is not found, there will be a message in the log.

I'm afraid there's not enough information. Can I see your prop.cfg, your logs, possibly a screenshot of your model hierarchy in Unity?...

Link to comment
Share on other sites

page5 = JSI/RasterPropMonitor/Example/ExampleProp/page5.txt

button5 = buttonR5

camera5 = Camera1

page6 = JSI/RasterPropMonitor/Example/ExampleProp/page6.txt

button6 = buttonR6

camera6 = port

page7 = JSI/RasterPropMonitor/Example/ExampleProp/page7.txt

button7 = buttonR7

page8 = JSI/RasterPropMonitor/Example/ExampleProp/page8.txt

button8 = buttonR8

camera8 = Externalcam,60

}

}

proxy = 0, 0, 0, 0.27, 0.22, 0.02, 0, 0, 1

There's what I put in the cfg file. My cam is just an object named Externalcam on the same layer as my airlock/ladder. When I click any of the buttons on the prop I get this: http://i.imgur.com/QRS0aVj.png (NullReferenceException)

Link to comment
Share on other sites

That looks like the buttons fail somehow... wait.

Does your pod (not the internal space itself, the pod config file) contain


MODULE {
name = JSIInternalPersistence
}

This was the only way I could get selected pages to stick between vessel switching. In theory it is supposed to keep working if the module is not there, but I didn't really test that particular bit. If it doesn't, a null reference exception would get thrown right before a call that actually kickstarts the whole process of searching for the camera.

Link to comment
Share on other sites

Yay! :)

The annoying bit is that I can't seem to actually catch that exception... that is, catch{} fires but the exception propagates up anyway, what's up with that?... :)

EDIT: Fixed, next version will retain functionality if that component is not loaded, as intended.

Edited by Mihara
Link to comment
Share on other sites

CC-BY-NC-SA says yes, with strings attached. I can't just give you a link at the moment, but look it up. The plugin is GPLv3, i.e. "Do whatever, but the source must remain open and available."

Link to comment
Share on other sites

No need for a link, I've ripped it out of the alcor ;).

But I don't even know, if I ever publish my pod^^. Just playing around with iva props.

greetings,

Themorris

EDIT: Just another question, where can I generate the prop config in the part tools, I don't want to type in everything manually :)

Edited by Themorris
Link to comment
Share on other sites

EDIT: Just another question, where can I generate the prop config in the part tools, I don't want to type in everything manually :)

Not one I can answer, I type more or less everything manually. ^^;

Link to comment
Share on other sites

import any of the default internal spaces. You'll see an Internal Space script component on the right side (Inspector window). Click and drag the internal space script from the window onto your game object. Change the values in that window to what you want. Delete the object you imported. When you save to config it'll generate your cfg.

Link to comment
Share on other sites

import any of the default internal spaces. You'll see an Internal Space script component on the right side (Inspector window). Click and drag the internal space script from the window onto your game object. Change the values in that window to what you want. Delete the object you imported. When you save to config it'll generate your cfg.

Thank you very much!

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...