Jump to content


  • Posts

  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

SeriousSam's Achievements


Apprentice (3/14)

  • First Post
  • Collaborator
  • Conversation Starter
  • Week One Done
  • One Month Later

Recent Badges



  1. Thanks Kemaru. It is very common in 2D games, like super mario brothers on snes for example to use sprites sheets. They are simple and easy to use. What this plugin will do is help create different animation sequences from them. It saves the animation sequences created as a text file that could be loaded into a game. No image data is saved; only the sequence info is saved. So with this tool the user must open the same image to do the animation again. I realize not every one is a hobby game designer but would like animations for web sites so I have been looking into saving alternatively as an animated GIF. So far I have looked over the file format and at some different existing code libraries. If I get it working I will include it into an update In the mean time I believe there is a plugin that uses different layers to save a animated gif.
  2. dalescarborough, were you looking to wrap or shift an image by adjustable x and y amount? As for existing plugins there are a couple of seamless texture generators including "Tile Fill Addin" by dan9298, "Seamless Texture Maker" by MadJik. I haven't tried either but I would guess they would generate the texture from a selection. Therefor allowing to offset to an x,y pos in an image. Would this work for you?
  3. Carthaigh, I am a .net programmer as well and have released a few plugins and source code. I have been using vs2008 c# express. For SpriteSheet Plugin viewtopic.php?f=16&t=30121 or Convolution Filter viewtopic.php?f=16&t=29798. If only a simple GUI is needed I found deriving a class from PropertyBasedEffect is best way to go. It has support to generate the Dialog box from from the properties passed to it. BoltBait's burnator source attached is good example. The entire project is 1 cs file ~200 lines of code! Otherwise, use the template project to create own dialog. I would recommend taking a look at the How to Debug sticky if you are not familiar with debugging a dll. It takes a little work with express edition :wink: . BoltBaitBurninate.zip
  4. Thanks david, a majority of work was doing the GUI. The actual animation and grid drawing were fairly easy. Expect to see some updates soon!
  5. V1.3 Here is a little something for the hobby game programmers and artist out there, including myself. It is a plugin to test and design Sprite Sheets. For those that do not know a Sprite Sheet is a collection of images arranged in a grid used to make animations. This is done instead of having a bunch of image files. Hidden Content: About: This plugin will load each image from the grid to build a list of "frames". And from the list sequences can be created and animated. I am quite proud of the user interface. Drag and Drop is used to add and arrange the frames. What this means is just click and drag to move them. An insertion point is drawn to specify the location. It is very intuitive and fast to create sequences. For a simple demonstration try this image Select "Animation->SpriteSheetAnim" to run the plugin. Upon opening the 4 frames will get added into the left list box like screen shot above where it says "Frames 4". This is the working set of frames that are used to build animation sequences. This set can not be arranged or added to like the sequence list. The size of the frames happens to be 32x32 pixels which is the default but this can be adjusted to up to 512x512 pixels. Selecting "Draw Grid" is useful for matching the frame size to an existing sprite sheet or starting a new one. Creating a sequence is as easy as clicking any of the frames from the "working set" and dragging to the "sequence set" on the immediate right. Frames 0 and 1 were added to the sequence in the above screen shot. Frames in the sequence set can be arranged by dragging and removed by hitting the Delete key. Also, holding Control will duplicate the frame while dragging instead of moving (think copy then paste). To start animation press the "On" button and "Off" to stop. While running the current frame is highlighted in the sequence list. Hidden Content: Version: V1.1 May 20 Improved Drag Drop Scrolling Zoom decrement bug fix Support for different borders around frames. No border, border both sides, or border just to right Other bug fixes v1.2 May 25 Added Saving/Loading Sequences. Make sure to save to file after done creating. v1.3 May 31 Improved insertion of frame during drag and drop. Added GIF save feature! Tested with Firefox and IE8. Notes on GIF: GIF's can only be created! There will be no support to load GIF's. Animations can be recreated by saving and loading sequence data. The GIF is set to loop indefinitely and will animate at the same speed as the preview. GIFs must use a palette. I choose to use the gdi, Window's graphic application interface to generate palette and image data for convenience. It is most likely using the window's system palette. As a result detailed images do not look that great. I noticed detailed images get dithered/halftoned. I am looking into some more advanced techniques on generating an optimized palette. I would also like to add an option to use PDN's palette or a web safe palette may also be included. Plugin: Download Source code: PdnAnimateControlSln.zip
  6. A toon filter with a 5x5, I've got matrix envy! A save/load would be nice. I would like to finish a different plugin first. It is something I have a personal interest in and am looking forward to getting done.
  7. Yes it looks like it can do Sobel operation with a little manual work. From what I read Sobel uses two kernels. I got decent results with the following procedure. Orig Image: I Cloned the original image twice Applied this Kernel to top layer and set to additive or lighten blending. [1, 2, 1] [0, 0, 0] [-1,-2,-1] Divisor 1, Bias 0 Applied this Kernel to other cloned layer (one below) [1, 0, -1] [2, 0, -2] [1, 0, -1] Divisor 1, Bias 0 And Flattening the two layers I got this result Also interesting is blending the original image with the Sobel result. With the original image as top layer. Orig Image Layer Normal Blend opacity 107 Orig Image Layer Negative Blend opacity 167 Orig Image Layer Negative Blend opacity 255 I got the kernel values and image from http://en.wikipedia.org/wiki/Sobel_operator.
  8. Afraid not Ego Eram Reputo, this is not used to adjust the hue, brightness, and saturation as Paul had proposed in that article. This matrix is for blending the colors at a position with the neighbor colors to achieve different effects. The more common usages are for sharpening, blurring, edge detection, and emboss. That article did look interesting though.
  9. It is exactly as pyrochild said, with the addition that the bias is added after the matrix is applied. For anyone struggling try using the choosing some preset effects in the top right to load the kernel, divisor, and bias with preset values. In the screen shot it is set to "Identity". After loading one of the presets try adjusting the values to achieve a desired effect. As for documentation, I appologize but I did not think I needed to provide any. This is a very common technique with plenty of readily available information. And the values that have been used are well established. But in short the algorithm does the following do every color in an image How Kernel Is Mapped to every color in the Image [Above Left, Above, Above Right ] [Left, POI (point of interest), Right ] [below Left, Below, Below Right ] Values Set in Kernel [A,B,C] [D,E,F] [G,H,I] Color = A * (Color Above Left) + B * (Color Above) + C * (Color Above Right) + D * (Color Left) + E * (Color POI) + F * (Color Right) + G * (Color Below Left) + H * (Color Below) + I * (Color Below Right) Color = Color / Divisor + Bias Taking a look at the "Identity" kernel which is [0,0,0] [0,1,0] [0,0,0] Divisor = 1 Bias = 0; Then Color = 0 * (Color Above Left) + 0 * (Color Above) + 0 * (Color Above Right) + 0 * (Color Left) + 1 * (Color POI) + 0 * (Color Right) + 0 * (Color Below Left) + 0 * (Color Below) + 0 * (Color Below Right) Color = Color / 1 + 0 It should be clear that the resulting color at the POI is the original color at the POI. I hope this cleared up some of the confusion.
  10. Convolution Effect Version 1.2 Out! I think I am a better programmer than artist... so I decided to contribute with a convolution effect. I kept the kernel at a 3x3 to be cpu friendly. Maybe in another release I will give an option to choose the size. In my implementation I have included a quick drop down to set the kernel to some of the more common kernels including an identity, blur, sharpen, mean removal, edge detection. laplacian, and emboss. But with quick modifications it can come up with some very interesting effects. Have fun . I have uploaded both the dll effect file and the VS2008 c# solution. The code was written in a very straight forward manor and should be easy to follow for anyone interested. [EDIT] V1.1 release Optimized code as much as could. I Measured speed improvements around 30% in the unoptimized debug version. In the release version my 4Ghz Duo Core will process a 1200x1600 image around 16ms. I think that is impressive without use of assembly and SIMD (Single instruction multiple data), never mind. I left the timer code in the release version. To see how long it took to process the scene in milliseconds pressing a button called "get" after rendering is done that will retrieve the time. [EDIT] V1.2 release Added File IO Support to save and load kernels. Kernels can be added and removed with a click of a button. When the Convolution Dialog is opened it looks for "ConvolutionEffectKernels.txt" in the "*\Paint.NET\Effects" Directory. This file contains the kernels. If the text file exist it will be loaded or will be created with the preset kernels. Also, if there are any problems opening or creating the file the preset kernels can still be used, however the ability to Add, Remove, Update and Restore will be disabled. I know file io is a lot of work... To add a kernel select "Add Current". A dialog will come up to give the kernel a name. The new kernel will be saved and added to the drop down list with the name assigned. To remove the selected kernel from the drop down click "Remove Current". To modify the selected kernel select "Update". This updates the selected kernel in the drop down with the text values. "Restore", will overwrite the "ConvolutionEffectKernels.txt" file with only the preset kernels. Any kernels created will be lost! I did not add a warning so be careful not to press this unless desired. ConvolutionEffect.zip ConvolutionEffectSln.zip
  11. I have been working on an effect that can mix the channels (Alpha, Red, Green, Blue) in each color and perform addition and scaling on the channel. For each channel the following is done channel = ((source) + add) * scale IF Invert channel = 255 - channel The "source" can be - Alpha, Red, Green, Blue : standard channels in a color - Default : orig value of channel - Set : user defined value - intensity : color intensity If the source is "set" the value from track bar is used. The add amount is next applied and can be -255 to 255. The value can then be scaled (multiplied) by 0.0 to 10.0 And last the value can be inverted. The order that channels are processed can be set with combo boxes or by clicking the labels with "->" to shift the order right. Install Drag the dll into the "*\Paint.Net\Effect" folder and in the Effects->Photo menu "Channel Mix Effect" and a lightweight "Alpha Mixer" version should appear. Download I uploaded both the effect file dll and the vs2008 solution if anyone cares to look at the source code. PDNAlphaAdj.zip PDNAlphaAdj.zip
  12. MadJik, that is a tricky way to get debugging to work. I did not change the output directory or configuration for my project, it is still Bin\debug. This is different from changing the working directory. Are you able to see the "View Plugin Load Errors ..." menu item when no plugins get loaded? This helped me a lot. Either way, glad to see you have a work-around.
  13. MadJik, if you open of the file menu do you see a menu item exclamation with that says "View Plugin Load Errors ..." errors? If this is there it will show a stack trace and you can figure out what is throwing an exception and why the plugin is not getting loaded. Also double check the plugin is copied to the effects directory when your project is built. Take a look at the date created of the file in the effects directory to make sure it is current. If you move the dll to the effects directory does it show up normally? I had the wrong namespace when loading the embedded image for the icon in my project and this caused it to not load.
  14. This is how I was able to get debugging working with VS2008 C# Express Edition What is missing from the express edition is the start external program option. However, it can still be set manually in the "*.csproj.user" file found in the project directory. First I opened up the "*.csproj.user" file in notepad. It looked like: I added the following commands: Program C:\Program Files\Paint.NET\PaintDotNet.exe C:\Program Files\Paint.NET\Effects Make sure these paths are correct for your own system This completes steps 1-5 from Rick's guide. Next open the solution and set the post build event to copy the dll to the Paint.Net\Effects directory (Rick's Step 6) With Vista I found it was necessary to run visual studio as an admin or the file copy in the post build would fail. Setting the run as admin flag in the VCSExpress.exe compatibility properties will cleared this up. Happy debugging
  15. What I had in mind was using different layers as sources for doing an effect. Say if the user had two layers, is it possible for example make an effect to blend the layers. Sorry, if this question was a bit unrelated from my orig post. Just trying to find out what is possible. BoltBait had posted a "No" to this but the post was about 7 months old. Is this still the case?
  • Create New...