Code Monkey home page Code Monkey logo

kerbal-vr's Introduction

This mod is still in very early development. The primary focus is on flying a ship in IVA and moving around in EVA. As such no other scenes are supported: map mode, VAB, any kind of UI interaction, etc. Keeping that in mind, you are welcome to try it out and report any issues or feedback.

Installation Guide (Start Here): https://github.com/JonnyOThan/Kerbal-VR/wiki/Installation-Guide

How to fly: https://github.com/JonnyOThan/Kerbal-VR/wiki/User-Guide

Please join the discord for updates and discussion: https://discord.gg/vBDzZAq3AF

Demo flight to orbit and back: https://www.twitch.tv/videos/1313229804

Demo mun landing and return: https://www.twitch.tv/videos/1510695670

Note: this is a fork of Kerbal-VR originally created by @Vivero. This version uses Unity's native VR systems to render, which means it generally performs better but doesn't support special effects or UI out of the box. I've also added an extensive interaction system for manipulating switches, buttons, knobs, etc. in IVA.

kerbal-vr's People

Contributors

jonnyothan avatar vivero avatar icecovery avatar jrbudda avatar 89mods avatar

Stargazers

 avatar Kuchiriel avatar Ryder Retzlaff avatar nezbyte avatar Alucard avatar Yakov Shapovalov avatar  avatar Kyle Scher avatar Logan Small avatar Christopher Webb avatar Serhii Muslanov avatar Daniel C avatar Samuel Bubán avatar Grumpyaaa avatar  avatar Solarflame avatar Ryguy6001 avatar  avatar  avatar Frank avatar Strubbelkopp avatar David Findlay avatar JimFyyc avatar bto avatar  avatar  avatar  avatar John Goering avatar  avatar Avangardum avatar  avatar  avatar  avatar Ethan Johnston avatar Jorgrim avatar Alex Vidrine avatar James Simpson avatar  avatar Tom avatar  avatar  avatar  avatar Denis avatar Alexandre BENALI avatar Kaiser-Kharsair avatar  avatar ❄️ avatar Vital avatar Marzooq Ur Rahman avatar  avatar Guillaume Imhoff avatar Dirk Wetzel avatar Todd Hendricks avatar Dustyn Gibb avatar  avatar Michael avatar patrick avatar Daniel Sobrado avatar Alexander Samuelsson avatar Timothy Hagel avatar TheLittleDoctor avatar  avatar Sofie avatar  avatar TechStudent10 avatar  avatar Hwäwöööök avatar Glaydatt avatar  avatar Lluís Gregori Barrera avatar Daniel Neykov avatar  avatar  avatar Arbel Arad avatar  avatar Dylan Praul avatar MUEDSA avatar Rynco Maekawa avatar  avatar  avatar  avatar >>= avatar  avatar Nina Dowland avatar Kermit's Ghost avatar  avatar spigot avatar  avatar  avatar Colton Glick avatar  avatar Kamil Krzysztof Kulach avatar

Watchers

James Cloos avatar  avatar  avatar Dan avatar  avatar  avatar

kerbal-vr's Issues

Hide "self" kerbal

Probably shouldn't render the "self" kerbal when in VR mode. Or at least try to find a way to hide the arms, because it's disorienting seeing two sets of hands.

Camera crash when launching release mode

I was going through a staging process of making sure the mod can be installed from a fresh version of KSP and hit a crash likely caused by some kind of camera parameter being invalid:

33494 Screen position out of view frustum (screen pos 0.000000, 0.000000, 1000000000.000000) (Camera rect 0 0 1964 1980) 
33495 (Filename:  Line: 3488)
33496 
33497 Screen position out of view frustum (screen pos 1964.000000, 0.000000, 1000000000.000000) (Camera rect 0 0 1964 1980) 
33498 (Filename:  Line: 3488)
33499 
33500 Screen position out of view frustum (screen pos 0.000000, 0.000000, 1000000000.000000) (Camera rect 0 0 1964 1980) 
33501 (Filename:  Line: 3488)
33502 
33503 Screen position out of view frustum (screen pos 1964.000000, 0.000000, 1000000000.000000) (Camera rect 0 0 1964 1980) 
33504 (Filename:  Line: 3488)

View inside the headset is very jittery

This sort of seems like it could be caused by not having enough filtering on the head position, but I'm a bit puzzled by this because the VR-View from SteamVR doesn't seem as bad. In the original user guide, it suggested:

Something that seemed to help a lot was turning on Legacy Reprojection Mode in the SteamVR per-application settings for Kerbal Space Program.

However the newer versions of SteamVR don't have this option. There seems to be some API calls that can force it on, but it's not clear if that's the best fix or if we should be doing something differently in the first place.

Tune VRFlightstick response

