Jump to content

MJW

Members
  • Posts

    2,459
  • Joined

  • Last visited

  • Days Won

    57

Everything posted by MJW

  1. Happy Birthday, Red ochre! I hope that except for your wasp problems, everything's going well on your side of the ocean. Wasps seem to have no regard for birthdays.
  2. I'll give it some consideration. I know straight Euclidean distance isn't a particularly good method for color comparison. I'd probably have to disable taking opacity into account when using the more complex color metric. I doubt the method I use can be extended to it.
  3. I think Edge Shader may be useful for this. Basically, draw the pipe on a transparent background, then apply Edge Shader, adjusting the Maximum Distance and Gradient Profile for the best look. You will have to clip off the ends of the pipe, to remove the section that's shaded from the ends.
  4. Paste From Clipboard may be useful. If before copying it to the clipboard, you center a selection around the thing you want to scale, you can somewhat control the center for scaling. It has a XY Proportion control that can modify the aspect ratio. Neither is exactly what you're asking for, but perhaps they'll give you what you need.
  5. Another "revese-phi" illusion by the same guy.
  6. At first I thought, "Big deal! An animated GIF of some blinking cubes moving around."
  7. The Texture Merger is probably the plugin I'm most proud of, even though I sometimes wonder if I'm the only one who ever uses it. It's designed to combine height maps. It's quite a complex (and, I admit, more that a little confusing) plugin. Using it to rotate the height map created by Texture Object Rounder isn't too difficult, though. - Copy the height map to the clipboard (Ctrl-C). - Run Texture Merger. - About halfway down the (very large) menu, there's a drop-down list labeled Height Merge Method. Select the last option, Clipboard (No Displacement). - You may also want to enable Antialiasing. - Now you can rotate (and also scale and translate) the height map using the clipboard controls at the top of the menu.
  8. If I start with a 512x512 white canvas, then rotate it 90 degrees with Rotate/Zoom, the top pixel row is transparent. By marking the edge pixels, I confirmed that the rotated image is translated down one pixel, so the previous left column is lost. My guess is that the rotation is about the wrong center. (I say "sometimes" only because I haven't checked every situation.)
  9. I believe I've confirmed that the problem is that Rotate/Zoom isn't doing an exact 90 degree rotation. There are other ways to rotate the height map using the rather complex Texture Merger, but I'll try to come up with an easy way soon. I think Rotate/Zoom has another problem, which I'll report as a bug if I confirm it. If I start with a square window with a constant color background, then rotate by ninty degrees, the top line of pixels is transparent, which I believe indicates the rotated image was translated one pixel down.
  10. I compared the colors in the places with the problem. In every case I looked at, one or two of the RGB color components in the bad colors are one less than the values of the good colors. Examples in hex: GOOD BAD 21 A0 AC 21 9F AC 22 C6 E0 22 C5 DF 23 DC 79 23 DB 79 22 6D 66 22 6C 66 22 0B 6D 21 0B 6D It's not a one-bit difference, but a numeric difference, as A0 to 9F shows. Is there any chance you rotated the layer by, say, 90.01 degrees instead of 90 degrees? That would be an unusual thing to do, but I think it could produce similar artifacts (because the heights would be mis-interpolated). EDIT: I would hate to think so, but perhaps it's a problem with Rotate/Zoom not precisely exchanging the X and Y coordinates for a 90 degree rotation. If you check the shading before and after the 90 degree rotation, you can see if that's the problem. (I've rotated Object Rounded objects by 90 degrees and never seen that sort of thing, but it could depend on the exact image.)
  11. Would you please describe the exact steps between running the Texture Object Rounder, and the shading? I would expect that there are not too many. Also, perhaps you can try running (then cancelling or undoing) the Texture Shader after each step, to see when the lines first appear. I've never seen anything like those three lines, and I can't think of any reason for them.
  12. Try doing it again. I've never seen anything like that, and think those anomalies must have somehow been introduced some time after the Texture Object Rounder was used (though I have no theory about how). BTW: Though Pixey has the height set in the Texture Shader at about 304, the "technically" correct height for shading objects produced by the Texture Object Rounder with default height scaling is 255. However, sometimes it looks better to have it a higher or lower, depending on the texture on the clipboard. Make sure to enable Antialiasing in the Texture Shader. It will almost always produce a better looking result.
  13. I have 64-bit Windows 10 Pro, so it's not as though my system is completely decrepit. I hope the rather indefinite term "awhile" means quite a while.
  14. I hope Windows 11 doesn't become a PDN requirement anytime soon. I'm pretty sure my somewhat antiquated but still serviceable computer doesn't have the TPM capability.
  15. I'm surprised you missed it. It was under the "Topics with Current Activity" on the home page for quite a while. It wasn't anything in bad taste, but if was exceptionally distracting: a little dancing figure with a spiral spinning behind it. Perhaps you did see it, but just didn't consider it at all bothersome.
  16. I'm happy to see it disabled. I don't really blame the poster that had it. I doubt the avatar was intended it to be irritating.
  17. Not that I have anyone in mind, but animated profile avatars can really get annoying. I think I'm being hypnotized by one of them.
  18. Thanks. I'll hold off releasing any plugin that uses it before the update.
  19. I'm not sure what that means in regard to a plugin that's trying to determine if it can use the data on the clipboard (which is the only thing I would care about). Also, Bitmap seems to be the only one that makes sense for images, so if it doesn't work, what would?
  20. Here are the routines I wrote based on Rick's code. It appears to work for text (I haven't tested it yet for images). It seems to be ClipboardNativeFormats rather than ClipboardNativeDateFormats. I assume Bitmap is the correct format to test for images. public bool ClipboardContainsFormat(uint format) { bool clipboardContainsFormat; IClipboardService clipboard = this.Services.GetService<IClipboardService>(); using (IClipboardTransaction clipTx = clipboard.Open()) { clipboardContainsFormat = clipTx.IsNativeDataPresent(format); } return clipboardContainsFormat; } public bool ClipboardContainsImage() { return ClipboardContainsFormat(ClipboardNativeFormats.Bitmap); } public bool ClipboardContainsText() { return ClipboardContainsFormat(ClipboardNativeFormats.Text); }
  21. I wish there were on that was exactly what you need.
  22. You could try Grid Warp, Gravity, or Paste Warp+. The second two will leave the vertical lines vertical, which may not be what you want. If you use Grid Warp, place the image to be transformed on a large canvas, surrounded by transparency (perhaps about 2000 wide). Use a 2x3 grid size, and pull down the center nodes, above and below the image to be transformed. When you do that, you'll see the reason for the wide canvas. The part of the distortion you want will be in the center. Move the edge nodes to adjust the distortion.
  23. That's strange, because as far as I can tell, Clipboard.ContainsImage seems to work correctly. I used it in a plugin to disable some controls when there was no image on the clipboard. I believe I tested it fairly well, and it always seemed to correctly identify when there was and wasn't an image on the clipboard. (Though perhaps I didn't test it as thoroughly as I should have, because at that time I had no reason to doubt that a few successful tries with different types of clipboard data was all I'd need.)
  24. I was experimenting with some things related to the Copy Selection feature and wrote a test plugin to read the selection from the clipboard. Before trying to read the selection, I called Clipboard.ContainsText() to verify there was text on the clipboard. Even when there was a selection on the clipboard, it returned "false". Since I could retrieve the text just fine by calling Services.GetService<IClipboardService>().TryGetText(), it isn't important that Clipboard.ContainsText() work the way I expect it to work, but I'm still curious as to why it didn't, and whether I'm making some mistake it how I'm using it. The call is simply: public bool ClipboardContainsText() { return Clipboard.ContainsText(); } Called by: public bool GetClipboardText() { //if (!ClipboardContainsText()) // Commented out, since it doesn't seem to work. // return false; // If we tried and succeded, don't try again. Use the text we got. if (clipboardText != null) return true; else if (triedToGetCbText) // Don't retry if we failed once. return false; triedToGetCbText = true; clipboardText = Services.GetService<IClipboardService>().TryGetText(); if (clipboardText == null) return false; return true; } I used Clipboard.ContainsImage() in a plugin, and it worked exactly as I expected it to.
  25. Excellent work by @Pixey @Manc, @Ladybug, and @ardneh! (Hope I got everyone.) Quite a fun, though somewhat difficult, theme, I think. I really wanted to to make a cumulus or cumulonimbus type cloud, but none my several attempts produced an acceptable result. Pixey came very close to what I was trying for in the image with the sunbeam. I thought it would and should have won. (Though, if I may say so, I think it would have been improved by having less of a yellow tone.) I looked at a number of Photoshop cloud tutorial, hoping to adapt them to PDN, but they all (or at least all the decent ones) simply amounted to painting the clouds with brushes: something better suited to a more integrated brush capability, and to pressure-sensitive tablets. (Or perhaps to greater artistic ability.)
×
×
  • Create New...