Announcement

Collapse
No announcement yet.

AeroComp - Modular Aerodynamics Simulation Components

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    [RELEASED] AeroComp - Modular Aerodynamics Simulation Components



    ----------------------------
    NOW ON MARKETPLACE
    ----------------------------


    Hey all,
    Above is a reveal video for AeroComp, a set of modular actor components that lets you create wide range of aircraft and other objects that have aerodynamic behavior/traits.
    This is something I have been working on/off for past several months (I remember starting it when 4.7 was fresh out).
    AeroComp is the result of months of research into simulating Aerodynamics in UE4. With the advent of Actor Components it became possible to detach reusable behavior and functionality from Blueprints and encapsulate it in Actor Components. AeroComp is a collection of such Actor Components, each of which enables specific Aerodynamic phenomena simulation using PhysX . While creating these components the emphasis was made to make the components reusable for all scenarios, and as the result of such reusability, the same set of components enables their user to simulate broad range of flying bodies both Fixed-wing (Airplanes) and Rotary-wing(Helicopters). Come to think of it there is quite a lot more you can simulate with these components, be that a hot air balloon, a zeppelin or an arrow. Multiple simulation modes on specific components cater to wide range of uses. For example Linear simulation mode is useful for quickly setting up he component by inputting several values, while Curve simulation mode provides more advanced functionality and a finer grain of control where realism is most needed. Components come bundled with other goodies such as utility function library to calculate several aerodynamic variables and sample curves to use with curve simulation modes.

    TLDR: These component set enables you to create cool flying things by just drag/dropping them and punching in some numbers ))
    Link to a playable demo:


    Thanks to everyone for your feedback and interest.


    Status:
    *[11/30/2015] Submitted to marketplace
    *[12/6/2015] Preparing assets for Epic QA
    *[1/10/2016] Submitted to Epic QA (I know - took me a while )
    *[1/27/2016] Submission passed Epic QA
    *[3/10/2016] Release date set to March 16, 2016
    *[3/16/2016] Released on Marketplace (first buyer rennsix - what have I done to deserve such a supportive person?)
    *[4/1/2016] Update for 4.11 submitted
    *[6/2/2016] Verified 4.12 Compatibility, all good! Notified Epic



    AeroComp Changelog
    * [4/1/2015][Done] Submitted updated files for 4.11: no changes to components, minor change to demo asset material. 4.11 introduced a bug with springArm, you can read about it in post-realease notes.[UE-28753]
    * [4/5/2015][Done] 4.11 update live on Marketplace
    * [6/3/2016][Done] 4.12 version live on Marketplace



    Demo changelog and special thanks:
    * [11/30/2015][Done] inverted elevator visuals for correct behavior. Special thanks: arbopa and mookiexl
    * [11/30/2015][Done] Adding gamepad inputs.[LTrigger/RTrigger for Throttle, Left Thumbstick for pitch and roll. I apologize beforehand if they dont work as intended, unfortunately I do not own a gamepad and was unable to test. Post if it doesn't behave as it should and/or request more bindings, I'll be happy to add] Special thanks: mookiexl and rennsix
    * [12/2/2015][Done] Increased pitch and roll sensitivity for planes. Increased engine power a bit. Special thanks: TooManyfps
    * [12/3/2015][Done] Fixed physics setup in project, this caused aircraft controls to vary with FPS. Special thanks: Mookiexl, BoredEngineer, rennsix and anyone who commented on controls being a bit stiff
    * [12/3/2015][Done] Black Hawk's stabilization now also does an "altitude hold", should make the Black Hawk easier to fly. Toggle it off (G key) if you want a challenge. Special thanks: rennsix
    * [12/3/2015][Done] Additional gamepad inputs.[Right ThumbStick X-axis for yaw(planes)/roll(heli), and Y-axis for throttle. I apologize beforehand if they dont work as intended, unfortunately I do not own a gamepad and was unable to test. Post if it doesn't behave as it should and/or request more bindings, I'll be happy to add] Special thanks: rennsix
    * [12/6/2015][Done] Tweaked jet control sensitivity (was too much). Inverted Right thumbstick Y axis Throttle control. Up for more, down for less.
    * [4/1/2016][WIP] Parachute being added to demo. Will be transfered to marketplace content once matured. Special thanks: Brian Lancaster for inquiry



    ATTENTION BUYERS(POST-RELEASE NOTES):
    1. While I have submitted DefaultInput.ini file that was supposed to be located in Config folder, the Aerocomp does not include it when you download it though marketplace. The reason for this is that Aerocomp (like many other assets on Marketplace) is supposed to be an addition to your project, not a standalone project by itself. Therefore in order to NOT override your DefaultInput.ini config file (that you could have spent considerable amount of time configuring), the project does not include it at download time. The downside to that is that you don't have some controls mapped on example aircraft. Solution: A)copy below code to your DefaultInput.ini config file OR B)rename/modify/replace the input events/names in example aircraft to your liking to be able to test-fly included example aircraft.

      Code:
      [/Script/Engine.InputSettings]
      -AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
      -AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
      -AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
      -AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
      -AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
      -AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
      +AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
      +AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
      +AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
      +AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False))
      +AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
      +AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False))
      bAltEnterTogglesFullscreen=True
      bUseMouseForTouch=False
      bEnableMouseSmoothing=True
      bEnableFOVScaling=True
      FOVScale=0.011110
      DoubleClickTime=0.200000
      -ActionMappings=(ActionName="Camera toggle",Key=C,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      -ActionMappings=(ActionName="Camera toggle",Key=Gamepad_DPad_Up,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      -ActionMappings=(ActionName="Camera toggle",Key=Gamepad_DPad_Down,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      -ActionMappings=(ActionName="Camera toggle",Key=Gamepad_FaceButton_Top,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      -ActionMappings=(ActionName="Restart",Key=R,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      -ActionMappings=(ActionName="Restart",Key=Gamepad_FaceButton_Right,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      -ActionMappings=(ActionName="Camera toggle",Key=Gamepad_Special_Left,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      -ActionMappings=(ActionName="Fire",Key=LeftMouseButton,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      -ActionMappings=(ActionName="Jump",Key=SpaceBar,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      -ActionMappings=(ActionName="ControlPawn",Key=F,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      -ActionMappings=(ActionName="SpawnActor",Key=Enter,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      -ActionMappings=(ActionName="Crouch",Key=LeftControl,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      +ActionMappings=(ActionName="Jump",Key=SpaceBar,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      +ActionMappings=(ActionName="Jump",Key=Gamepad_FaceButton_Bottom,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      +ActionMappings=(ActionName="Fire",Key=LeftMouseButton,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      +ActionMappings=(ActionName="Fire",Key=Gamepad_RightTrigger,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      +ActionMappings=(ActionName="Camera toggle",Key=C,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      +ActionMappings=(ActionName="ControlPawn",Key=F,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      +ActionMappings=(ActionName="Crouch",Key=C,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      +ActionMappings=(ActionName="gear/stab",Key=G,bShift=False,bCtrl=False,bAlt=False,bCmd=False)
      -AxisMappings=(AxisName="MoveForward",Key=W,Scale=1.000000)
      -AxisMappings=(AxisName="MoveForward",Key=S,Scale=-1.000000)
      -AxisMappings=(AxisName="MoveForward",Key=Up,Scale=1.000000)
      -AxisMappings=(AxisName="MoveForward",Key=Down,Scale=-1.000000)
      -AxisMappings=(AxisName="MoveRight",Key=A,Scale=-1.000000)
      -AxisMappings=(AxisName="MoveRight",Key=D,Scale=1.000000)
      -AxisMappings=(AxisName="MoveRight",Key=Gamepad_LeftX,Scale=1.000000)
      -AxisMappings=(AxisName="MoveUp",Key=Gamepad_LeftThumbstick,Scale=1.000000)
      -AxisMappings=(AxisName="MoveUp",Key=Gamepad_RightThumbstick,Scale=-1.000000)
      -AxisMappings=(AxisName="MoveUp",Key=Gamepad_FaceButton_Bottom,Scale=1.000000)
      -AxisMappings=(AxisName="MoveUp",Key=LeftControl,Scale=-1.000000)
      -AxisMappings=(AxisName="MoveUp",Key=SpaceBar,Scale=1.000000)
      -AxisMappings=(AxisName="MoveUp",Key=C,Scale=-1.000000)
      -AxisMappings=(AxisName="Turn",Key=MouseX,Scale=1.000000)
      -AxisMappings=(AxisName="Turn",Key=Left,Scale=-1.000000)
      -AxisMappings=(AxisName="Turn",Key=Right,Scale=1.000000)
      -AxisMappings=(AxisName="LookUp",Key=Gamepad_RightY,Scale=1.000000)
      -AxisMappings=(AxisName="LookUp",Key=MouseY,Scale=-1.000000)
      -AxisMappings=(AxisName="YawRight",Key=E,Scale=1.000000)
      -AxisMappings=(AxisName="YawRight",Key=Q,Scale=-1.000000)
      +AxisMappings=(AxisName="MoveForward",Key=W,Scale=1.000000)
      +AxisMappings=(AxisName="MoveForward",Key=S,Scale=-1.000000)
      +AxisMappings=(AxisName="MoveForward",Key=Up,Scale=1.000000)
      +AxisMappings=(AxisName="MoveForward",Key=Down,Scale=-1.000000)
      +AxisMappings=(AxisName="MoveForward",Key=Gamepad_LeftY,Scale=1.000000)
      +AxisMappings=(AxisName="MoveRight",Key=A,Scale=-1.000000)
      +AxisMappings=(AxisName="MoveRight",Key=D,Scale=1.000000)
      +AxisMappings=(AxisName="MoveRight",Key=Gamepad_LeftX,Scale=1.000000)
      +AxisMappings=(AxisName="TurnRate",Key=Gamepad_RightX,Scale=1.000000)
      +AxisMappings=(AxisName="TurnRate",Key=Left,Scale=-1.000000)
      +AxisMappings=(AxisName="TurnRate",Key=Right,Scale=1.000000)
      +AxisMappings=(AxisName="Turn",Key=MouseX,Scale=1.000000)
      +AxisMappings=(AxisName="LookUpRate",Key=Gamepad_RightY,Scale=1.000000)
      +AxisMappings=(AxisName="LookUp",Key=MouseY,Scale=-1.000000)
      +AxisMappings=(AxisName="YawRight",Key=E,Scale=1.000000)
      +AxisMappings=(AxisName="YawRight",Key=Q,Scale=-1.000000)
      +AxisMappings=(AxisName="Throttle",Key=LeftShift,Scale=1.000000)
      +AxisMappings=(AxisName="Throttle",Key=LeftControl,Scale=-1.000000)
      +AxisMappings=(AxisName="Throttle",Key=Gamepad_LeftTrigger,Scale=-1.000000)
      +AxisMappings=(AxisName="Throttle",Key=Gamepad_RightTrigger,Scale=1.000000)
      +AxisMappings=(AxisName="YawRight",Key=Gamepad_RightX,Scale=1.000000)
      +AxisMappings=(AxisName="Throttle",Key=Gamepad_RightY,Scale=-1.000000)
      bAlwaysShowTouchInterface=False
      bShowConsoleOnFourFingerTap=True
      DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks
      ConsoleKey=None
      -ConsoleKeys=Tilde
      +ConsoleKeys=Tilde
    2. Based on the logic above, your download probably does not contain DefaultEngine.ini config file either. The only relevant section of that ini is Engine.PhysicsSettings section. Aerocomp is using built in physics system. This system may get impacted by variable FPS. In order to make results replicate on various FPS the project should have physics sub-step enabled. You may choose to do that on your own terms OR copy below code and replace relevant section in your own DefaultEngine.ini
      Code:
      [/Script/Engine.PhysicsSettings]
      DefaultGravityZ=-980.000000
      DefaultTerminalVelocity=4000.000000
      DefaultFluidFriction=0.300000
      RagdollAggregateThreshold=4
      TriangleMeshTriangleMinAreaThreshold=5.000000
      bEnableAsyncScene=False
      bEnable2DPhysics=False
      LockedAxis=None
      FrictionCombineMode=Average
      MaxDepenetrationVelocity=0.000000
      bSimulateSkeletalMeshOnDedicatedServer=True
      MaxPhysicsDeltaTime=0.200000
      bSubstepping=True
      bSubsteppingAsync=False
      MaxSubstepDeltaTime=0.001600
      MaxSubsteps=12
      SyncSceneSmoothingFactor=0.330000
      AsyncSceneSmoothingFactor=0.990000
      InitialAverageFrameRate=0.030000
    3. DefaultInput and DefaultEngine ini files can now be found in 4.11 compatible version under ConfigINI folder
    4. There is a bug with SpringArm that I reported on AnswerHub and this thread. See either for details. I decided to leave the the SpringArm in, hoping that the bug will be fixed soon. (EDIT: SHOULD BE FIXED NOW)
    66
    29.99
    56.06%
    37
    49.99
    25.76%
    17
    74.99
    7.58%
    5
    99.99
    4.55%
    3
    149.99
    6.06%
    4
    Last edited by Irakli; 08-05-2016, 05:44 AM.


    #2
    Extremely impressive stuff Irakli!! Count me as supremely interested

    Comment


      #3
      Sounds cool! I see that you have drag and lift as separate components. Which model are you using? How would you simulate hot air balloon using them?
      Youtube Channel

      Comment


        #4
        Wow, that's really cool! As an aside, I love the trailer music, what track it that?
        Trevor Lee

        Comment


          #5
          Originally posted by BTLRoach View Post
          Extremely impressive stuff Irakli!! Count me as supremely interested
          Thanks, it really means a lot!

          Originally posted by BoredEngineer View Post
          Sounds cool! I see that you have drag and lift as separate components. Which model are you using? How would you simulate hot air balloon using them?
          Lift component has an editable input/variable called Constant Lift. This is specifically for cases such as a hot air balloon or zeppelin. There is also a boolean variable called isLiftLocalSpace, this governs whether the lift should be applied in objects local space (for aircraft wing for example) or in global space (such as hot air balloon that does not care about object's local space and always pulls "up"). The lift vector is also configurable.
          As for drag, it lets you configure how drag is generated based on velocity and AOA. Obviously hot air balloon's main drag would be coming from Form drag, which is a separate portion in the component. So you'd put AOA drag to None or Linear and give it a very small value, and put Form drag to Linear or Curve and give it a larger one.

          Originally posted by Hyperloop View Post
          Wow, that's really cool! As an aside, I love the trailer music, what track it that?
          Thanks for you feedback! The music in trailer is Audiomachine - Breath and Life.

          Comment


            #6
            Shoutout to mookiexl's project https://forums.unrealengine.com/show...one-interested
            Great guy, enjoyed talking to him. We are currently exploring an effort to make our projects compliment each other in terms of filling a specific niche

            Comment


              #7
              Do you have something to prove that it is a realistic flight behavior? Something that demonstrates the physics nicely?
              All I just saw was a video suggesting that god just created a new world
              And a plane gliding as straight as it gets, which could be powered by the simpliest fake flight model under the hood.

              Comment


                #8
                Originally posted by TooManyfps View Post
                Do you have something to prove that it is a realistic flight behavior? Something that demonstrates the physics nicely?
                All I just saw was a video suggesting that god just created a new world
                And a plane gliding as straight as it gets, which could be powered by the simpliest fake flight model under the hood.
                I have provided a download link for the demo, you can fly the same exact aircraft and see how it works yourself.
                Props for suggesting someone would create "the simpliest fake flight model " and try to sneak it past Epic

                Edit: I will make the download link stand out a bit more

                Comment


                  #9
                  elevator movement on jet is backwards.
                  Acclivity Game Studios. Making a BP FPS, Tutorial Series on Blog : On Unreal Wiki : Twitch

                  Comment


                    #10
                    Originally posted by arbopa View Post
                    elevator movement on jet is backwards.
                    Thanks, I'll fix that right away

                    Comment


                      #11
                      Haha, no you got that the wrong way...no sneaking past anyone.
                      I just dl'ed and tried, but got this error with the prerequisites.
                      https://forums.unrealengine.com/show...043#post429043

                      Comment


                        #12
                        Originally posted by TooManyfps View Post
                        Haha, no you got that the wrong way...no sneaking past anyone.
                        I just dl'ed and tried, but got this error with the prerequisites.
                        https://forums.unrealengine.com/show...043#post429043
                        I was just kidding about it

                        Thanks for that error report, the prerequisites are supposed to be bundled with the compiled project and install if needed. I guess some of them are not compatible with win8? Epic can definitely use that report to fix it.

                        Comment


                          #13
                          If this comes with a hang glider example it'll be a must buy for me!
                          Storyteller - An immersive VR audiobook player

                          Dungeon Survival - WIP First person dungeon crawler with a focus on survival and environmental gameplay ala roguelikes

                          Comment


                            #14
                            Nice! Can't wait to see this in the marketplace so I can make my 'fake' aircraft 'real'
                            Colin M. Croft
                            President
                            Croft Interactive Inc.

                            Comment


                              #15
                              Love it. I attempted something like this a while back but never got it working quite right. Will definitely buy as soon as its available.

                              Check out my discord -> https://discord.gg/kQdVwJ3

                              Follow us on twitter to get updates on new products and special offers -> https://twitter.com/BlackFangTech

                              Black Fang Technologies' products -> https://www.unrealengine.com/marketp...20Technologies

                              Comment

                              Working...
                              X