Forums

Help › Forums

Re: How do I change my avatar to a left handed?

rated by 0 users
Sun, Feb 6 2011 11:48 AM (9 replies)
  • AlexJS
    1 Posts
    Thu, Feb 3 2011 4:06 PM

    How do I change my avatar to a lefty?

  • Boomerboy44
    1,514 Posts
    Thu, Feb 3 2011 7:13 PM

    Smack him with a 4 iron....LMAO!!!

  • danohi50
    1,020 Posts
    Fri, Feb 4 2011 2:00 AM

    Ther currently is no left handed avitars..Stand in line.

  • CharlemagneRH
    1,054 Posts
    Fri, Feb 4 2011 5:19 AM

    Turn your monitor around and put a mirror on the wall.

  • danohi50
    1,020 Posts
    Fri, Feb 4 2011 5:39 AM

    Best smarty pants answer yet to date.

  • EK4X4
    21 Posts
    Fri, Feb 4 2011 7:04 AM

    Since all the smart azzes will come out and give you their comedic answers, I saw an explanation many moons ago where it would take the WGT programmers infinite hours and mucho dinero to do this. I dont think I will see it in my life-time. but my friend Dano will tell you that since I am 85 years old, i dont have much time left in my life. LOL. You want a left handed avatar, go play Links, which i played for 13 years before playing WGT, otherwise I hope you are one young person, with lots of money to spend on WGT. Then you may see a left handed avatar in your life-time. In the meantime, enjoy the game as is.

  • CharlemagneRH
    1,054 Posts
    Fri, Feb 4 2011 11:25 AM

    EK4X4:
    I saw an explanation many moons ago where it would take the WGT programmers infinite hours and mucho dinero to do this.

    Nope!

    It is as simple as I described.  All WGT has to do is flip the avatar horizontally.

  • Switz71
    278 Posts
    Fri, Feb 4 2011 12:02 PM

    WGTniv:

    Hey everybody,

    We do hear you lefties on this matter, but there is a technical hurdle we must overcome in order to be able to do it.  Unfortunately, it's not a simple matter of reversing the Avatar because there are other parts of the avatar that you may not have noticed before.

    For example, if knock your drive into some brush on Bethpage you may notice some "extra" grass around your feet. That's called a stencil. We use the stencil to make your avatar look like he's standing in the grass rather than on top of it.  The stencils we have created are designed to interact with the ground surface from the perspective of a right handed player, so the extra "grass" is displayed (appropriately) at their feet. 

    Each and every hole is thoroughly mapped so that the right stencil is used in the right places.   The trouble with mirroring really becomes visible in cases where the avatar would be standing in the fairway (on the far right side) and the ball is in the rough.  Those lies/stencils are all mapped specifically for right-handers so that (in this case) no stencil is drawn at your feet because your avatar is standing in the fairway.  The exact opposite occurs on the left side of the fairway where your avatar may be standing in brush instead, but the ball lies in the fairway.  Even though the ball is in the fairway, the avatar is standing in deep grass and a stencil is used where the avatar itself is standing.  In this case, if the avatar was left handed and in the right hand rough you'd see him standing in the rough, but the rough stencil would be basically be growing out of the fairway (where a righty would normally stand).  Obviously that's not appropriate nor desired. =)

    Along with creating left handed avatars we will need to remap the stencils for lefties on every hole to avoid those odd situations I described above.  On top of all of this we will still need to rework the avatar animations, the club animations (all clubs are drawn right handed at the moment) and we also must consider whether or not we would need to completely reverse the GUI itself to provide a right-to-left meter/interface instead of a left-to-right meter/interface.

    We do plan to implement this feature eventually, but this should help you guys gain a little understanding about the process and see that there's a little bit more than meets the eye here.

  • CharlemagneRH
    1,054 Posts
    Fri, Feb 4 2011 9:14 PM

    Interesting, but it's not a legit excuse.

    First, there is the issue of terrain-type detection, which is basically like this:

    FFFFFRRRRRR
    FF(P)F(B)RRRR
    FFFFFRRRRRR

    F = fairway
    R= rough
    (P) = right-handed player
    (B) = ball

    Here, clearly, a right-handed player would be standing in the fairway, and if left-handed avatars (LHA) were made, the LHA.would be standing to the right of the ball, in the rough.

    If the stencil map is set up in such a way that (P) is sent into a function to return the proper stencil type (rough, weeds, sand, etc.), then that could easily be solved by adding a parameter to the function that would cause the the (P)->(B) translation to be multiplied by -1, at which point (P) would be shifted to the right of the ball, rather than the left.

    If no such translation occurs, and it is already baked into a stencil map that uses only the ball's position, then it's still easy to fake this and get the same result:

    True terrain:

    FFFFFRRRRRR
    FF(P)F(B)RRRR
    FFFFFRRRRRR

    Stencil map (in color; letters = true terrain):

    FFFFFRRRRRR
    FF(P)F(B)RRRR
    FFFFFRRRRRR

    (Any ball position in green will automatically send back a fairway terrain-type because, while the ball may be in the rough, the player will still be in the fairway; similarly, any ball position in black will send back a terrain-type of rough since the player will be in the rough.)

    FFFFFRRRRRR
    FF(P)F(B)RRRR
    FFFFFRRRRRR

    Here, if the avatar is left-handed, it would pass parameters to the stencil's terrain-type acquisition function (see note below) that would trick it into believing that the ball was at the position of the blue R, and the player was at the position of the red R.  This would trick it into returning the terrain-type at the red R, which is where an LHA would stand -- in the rough.

    Note: For future reference, we will call the terrain acquisition function "stencilTerrainAcquisition," and here's an example prototype:

    enum TERRAIN_TYPE_ { "fairway", "rough", "deep rough", "rough1", "rough2", "weeds", "light fescue", "fescue", "sand", "mulch" }

    TERRAIN_TYPE_ stencilTerrainAcquiquisition(COORDS_ coordsBall);

     

     

    So, now, let's assume that the terrain-type of the red R's location has been correctly detected.  There are still other issues to take care of: (1) the stencil is not symmetrical, so it would need to be flipped horizontally, and (2) the stencil placement, as WGTniv has said, is not currently being placed in the correct position.

    Step 1: Flip the stencil.

    Flip all of the stencils and save them under similar file names.  For example, if the rough's stencil is named rough_stencil01.png, then it could be flipped, and the flipped copy could be saved as rough_stencil01L.png.  The program would then decide which stencil to load:

    switch (stencilTerrain) {
    case "rough":
    if (player.handed == "right") { stencil_file = rough_stencil01.png; }
      else { stencil_file = rough_stencil01L.png; }
    break;
    case "weeds":
    ...
    }

    Now the terrain-type at the players location has been detected correctly, and it has been flipped.  The only thing that remains is actually drawing it at the correct location. 

    Again, the multiplication by -1 trick is an easy way to do this.  How does the WGT client currently know where to draw the stencil on the screen?  I suspect it works from the ball's position, then moves a certain distance to the left and draws the stencil.  This distance could be multiplied by -1, turning it from a "left of the ball" translation to a "right of the ball" translation.

    Let's take a worst-case scenario of employing this approach and assume that WGT moves the ball backward/forward in the avatar's stance.  I'm not sure it actually does this, but again, this is a worst-case scenario.

    F(L.)FFFRRRRR
    F(R)F(B)R(R)RR
    FFFFFFFR(L)RR

    If the translation from (B) to (P) not only moves the stencil to the left, but also forward, then multiplying by -1 would move the stencil to the right and backward... oops!

    The fix for this is separating the horizontal and depth components of the translation.  If the translation T is 2 ft to the left and 1 forward, then Tx = 2 and Tz = 1.  When multiplying by -1, we would leave Tz unaffected and only multiply Tx by -1, and the modification of the translation for left-handed players would be:

    Tx = 2;
    Tz = 1;
    if (player.handed = "left") { Tx = Tx * -1; }

    Yielding the result, Tx=-2, Tz = 1, which are the desired values.

     

    Let's also look at another worst-case scenario.  What if the terrain is like this?

    ..........................._(L)___
    ........................../
    __(R)___o__/

    In other words, a right-handed player would be level with the ball, but a left-handed player would be elevated above the ball.  This is a little tricky to fix, but still doable.  We'll have to go back to our terrain-acquistion algorithm, of which I showed two possible implementations, but we'll stick with our "stencilTerrainAcquiquisition" function: TERRAIN_TYPE_ stencilTerrainAcquiquisition(COORDS_ coordsBall);

    This would need to be changed in order to also fetch the y displacement of the stencil:

    TERRAIN_TYPE_ stencilTerrainAcquiquisition(COORDS_ coordsBall, int& yDisplacement);

    When calling the function, we would not only fetch the terrain type, but since yDisplacement is sent by reference, we could also have any modification of its value persist outside of the stencilTerrainAcquiquisition function, e.g.:

    int Ty=0;
    TERRAIN_TYPE_ terrainStencil;
    terrainStencil = stencilTerrainAcquiquisition(COORDS_ coordsBall, Ty);
    // after the above line, Ty would no longer be equal to zero, but rather the vertical displacement of the player from the position of the ball

    With this modification, we can acquire all of the components of the stencil translation... the lateral component, the depth component, and the vertical component.  Multiplying only the lateral component by -1, the flipped stencil would be placed at the correct location.

     

    Now, if WGT were to object, "But that would take up too much CPU-time on the server," first off, I'd have to disagree.  They're already doing most of this... all we're adding here is what is necessary to trick the already-existing functionality into working for lefties. However, if this was found to be the case, all of this math (i.e. translation component separation, multiplication by -1]) could be completely cut out of the process if WGT went back and used these methods to bake a second stencil-acquisition map for lefties.  If WGT did that, they wouldn't have to change their code at all except for a few conditional statements making checks on player.handed.

    Regarding the "rework of avatar [and] club animations," that is false unless you consider a horizontal flip "work."

  • SgtDoodles
    3,112 Posts
    Sun, Feb 6 2011 11:48 AM

    Boomerboy44:

    Smack him with a 4 iron....LMAO!!!

    ROFLMFAO x20!!!

RSS