• Content Count

  • Joined

  • Last visited

  • Days Won


MJW last won the day on August 7

MJW had the most liked content!

Community Reputation



About MJW

  • Rank
    2017 Radiance Award Winner

Profile Information

  • Gender

Recent Profile Visitors

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

  1. MJW

    OotF#32 ~ Half an Orange ~ Entries.

    EDIT: 12/27/2018 -- Modified (improved, I think) peel texture.
  2. MJW

    3D Heightmap Plugins v1.0

    Not to push my own plugins (okay, actually I am), but the Texture Shader does something similar, and quite a bit more.
  3. MJW

    Object of the Fortnight – Discussion thread

    (I began this in the "Winners" thread, but decided to move it to discussions.) Pixey was curious about the steps involved in my padlock entry. I'll describe them, adding to this comment when I get the chance. I'll also try to add some pictures, along with some of the plugin settings. In a few cases my description slightly deviates from what I actually did, either because I couldn't quite remember, or to avoid confusing detours. Keep in mind this probably sounds more complicated than it was. In many cases it takes longer to describe a step than it took do do it. First, the case -- or more specifically, the front of the case. On a transparent canvas, I used Shapes to draw a rectangle, about twice as high as it was wide (because I knew I'd have to erase portions of the top and bottom along the way). I centered it using Kris Vandermotten's Align Object. I also duplicated the layer, flipped it horizontally, and merged down to make sure it was truly centered, not perhaps a pixel off. It often helps with future alignment issues to have things completely centered. I ran a (beta) plugin by Red ochre and me called EdgeShaderMJW to make the rectangle go from gray on the edges to white in the middle. Since it was taller than it was wide, there was a white vertical line where the left and right gradient met at the middle. I used rectangular selections, along with Erase Selection, to erase the top and bottom of the rectangle, so that only the section with the vertical line remained (Note: the whole point was to produce a symmetric gradient on the rectangle, going from gray at the left and right edges, to white in the center. There's probably an easier way to do it, but that's the method I used.) I then ran my Texture Smoother plugin, setting the Treat Transparent Pixels as Far option. I used enough repetitions to get rid of the water-lining (caused by the black-and-white representation) , and to smoothly round the middle peak and the edges. I again used rectangular selections, along with Erase Selection, to erase the top and bottom of the rectangle, to get rid of the rounded top and bottom. In a separate image, I used BoltBait's Grid/Checkerboard plugin to draw a grid, with the line thickness about equal to the space between lines. In the grid image, I made a very thin rectangular selection, the entire height of the image, that included only the horizontal lines. I used Move Selected Pixels to stretch the rectangular selection in both directions, so I ended up with horizontal stripes across the entire image. I applied a Gaussian Blur a couple of pixels wide to the stripes. I copied the grid lines to the clipboard. I used my Texture Merger plugin with the Subtract Merge Mode to apply the stripes to rectangle, to represent the stacked metal plates of the lock case. I wanted to add texturing to the edges of the "metal plates." I ended up using a cheap trick I kind of discovered by accident. I simply converted the 24-bit height map to a black-and-white (and therefore 8-bit) with the Texture Scaler plugin. I did so by turning off Pre-scale Heights to Entire Range and disabling Produce 24-Bit Height Map. (If I were to do it again, I might use a different method, though I think what I did turned out fairly well.) I also wanted the case to look a little "dinged up." I produced a height map for the dings more or less as follows. I started with an 800x800 new image. I Inverted the color to produce an all-black canvas. I duplicated the layer. On the top layer, I added Noise, with Intensity 100, Color Saturation 0, and Coverage 0.50. I used the Color Clearer to remove the black background. In order to increase the dot size, I ran the Edge Expander with Maximum Distance 2, Fade Rate 0, Opacity Threshold 1, and Make Pixels Above Threshold Opaque disabled. I ran Dents with the the defaults, except Refraction and Roughness each set to 25. I merged with the black background layer. I added Noise, with the same settings, except the Coverage increased to 10. (I'm not sure how much this step helped.) I used the Texture Merger to Subtract this ding texture (in the clipboard) from the striped, roughened lock case. The canvas scale factor was set to 1.0, so it didn't change the size of the lock case. The clipboard scale factor was set a small value, so the size of the scratches and dings looked reasonable. I used the Brick Tiled tiling mode so I could move and scale the ding texture around without running off the edge of the texture. I kept the unstriped, untexured version of the lock case, since I needed it for the plastic piece with the "Master" name which surrounds the bottom of the lock. To produce this element, I selected a rectangular section at the bottom of the unstriped lock case and copied it to a new layer. I ran the Texture Smoother for a number of iterations to round off the top and bottom edges. I copied the new element to the clipboard. I ran Texture Shader on the layer with the striped case, using the Maximum Blend Mode and Composite Alpha (which uses the combined alphas of the canvas and clipboard). I set the clipboard scaling to a bit greater than 1.0, to slightly increase the size of the plastic element relative to the metal part of the case. I think I also played around with the XY proportion and clipboard height offset The goal was to make the plastic name-ring look like it surrounded the metal case. Normally there would be no need to produce a merged height map of both the metal case and the plastic ring. Each element could be shaded in its own layer, with the plastic-ring layer above the metal-case layer. However, I planned to use the (infamous) Texture View Skewer, which will require a merged map. Though I had a combined height map, I could still have shaded the two elements in separate layers and then merged the layers. In more complicated cases, that's what I would have done. For this case, I shaded the merged height maps, though, of course, keeping an unshaded version. First, I produced a separate image for the name. It consisted simply of a blue background, with white text saying "Master." I think the font I used was Sitka Banner Bold (i'm not sure there wasn't a better choice, to make the "M" match the actual locks better). I modified the "a" and the "e". On the merged height map, I used a rectangular selection around the plastic region, then inverted the selection so the metal case was selected. I ran the Texture Shader. For shading metal, I often use the Reflection Map (Equirectangular) shading mode, but in this case I just used straight shading with no clipboard image, just white. I set the Specularity quite high. Though logically metal should have a large Specular Exponent (which determines the "sharpness" of the reflection highlight), in this case it looked better to use a small value. As always, I spent a great deal of time adjusting the light direction to achieve effective shading. Now that I had the metal part shaded, I went to shade the plastic name-ring. I copied the name image to the clipboard. I then went to the case height map and inverted the selection, so the rectangle containing the name ring was selected. I ran the Texture Shader, this time using the Surface Offset 1 mapping mode, but with the Mapping Displacement set to 0, since I didn't want any special offsetting to the text. I adjusted the Image Size, Offset, and XY Proportion to place the text where I wanted it (if I were to do it again, I'd make the "Master" name a bit smaller). I changed the Specularity, Specular Exponent. and perhaps some other settings to get a plastic look. I probably also adjusted the light direction a little, for more effective shading. The direction can't be moved far, or else the light won't appear to be coming from the same direction for both elements. I now had a front view of the shaded lock case. I used the (still beta, and still infamous) Texture View Skewer to convert it to a view from somewhat above, looking down. First, I rotated the entire image counterclockwise, since the Texture View Skewer changes the view to have a leftward eye-point. I copied the (combined) height map of the lock case to the clipboard, then ran view-skewer effect on the shaded image. I selected the Use Clipboard For Texture Map option (which is really the only useful way to use it), and adjusted the View Angle and Height Scale for what seemed like a good amount of skewing. I rotated the entire image clockwise, so the lock would be in its original orientation. Through I don't specifically remember doing so, I almost certainly had to adjust the proportions, to account for foreshortening, either by making a rectangular selection, and reducing its height, or by using Paste From Clipboard, and adjusting the XY Proportion. As the last step, I ran pyrochild's Trail plugin to slightly extend the case's right side, to add a little extra 3-D look. I believe the angle was around 70 degrees. Now, finally, I had the front of the case completed. The top of the case. First, I wanted to get the shape of the top view. I started with the skewed front view. Using the Lines/Curves tool in anew layer, I traced along the shallow V shape at the top of the case. Since this represented the edge of the top as seen from an angle, I needed to vertically stretch it out. I made a rectangular selection around the profile-line, and stretched it out till it looked about right. I duplicated the layer, flipped it vertically, and moved the inverted profile-line upward until the thickness of the top looked right. I merged the layers. I then connected the top to the bottom on both sides with curves that represented the top's left and right sides. So now I had a complete outline of the top. I used the Paint Bucket to fill the outline with a gray tone, producing a top view. Now my plan was to make a height map for the top view, including the rivets, and use the View Skewer to adjust the view to the correct view angle. That didn't work out too well. In some situations the View Skewer works very well, in others it doesn't. This was a case where it didn't. MORE TO COME . . .
  4. I'd probably use either BoltBait's horizon-leveling plugin, mentioned above, or the built-in Layers>Rotate/Zoom. You could also try my Paste From Clipboard plugin.
  5. MJW

    OotF#31 ~ Metal Padlock ~ WINNERS.

    Congratulations to @welshblue for two very fine entries (even though he beat me to the idea of doing an antique padlock)! The extreme view angle of welshblue's second entry was most impressive. That's so challenging to do. @Pixey's entry was also exceptionally well done. I particularly liked the key and key ring. (Description of method moved to OOTF discussion comment.)
  6. MJW

    OotF#31 ~ Metal Padlock ~ WINNERS.

    The striations were, for better or worse, intentional. Both sides of the lock have them, but due to the lighting, they're not very visible on the left side. I produced them by the cheap trick of converting the height map from 24-bit to black-and-white before shading it.
  7. After experimenting with it, Screen blending mode seems to work better than Additive.
  8. Assuming you're starting with a black-on-white drawing, here's another method. Add a lower layer and fill it with the color you want to make the lines. Set the blending mode of the upper layer (the one containing the drawing) to Screen. Merge the layers. EDIT: Changed blend mode to Screen from Additive as a result some experimenting done in response to welshblue's follow-up comment.
  9. One way of increasing the size of the contents of a layer is to use Layers>Rotate/Zoom. Perhaps that's what you did previously.
  10. MJW

    OotF#31 ~ Metal Padlock ~ Entries.

    EDIT: Modified proportions.
  11. Ego Eram Reputo, the biggest problem I have is that there's no way for IndirectUI plugins to save and restore the control state. Eventually I may get around to changing some of my plugins to use non-IndirectUI user interfaces, but that probably won't happen anytime soon. It's an awful lot of work; especially if one wants to maintain the general look-and-feel of "standard" PDN effects. A lot of non-Indirect plugins seem to lack such useful and expected features as restore-to-default buttons. I think a general feature that allowed saving control settings would be very useful. Often in complicated editing, a effect needs to be used for something else, but later on, an earlier setting is needed. Writing down the settings and typing them back in gets tedious (especially on plugins with too darned many controls).
  12. I have in the past thought about trying to write a plugin, similar in concept to @pyrochild's ScriptLab, that would implement the type of functionality I described above. It would be super cool. However, as far as I can determine, there's no way to access other effects' tokens, except perhaps through a method called Reflection, which is forbidden to plugin programmers, and which I unfortunately know little about.
  13. Here's how I imagine it working. Suppose you run Texture Merger, then realize you'll probably need the settings later. You would go to the Effect>Height Map menu, just as you would to run the effect. But instead of left-clicking the effect name, you'd right click. PDN would bring up a Save/Restore menu, offering you the option of saving the effect's current settings, or restoring them. When you selected Save, PDN would present the usual file-save menu, allowing you to choose the file name and location. Later on, when you wanted to restore the settings, you'd right-click the effect name again, but this time choose Restore. PDN would then bring up a menu allowing you to select the file. Perhaps you could also be offered the option of restoring certain environment variables, such as the primary and secondary colors. For the History feature, you'd right-click on a history item that corresponds to running an effect. PDN would bring up a menu offering you the option of making the current control settings equal to the control values that were used when the effect was run in the selected step.
  14. I think I'm suggesting something quite a bit simpler. Associated with each PDN effect is a (usually small) data structure referred to as a "token," which contains the control-setting information. There's more or less a one-to-one correspondence between the controls and the token variables. When you exit an effect, the current control settings are saved in the token. The next time you run the effect, the values in the token are used to set the starting settings of the controls. That's how control values persist from one time to the next. I'm saying it would be nice if PND provided the user a way of saving the current token values in a file in a human-readable format, and also a way of restoring them, to replace the effect's current token. I'm also saying it would be nice if history items corresponding to running an effect included a copy of the effect's token, so it could be restored at a later time.
  15. Since I'm dreaming, I'll add one more idea. A copy of the Effect token could be saved as part of the history, so an Effect history item could be selected, and the settings at the time saved to a file, or restored to be the Effect's current settings.