Announcement

Collapse
No announcement yet.

Unreal Engine 4.20 Released!

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

    About the new curve atlas:

    The docs state "The Curve Atlas bakes down when it is compiled, which means there is currently no runtime support for changing what is in the atlas or the curve data that is stored in the atlas at runtime. However, you can store a large amount of data in a single Curve Atlas, and use Blueprint to override the curve being sampled from a Material Instance."

    So, how do you override the curve being sampled using BP? Let's say I have a material with a curve atlas parameter filled with two linear color curves, GrayRocks and RedRocks. Default is GrayRocks. I create a MID in BP. How do I (in BP) change the the active curve from GrayRocks to Redrocks?

    Comment


      Originally posted by cyaoeu View Post
      About the new curve atlas:

      The docs state "The Curve Atlas bakes down when it is compiled, which means there is currently no runtime support for changing what is in the atlas or the curve data that is stored in the atlas at runtime. However, you can store a large amount of data in a single Curve Atlas, and use Blueprint to override the curve being sampled from a Material Instance."

      So, how do you override the curve being sampled using BP? Let's say I have a material with a curve atlas parameter filled with two linear color curves, GrayRocks and RedRocks. Default is GrayRocks. I create a MID in BP. How do I (in BP) change the the active curve from GrayRocks to Redrocks?
      Hi cyaoeu!
      To do this, use the Get Curve Position node to get your curve's position in the atlas, then pass that to Set Scalar Parameter on your MID.

      You can see an example setup here:
      https://docs.unrealengine.com/en-us/...sesInMaterials

      Thanks!

      Comment


        Is there an ETA for 4.20.2 hotfix? It's being a pain working with UE-62042. Thanks!

        Comment


          I’ve been having trouble joining sessions through blueprint nodes starting in 4.20 on IOS over WiFi LAN. After successfully joining, the server map doesn’t load. This wasn’t an issue for me in 4.19.

          Comment


            Originally posted by Shadow.Storm View Post

            Hi cyaoeu!
            To do this, use the Get Curve Position node to get your curve's position in the atlas, then pass that to Set Scalar Parameter on your MID.

            You can see an example setup here:
            https://docs.unrealengine.com/en-us/...sesInMaterials

            Thanks!
            Thanks, actually I tried that setup before and it didn't work, tried it again now and got it to work. So I'm guessing Position means y coordinates in the atlas "texture"? "Get Curve Position" sounds a bit weird to me. Especially in the documentation.

            "Accessing Curve Atlases through Blueprint

            In Blueprint, you can set the scalar parameter value on a Dynamic Material Instance using the Get Curve Position node. Get Curve Position takes the Curve Atlas as an input, passes the scalar value to the Set Scalar Parameter Value, and returns a Boolean indicating whether the curve was found in the atlas."


            This didn't make too much sense to me which is why I ended up asking here. I would probably write it like this:

            "Setting the active Curve Atlas Row through Blueprint

            In Blueprint, you can get the position (y coordinates) in the atlas of a specified curve using the Get Curve Position node. Get Curve Position takes the Curve Atlas and In Curve as inputs, outputting a Float of the position value for the curve you specified as the In Curve and a Boolean indicating whether the curve was found in the atlas. You can then use this position value in a Set Scalar Parameter Value node pointing to your CurveAtlasRowParameter name to set the active Curve Atlas Row in a Dynamic Material Instance."


            It also seemed to me like you don't really need the Get Curve Position node too, what's setting the active curve is the scalar in combination with the parameter name for the curve atlas row parameter. For example in a atlas with 8 curves the Get Curve Position node output 0.0625 for the first curve and 0.1875 for the second curve. So maybe something like this:

            0 - initial value (not sure what this means)
            0.0625 curve 1
            0.125 halfway between curve 1 and curve 2
            0.1875 curve 2
            0.25 halfway between curve 2 and curve 3
            and so on. Yes, you can get colors between curves which should probably be stated in the docs somewhere if this is intended behavior and not a bug. If you do so you get (from what I can tell) a lerp of the colors of the closest curves at the specific coordinate value.

            So I guess this would mean the formula for getting the pure curve color position of a curve in an atlas is (1/curves-1/(curves*2))*index or something where index is the index of either a lerped color (between 2 curves) or the curve you specified, where odd numbers are the curve assets and the even numbers are the half points. Maybe.

            Comment


              Originally posted by Neocolis View Post
              In trying to step up to 4.20 from 4.19 we discovered that we can no longer use our custom online subsystem plugin due to changes made in how FUniqueNetIdRepl is serialized with the new encoding scheme.

              When trying to connect client and server we are getting an "Error with encoded type hash" message. Digging into this we found a change in the FUniqueNetIdRepl::NetSerialize method that now uses new methods on the online subsystem utils class to convert a hash value to a subsystem FName however there is no way currently to inject a new subsystem to hash mapping for custom plugins.

              Is this intended behavior, an oversight or are we missing something with how to add a new custom online subsystem plugin since the 4.20 change?

              Thanks
              Having this issue too.
              Going to hack myself in for the moment, but this could kill a lot of marketplace stuff.

              Comment


                Originally posted by cyaoeu View Post

                It also seemed to me like you don't really need the Get Curve Position node too, what's setting the active curve is the scalar in combination with the parameter name for the curve atlas row parameter. For example in a atlas with 8 curves the Get Curve Position node output 0.0625 for the first curve and 0.1875 for the second curve. So maybe something like this:
                Yeah, it is true that you don't need the Get Curve Position node and you could calculate that yourself, but it does add convenience in case you change the size of your atlas or reorder your array of curves - you wouldn't have to come back and redo the math in a bunch of Blueprints.

                Comment


                  n trying to step up to 4.20 from 4.19 we discovered that we can no longer use our custom online subsystem plugin due to changes made in how FUniqueNetIdRepl is serialized with the new encoding scheme.

                  When trying to connect client and server we are getting an "Error with encoded type hash" message. Digging into this we found a change in the FUniqueNetIdRepl::NetSerialize method that now uses new methods on the online subsystem utils class to convert a hash value to a subsystem FName however there is no way currently to inject a new subsystem to hash mapping for custom plugins.

                  Is this intended behavior, an oversight or are we missing something with how to add a new custom online subsystem plugin since the 4.20 change?

                  Thanks
                  Originally posted by edcolmar View Post

                  Seeing the same thing on my side.

                  Anyone have a workaround or fix for this?
                  Is there a workaround for this problem ?

                  Comment


                    Can you guys update the editor on the Unreal Tournament variant to 4.20 as well?
                    Thank you!

                    Comment


                      I am officially impressed! Well done Epic. Well done.

                      Comment


                        Originally posted by Sveitar View Post
                        Is there an ETA for 4.20.2 hotfix? It's being a pain working with UE-62042. Thanks!
                        Either I did something wrong or their fix is not working. I cherry-picked fix commit for engine build and it still doesn't generate project files with enough include directories (for example, things like "Windows\Engine\Intermediate\Build\Win64\UE4Editor\Inc\Engine", "Windows\Engine\Plugins\Online\OnlineSubsystemUtils\Intermediate\Build\Win64\UE4Editor\Inc\OnlineSubsystemUtils" or "..\..\Intermediate\Build\Win64\UE4Editor\Inc\$(ProjectName)" are missing).

                        Does it work for anyone?

                        Comment


                          HLOD gets stuck in an infinite loop with complicated projects. I've tracked it down to here:


                          Code:
                          const AActor* UHLODProxy::FindFirstActor(const ALODActor* LODActor)
                          {
                              auto RecursiveFindFirstActor = [&](const ALODActor* InLODActor)
                              {
                                  const AActor* FirstActor = InLODActor->SubActors.IsValidIndex(0) ? InLODActor->SubActors[0] : nullptr;
                                  while (FirstActor != nullptr && FirstActor->IsA<ALODActor>())
                                  {
                                      const ALODActor* SubLODActor = Cast<ALODActor>(FirstActor);
                                      if (SubLODActor)
                                      {
                                          SubLODActor->SubActors.IsValidIndex(0) ? SubLODActor->SubActors[0] : nullptr;
                                      }
                                      else
                                      {
                                          // Unable to find a valid actor
                                          FirstActor = nullptr;
                                      }
                                  }
                                  return FirstActor;
                              };
                          The body of if (SubLODActor) doesn't actually do anything, guaranteeing an infinite loop if the FirstActor is an ALodActor.

                          It looks like in the body of that if statement it should be looping through all sub ALODActors and a recursive call on each until it gets a non-ALODActor or nullptr.

                          Comment


                            Originally posted by ZX.Diablo View Post

                            Either I did something wrong or their fix is not working. I cherry-picked fix commit for engine build and it still doesn't generate project files with enough include directories (for example, things like "Windows\Engine\Intermediate\Build\Win64\UE4Editor\Inc\Engine", "Windows\Engine\Plugins\Online\OnlineSubsystemUtils\Intermediate\Build\Win64\UE4Editor\Inc\OnlineSubsystemUtils" or "..\..\Intermediate\Build\Win64\UE4Editor\Inc\$(ProjectName)" are missing).

                            Does it work for anyone?
                            Yup, I modified the file manually by copy-pasting the changes from the fix commit and it worked.

                            Comment


                              Originally posted by Altrue View Post

                              Yup, I modified the file manually by copy-pasting the changes from the fix commit and it worked.
                              In general, I'm tired of waiting for more than a year of fixes
                              I studied the problem and made corrections to the UnrealBuildTool source code.
                              CLION 2018.2 works (the assembly does not work) and the latest Visual Studio 2017.
                              With VS Code there are still problems ...
                              Link UnrealBuildToolFix_4.20.1: https://cloud.mail.ru/public/7vhb/1gaTzXWLW (source in the archive).

                              If version 4.20.2 does not fix the generation of project files, I will have to make a large refactoring of UnrealBuildTool and publish it in GitHub

                              Comment


                                Originally posted by CriDos View Post

                                If version 4.20.2 does not fix the generation of project files, I will have to make a large refactoring of UnrealBuildTool and publish it in GitHub
                                That is one of the cool things about having the source code available... Thanks!

                                teak

                                "A little bit of nonsense now and then is cherished by the wisest men..."
                                -- Willy Wonka

                                twitter: @teak421 -- Smooth Zoom Camera Plugin for 4.14+: here.

                                Comment

                                Working...
                                X