Jump to content

Bleek II

Members
  • Posts

    82
  • Joined

  • Last visited

Posts posted by Bleek II

  1. Okay, so I've been working out to some old VHS tapes with my wife. I wanted to get the look that they have. So I worked out a few pretty easy steps. There are a few technical things I'm overlooking such as interlacing and exact chroma resolution but I think the look works pretty well.

     

    Required Plugins:

    - Extract Channel

    - BlendModes Plus

     

    ---------------------------------------------------------------------------------------------------------------------------------

    Pre-pixel Distortion Method (For working with 720x480/640x480 images, or making a larger image of VHS quality but not true size.)

    ---------------------------------------------------------------------------------------------------------------------------------

    1.

    Add Noise

    Intensity = (20 SP)(28 LP)(36 EP)

    Color S. = 50

    Cov. = 100

    2.

    Duplicate

    Layer1 Steps

    ------------

    1.

    Motion Blur

    Angle = 0

    Distance = (8 SP)(12 LP)(16 EP)

    2.

    Select All

    3.

    Copy

    NOTE: Layer1 will not be part of the final image

    Layer2 Steps

    ------------

    1.

    Extract Channel

    Channel = CMYK -Key

    2.

    Motion Blur

    Angle = 0

    Distance = (2 SP LP)(3 EP)

    3.

    BlendModes Plus

    = Copy Image From Clipboard (this is how we're using layer1)

    = Color

    DONE!

    -------------------------------------------------------------------------------------------------------------------------------

    Scaled to Image Distortion Method (Means that now matter the how large the image is it will look like it came from a VHS tape.)

    -------------------------------------------------------------------------------------------------------------------------------

    1.

    Add Noise

    Intensity = (20 SP)(28 LP)(36 EP)(may depend on how lage the image is)

    Color S. = 50

    Cov. = 100

    2.

    Duplicate

    Layer1 Steps

    ------------

    1.

    Motion Blur

    Angle = 0

    Distance = (Horz.Res./80 SP)(Horz.Res./60 LP)(Horz.Res./40 EP)

    2.

    Select All

    3.

    Copy

    NOTE: Layer1 will not be part of the final image

    Layer2 Steps

    ------------

    1.

    Extract Channel

    Channel = CMYK -Key

    2.

    Motion Blur

    Angle = 0

    Distance = (Horz.Res./340 SP LP)(Horz.Res./280 EP)

    3.

    BlendModes Plus

    = Copy Image From Clipboard (this is how we're using layer1)

    = Color

    4.

    Motion Blur

    Angle = 90

    Distance = Vert.Res./480

    DONE!

    VHS_Ex.jpg

     

  2. With the Displacement On? checkbox checked, it acts like a displacement filter; without, it acts like an alpha masking filter. That is, to use it like my original plugin, just leave that box unchecked and import a file.

    Also, Bleek, I suggest having a catch (System.IO.FileNotFound) in the try...catch of the EffectConfigToken.GetImage() if you do update it again. And have the return fallback be an embedded single white pixel instead of null... it tries to read from file for every single pixel if you don't.

    If you're still around. ;)

    I just got back to working with PDN. I've been MIA for a long time, sorry. Yeah, I know this is sort of an odd plugin being a mixed Alpha/Displacement mapping plugin. The reason I made it that way is because I hate having to dig through the hundreds of plugins in PDN just to get to the one I want. I wanted to have a universal mapping plugin.

    I know that Curtis has made several mapping plugins that have "better" UIs than mine but this one still has a few features that are needed by myself and others. These features include adjustment of neutral value, standard edge behavior, mask alpha clipping, and 0 pixel value exclusion. As a professional artist and not programmer I need these tools.

    I have lost my copy of visual studios and can't update this plugin anymore. I have to ask you to become the maintainer of this useful plugin. I will post any updates that you make and give you credit for them.

    Thank You.

  3. Thanks MadJik! You're always rescuing me from my own programing monsters. I put in src instead of rect but I got this error.

    'PaintDotNet.Surface' does not contain a definition for 'Right'

    I don't think that part of the code is an issue anyway. I can hard code it for that image using 799 and 599 instead of rect.Right and rect.Bottom and I still get the same issue. Though you may be on the right track because I have no idea what is wrong with it. Thanks MadJik!

  4. Help, help... I have an issue with my code that I just can't figure out. I made my own code for AA and color fixing edges but I've found that in many cases it doesn't fix the area that it should. Instead it just drifts off target as the user increases the size of the loops used to detect and fix edges. It's harder to notice for the AA because the loops are much smaller but for the color fixing it's a bit issue. It feel like a 1off error some where in the code but I can't find it.

    Here is a shot of the issue in action. (note: the code can remove green screen but was set to low sensitivity to make the error easy to see.)

    Untitled.gif

    #region UICode
    int Amount1 = 2; // [1,2] blue/green
    int Amount2 = 90; // [0,100] remove power (less is more)
    int Amount3 = 3; // [0,6] edge alpha range
    int Amount4 = 40; // [0,80] alpha power
    int Amount5 = 40; // [0,40] edge color fix range
    
    #endregion
    
    void Render(Surface dst, Surface src, Rectangle rect)
    {
       int x1;
       int y1;
       int x2;
       int y2;
       int cl;
       int cl2;
       int dif1;
       int dif2;
       int dif3;
       int dif4;
       byte set=255;
       ColorBgra CP2;
       ColorBgra CP;
       for (int y = rect.Top; y < rect.Bottom; y++)
       {
    
           for (int x = rect.Left; x < rect.Right; x++)
           {   
               dif2 = 0;
               cl=0;
               CP = src[x,y];
               if(Amount1 == 2)
               {
                   dif1 = CP.G - ((CP.R + CP.B)/2);
                   if(CP.G > CP.R)dif2++;
                   if(CP.G > CP.B)dif2++;
               }
               else
               {
                   dif1 = CP.B - ((CP.R + CP.G)/2);
                   if(CP.B > CP.R)dif2++;
                   if(CP.B > CP.G)dif2++;
               }
    
               if(dif1 > Amount2 && dif2 == 2)
               {
                   set = 0;
               }
               else
               {
                   set = 255;
               }
               CP.A = set;
               //!!!!!!!!!!!!!!!!!!!!!!!
               //edge stuff
               //!!!!!!!!!!!!!!!!!!!!!!!!!!!!
               if (set == 255)
               {
               //!!!!!!!!!!!!!!!!!!!!!!!!!
               //edge alpha
               //!!!!!!!!!!!!!!!!!!!!!!!!!!
               x1 = x - Amount3;
               if(x1 < 0)
               {
                   x1 = 0;
               }
               x2 = x + Amount3;
               if(x2 > rect.Right)
               {
                   x2 = rect.Right;
               }
    
               y1 = y - Amount3;
               if(y1 < 0)
               {
                   y1 = 0;
               }  
               y2 = y + Amount3;
               if(y2 > rect.Bottom)
               {
                   y2 = rect.Bottom;
               }                
               while (y1 < y2)
               {
                   while ( x1 < x2)
                   {
                       CP2 = src[x1,y1];
                       dif4 = 0;
                       if(Amount1 == 2)
                       {
                           dif3 = CP2.G - ((CP2.R + CP2.B)/2);
                           if(CP2.G > CP2.R)dif4++;
                           if(CP2.G > CP2.B)dif4++;
                       }
                       else
                       {
                           dif3 = CP2.B - ((CP2.R + CP2.G)/2);
                           if(CP2.B > CP2.R)dif4++;
                           if(CP2.B > CP2.G)dif4++;
                       }
    
                       if(dif3 > Amount2 & dif4 == 2)
                       {
                           cl++;
                       }
                           x1++;
                   }
                   y1++;
               }
                   if(cl > 0)
                   {
                       cl2 = 255 - (cl*Amount4) -dif1 + (dif2*20);
                       if(dif1<10)cl2 =255;
    
                       if(cl2 >255)cl2 = 255;
                       if(cl2<0)cl2=0;
                       CP.A = (byte)cl2;
                   } 
               //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
               //color fixing    
               //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
               x1 = x - Amount5;
               if(x1 < 0)
               {
                   x1 = 0;
               }
               x2 = x + Amount5;
               if(x2 > rect.Right)
               {
                   x2 = rect.Right;
               }
    
               y1 = y - Amount5;
               if(y1 < 0)
               {
                   y1 = 0;
               }  
               y2 = y + Amount5;
               if(y2 > rect.Bottom)
               {
                   y2 = rect.Bottom;
               }                
               while (y1 < y2)
               {
                   while ( x1 < x2)
                   {
                       CP2 = src[x1,y1];
                       dif4 = 0;
                       if(Amount1 == 2)
                       {
                           dif3 = CP2.G - ((CP2.R + CP2.B)/2);
                           if(CP2.G > CP2.R)dif4++;
                           if(CP2.G > CP2.B)dif4++;
                       }
                       else
                       {
                           dif3 = CP2.B - ((CP2.R + CP2.G)/2);
                           if(CP2.B > CP2.R)dif4++;
                           if(CP2.B > CP2.G)dif4++;
                       }
    
                       if(dif3 > Amount2 & dif4 == 2)
                       {
                           cl++;
                       }
                           x1++;
                   }
                   y1++;
               }
                   if(cl > 0)
                   {
    
                       if(dif1>10 && Amount1 == 1)CP.B = (byte)(CP.B - dif1/2);                    
    
                       if(dif1>15 && Amount1 == 2)
                       {
                           CP.G = (byte)(CP.G - dif1);
                           if(CP.R > dif1/2.4)CP.R = (byte)(CP.R - dif1/2.4);
                       }
                   }
               }
    
    
    
               dst[x,y] = CP;
           }
       }
    }

  5. To see current issue click the link below.

    viewtopic.php?f=27&t=29414

    It's been awhile since I made a plugin but that's because I only make 'em when I need them in the field. I needed this one for an upcoming project. it's not perfect but it helps a lot!

    SRss.jpg

    SR.zip

    SR.7z

    effect=>object

    I may add to it if need more function later. If you want more function from it or find a bug just tell me or feel free to write your own plugin using this code.

    YEeeeAHhh.... about the code... yes it's all 100% mine I'm sorry to say. It looks awful and if you're thinking to yourself "man it looks like this guy wrote this while laying in bed for days starved/crazy from fever after being food poisoned" you'd be right.

    Made with code lab! Thank, BB!

  6. I can only use GIMP on my Ubuntu box. My Windows box uses Windows XP x64 which isn't supported by GIMP. I do hate being tied to Windows and plan to completely move to Ubuntu mid 2009. I have to make some choices, such as will I virtualize or dual boot windows. With the way virtualization is going, I think I'll move that way. But I'm still hoping to see a version of PDN for Linux that's fully supported. There is Mono Paint but it hasn't been updated in like five months :( To GIMP's credit, their new versions are a little easier to use. Maybe I'll go in GIMP's direction, IDK.

  7. Although the screen-shot you included is a little small for me to tell what's going on, the plugin seems to be working fine.

    1. Issue one here may come from the fact that in traditional color theory (YRB), green and red... they aren't friends, simply speaking. If you were to print you'd be able to see this better.

    2. LINES!!! Each pixel is split into three lines. The issue is that they are always it the same in the same order and the lines visually distract the eye from the whole image.

    The plugin is splitting the the RGB values and it seems to be doing that well. I should make it mix up the color order. The blue lines are bright in the sky. The the green is bright in the grass(though it does seem a little dark). The red is bright in the grass because there is plenty of yellow which is a mix of red and green and all the lines are bright where there is white.

    Edit: You can adjust the color your self. I highly recommend the color mix plugin by Tanel.

    viewtopic.php?f=16&t=24355

  8. Anyway... I have a request or two, neither of which include your address! I was wondering if you could make this part of custom brushes. Also I find the " [ , ] " modifier keys to be useful to shrink or grow the standard PDN brush while painting, could you include that function as well? Anyway, thanks for the sweet plugin!

  9. Bad news, 1.4.0.1 was broken. I made if for a project I was working on and it worked fine for that. However, many of the more basic things did not, as I found out while working last night. I'm sorry for the ten people that downloaded that version. The plugin that's available now is 1.3.0.1. I don't have time to fix 1.4.0.1 right now, but expect 1.4.1.1 to be out later this week. I'm not a much of a programmer as I may have pointed out before. I only make plugin because I have uses for them as an artist. I foolishly release them with out testing all their functions and you the bloody potato which results from it. From now on I'll use plugins for a day or two before releasing them.

  10. hmm... thanks for the revived interest. I never finished this plugin, maybe I should.

    TO DO LIST

    -Use without help of "Pixelate'" effect

    -Allow different order mixes for the RGB vaules. Because the lines are mess'n with me eyezzzz!!

  11. Thanks for trying Bleek, and thanks for helping BB :)

    [Edit] W-w-w-w-wait, you're blurring the canvas image according to its own luminosity, or according to a mask's?

    Which do you want?

    I'm going to play with it just using the canvas but the final plugin will use masks.

  12. I can call upon other effects? I didn't know that. Can I call upon any effect or just the ones that come with PDN; for example could I call "True Blur"? Also how do I do it, could you give an example.

    thank you, thank you, thank you,

    Bleek II

×
×
  • Create New...