The flightstick is incredibly sensitive. It probably needs:
-deadzones along each axis
-damping
-non-linear mapping curve

Implement covered switches

Might be trivial after #23 , but some props are actually covered switches instead of buttons. The extra challenge here will be to make sure that closing the cover doesn't flip the switch.

Deal with builtin joystick/throttle in seats

The seat prop in the IVA already has joystick and throttle parts that the kerbal’s hands rest on. Figure out a path forward here:
Can we use those props directly?
Can we remove them and replace with some other prop that can move?
Do we have to remove the seat entirely?

Implement option to switch VRFlightstick between pitch/yaw and pitch/roll

Not really sure what the best method is here. Planes should default to pitch/roll and rockets should default to pitch/yaw - but it can't really be specified at the prop or internal cfg level because you could use the same parts in each kind of craft. It could also be initialized based on what the editor type of the craft was. And ultimately there should probably be some way to switch it mid-flight. Perhaps that's pressing a button while grabbing the stick, or maybe it's a separate button in the IVA entirely.

Implement knob turning with grab and rotate

The knob props like the thrust limiter should respond to some kind of grab gesture and rotating the controller.

  • add pinch input actions
  • detect grabbing
  • twisting changes the transform
  • clamp rotation to min/max
  • feed data back to RPM
  • consume current data from RPM when not grabbed

Implement switch flicking with gestures

The props that are implemented as switches should respond to flicking them up or down with your finger

  • Get switch movement working well
  • Get VR -> RPM data flow working
  • Get RPM -> VR data flow working

Implement button pushing with gestures

Currently, you have to have the fingertip of the glove on a button collider and then push a button on the controller. The skinning of the hand makes this a bit difficult, because whether or not you are touching the trigger moves your fingertip pretty far.

The ISS app has a really compelling tablet interface where you can just use your fingertip to tap on a screen. It would be much better to do something like that.

Implement thumbstick attitude controls

The VR flightstick might never feel great (it's really hard to activate just a single axis unlike with a keyboard). It's probably worth adding support for using the thumbsticks for attitude control, at least as an option. It could be always available, or perhaps only when grabbing the VR flightstick, etc.

I'd imagine that the same considerations for swapping yaw/roll for the VR flight stick would also apply to the thumbsticks, and whatever axis mapped to twisting the flightstick would end up on the horizontal axis of the left thumbstick.

Implement covered buttons

Some of the ASET pushbutton props work by placing a collider on the cover so that it intercepts mouse clicks. This obviously doesn't work in VR, because your finger can go through the cover and push the switch below. Need to combine the "switch flicking" behavior for the cover with the button, and make sure the button can't be pushed while the cover is closed.

Add recovery prop to all IVAs

  • mk1Pod

  • mk1LanderCan

  • mk1-3Pod

  • Cupola

  • mk2LanderCan

  • mk1Cockpit

  • mk1Inline

  • mk2Cockpit

  • mk2Inline

  • mk3Cockpit

  • KV1

  • KV2

  • KV3

  • MEM

  • Mk2Pod

  • ProbeControlRoom

Implement thumb buttons on flight joystick

The joystick on the Seat_Pilot prop has a couple red buttons on top of it. It would be awesome to hook these up to something (action groups maybe?).

It doesn't seem like there is a trigger on the joystick, but we could definitely add one.

Figure out controls for IVAs with alternate seats

Some of the IVAs (mk1 cockpit maybe?) have a different kind of seat that doesn’t have the flightstick and throttle separated into their own meshes. Need to find a way to make these functional.

Edit the model at runtime?
Remove the seat completely and replace with something else?

DONE:
mk1 command pod
mk1 lander can
mk1-3 command pod
mk3 cockpit
mk2 lander can
cupola
mk1 cockpit
mk1 inline cockpit
mk2 cockpit
mk2 inline
mk2 command pod

TO CHECK:
Probe control room (probably needs flightstick added)

NEEDS WORK (throttle levers are rotated):
kv1
kv2
kv3
mem

Fix aero effect rendering

The mach and heating effects seem to be rendered at a point between the ship and the camera. Could be a scaling problem, or maybe this is just a trick they used to make sure it always appears in front of the ship.

This is fairly low priority since it's mainly only an issue outside of IVA.

Hands don't render when swapping IVA camera into the first seat in a part

I made a craft which was a cupola on top of a lander can on top of a mk3 cockpit. I filled it with kerbals. When swapping the camera between the different kerbals, it would sometimes be turned at weird angles or the hands would not render (but they're still functional and can grab things).

-Need to reset the camera transform when swapping seats?
-Figure out why the hands aren't rendering

VRFlightstick doesn't work when SAS is enabled

SAS seems to overwrite the input that it's sending, need to figure out how the stock game allows that.

Note that the VRFlightstick does work when SAS is off.

maybe look at how KOS does cooked steering?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.