1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Pearl Choker

Discussion in 'SDT Requests' started by isaac42, May 23, 2015.

  1. isaac42

    isaac42 Potential Patron

    Joined:
    May 3, 2013
    Messages:
    37
    Likes Received:
    1
    Hi, I'd like to request a Pearl Choker without any gems/broches adorned to it. Color should be plain white and it should be ~ 3-5 pearls wide.

    Reference Pics:
    pic pic pic pic

    I couldn't find direct sideview pictures, but I imagine that it's not difficult to extrapolate for such a periodic geometry.
     
  2. stuntcock

    stuntcock Club Regular Staff Member Moderator

    Joined:
    Jun 5, 2012
    Messages:
    1,522
    Likes Received:
    355
    I went with four. The fitting isn't ideal for a choker, because gameplay forces us to leave a fair amount of slack around the larynx. I tried pulling it in tighter at the rear, but that only made the front slack more obvious. So I settled for a "balanced" loose fit.

    Performance cost (FPS impact) is high. This is mainly due to the number of separate objects being shown on-screen. We can omit the highlights, but it makes very little difference in FPS (and the resulting flat-colour appearance is unconvincing). Bitmap caching is ineffective because the neck (and hence - the choker) is constantly being rotated.

    It's possible to significantly ameliorate the runtime performance by merging the shapes, but doing so will prevent us from making any adjustments to the size and orientation of the pearls. I'll hold off on that until I can get some feedback and settle on a shape which everyone finds satisfactory.

    Problem: The pearls are unrealistically large. Unfortunately, if we make them smaller then we run into problems. We need more pearls to form the choker (which increases the FPS cost); the highlights and shading become difficult to discern (too few pixels per pearl); the outlines become too thin and exhibit unpleasant aliasing effects. If anyone can think of a clever alternative approach then feel free to tinker with the FLA file.

    [​IMG]

    The pearls themselves use the rgbFill while the outline uses rgbFill2. So you can soften (or entirely remove) the outline by fiddling with the second RGB slider of the Collar slot. Using full white on the first slider isn't recommended; the highlights get washed out and the result is unconvincing. I'd suggest using bright pink, eggshell, off-white, etc... or dark grey for a "black pearl" effect.

    Wire was omitted entirely. It's too thin to be seen at normal zoom levels, so it would be invisible except for occasional aliasing artifacts (and constant FPS drain).

    [attachmini=1] SDT-pearlChoker.swf
    [attachmini=2] SDT-pearlChoker.fla
     

    Attached Files:

  3. Faceless

    Faceless Club Regular Content Creator

    Joined:
    Jun 12, 2011
    Messages:
    1,118
    Likes Received:
    22
    Actually, pearls do get that big, if historical portraits are any indication.

    In any case, at a glance you could probably improve performance by consolidating all of those fills into a single object (or two, if you really want dual-slider color control). Another thing would be getting rid of those mask layers and trimming the shading shape. You'll still have to deal with multiple shading shapes, but doing those to things would reduce the number of drawn objects from 240 (15 pearls/string * 4 strings * [1 mask + 1 shading + 2 fills]/pearl) to 69 (60 shading + 1 outline fill + 8 regular fills). Granted, the 9 fills are more complicated than the original pearls, but I'm pretty sure that up to a certain complexity drawing a single object is still cheaper than drawing a bunch of them.

    I've attached a crude stab at this (didn't save source though).
     

    Attached Files:

  4. sby

    sby Club Regular Content Creator

    Joined:
    Sep 11, 2012
    Messages:
    1,337
    Likes Received:
    76
    hmm, maybe it is because i don't typically make art content, but it seems like this could be done with 3 objects since there is no moving parts: 1 for consolidated pearls, 1 for rgbfill1 for coloring, 1 for rgbfill2 for outline. i mostly edit what people have thrown together, so i don't know how easily feasible it is to flatten objects.



    super fancy would be having stuff move according to what the neck is being rendered at, but nobody has done that before
     
  5. stuntcock

    stuntcock Club Regular Staff Member Moderator

    Joined:
    Jun 5, 2012
    Messages:
    1,522
    Likes Received:
    355
    You're right; that was the original plan. I was just holding off because it's a "one-way" operation, and I wanted to get some feedback on size/shape/density/etc. If any changes need to be made, then it's a lot easier to do so while the shapes are still independent.

    Why not maintain a backup copy with independent shapes, and then optimize the file before releasing it? Because I'm lazy and I don't want to do the optimization work twice.

    I considered it. It would allow us to create a believably tight choker which would stretch as-needed during gameplay. However:
    • isaac42 didn't ask for it, so it seemed fair to just deliver the basic solution instead of asking him to wait a week or more
      • we can always re-use the existing art assets to make a physics-animated choker (in the future)
    • the runtime performance would be even worse than the first unoptimized version
    • the standard Rope class does not behave properly when segment lengths are very small.
      • Pseudo-torque forces (rotational parameters) tend to be overwhelmed by linear forces (gravity, elastic correction) because the moment arm is too short.
      • I've experimented with a few "jewelry" chains but they tend to oscillate rapidly through unstable configurations.
      • I'm currently writing some new code which might solve this problem.
     
  6. isaac42

    isaac42 Potential Patron

    Joined:
    May 3, 2013
    Messages:
    37
    Likes Received:
    1
    Woah, that was quicker than I expected! I'm gonna try out the different files and respond soon.

    edit: This is great, the current 4-thickness looks very good! I don't really understand/see the performance issue, but I'm satisfied with the looks. I do not quite see the neccesity for the 2nd color, sure it changes the outline, but that is absurdly small, -> I wouldn't mind if you neglected that part. If it improves performance, you could lessen/undo the shining effect on each pearl, even tho I DO like how it looks now. As It is rather small those things don't matter too much in the big picture/zoomed out.

    Also, would you mind making a version that looks like the pearls are stitched onto some sort of cloth? Nothing fancy, a static black/colorshiftable background below the pearls is enough. I think that would look neat too.
     
  7. stuntcock

    stuntcock Club Regular Staff Member Moderator

    Joined:
    Jun 5, 2012
    Messages:
    1,522
    Likes Received:
    355
    Start the game. Press Esc. An FPS counter should appear. Load the original choker SWF. FPS should fall. Unload the choker mod. FPS should recover. Load Faceless' improved version. FPS should fall, but much less sharply than with the original choker.

    If your PC specs are high then the penalty may be only 1-2 FPS, but this stuff adds up. 5-6 FPS for a dynamic hairstyle, 3-4 FPS for an additional on-screen characters, 10+ FPS for heavy strands, etc... In order to ensure that users are able to combine mods into complex scenes and scenarios, mod-makers need to optimize their shit.

    If your PC specs are very high then you might not see any FPS decline at all. In which case...

    *shakes fist angrily at people who can afford nice things

    The outline comment is valid; they're so thin that adjustment is a waste of effort.

    I can put a simple "sweatband" beneath the choker. The end result would be nearly identical to what we have now, except that you'd see RGB-adjustable fill in the gaps between pearls (instead of seeing skin in these gaps). If you play with the alpha slider then you could obtain a gauzy effect (in which both the RGB fill and the underlying skin are partially visible).

    Note that there would be no visible stitching around the pearls (nor any recognizable apertures/sockets). As with the "wire" idea, any such attachment details are simply too small to be visible during gameplay.

    If you want the fabric to surround and embellish the pearls then I'll need a reference image. We'll also need to remove some of the pearls in order to make room for the lacework.

    Lessening it (e.g. radial gradient → linear gradient) would provide a slight performance gain, but we'd lose a lot of visual fidelity. We can achieve much more significant gains by merging shape geometry in Flash.

    Remove/undo the shining effect? Heck no. Flat colour is bad in general - it tends to clash with the SDT artstyle because the standard art assets include at least a few areas of shading or highlight. Lustre is the defining characteristic of gemstones; removing it for the sake of performance would be silly.
     
  8. isaac42

    isaac42 Potential Patron

    Joined:
    May 3, 2013
    Messages:
    37
    Likes Received:
    1
    I'm... sorry? Bought a new one last year (old one had less than 200mb Ram xD).

    While I do have a basic understanding of programing, I didn't spend nearly enough time with it to really become "fluent" in it, so, I guess I leave any performance decisions to you? Just do your thing =D.

    Also, about the sweatband, it does not need to be fancy at all, like with the wire/outline, any texturing would be neglectably small -> leave it. If it's possible to shift it's color to invisible/skin color it would be neatly adjustable to personal preferences/char ideas.