Ben Crowder / Blog

Blog: #blender

49 posts / tag feed / about the blog / archive / tags

New artwork: No Man Can Serve Two Masters.

Made in Blender. This also uses a displacement on a plane for the ground texture, with a little more texturing applied in post in Affinity Photo.

No Man Can Serve Two Masters

Reply via email or office hours

New artwork: Wise as Serpents, and Harmless as Doves.

This uses the Blender heightfield technique I wrote about in Prints 2.1. I made a grayscale texture — Figma for the base, Cirque + SVG filters for the circles, textures applied in Affinity Photo — and then used that as a displacement on a plane. I also exported a color map from Figma for the coloring. Little bit of fog and chromatic aberration added in as well.

Wise as Serpents, and Harmless as Doves

Reply via email or office hours

Projects — Prints 2.1

Religious art

Before the World Was VI
Before the World Was VI. Another take on the celestial yin & yang version.
Follow Me
Follow Me. I really like the bolder colors here. One of my favorites.
I’ve a Mother There III
I’ve a Mother There III. I wasn’t sure whether I wanted to do another negative space piece but decided to go for it.
In Their Own Image
In Their Own Image. Finally branched out to some other scriptures for my Heavenly Parents pieces. Initially this one looked too much like a restroom sign. Also, I don’t know that I’ve found the simplest way to represent this idea yet.
A Beloved Daughter
A Beloved Daughter. I was reading Elder Renlund’s conference talk and realized I hadn’t done this yet.
Prodigal Son II
Prodigal Son II. Fairly close to the first iteration but without the unnecessary ground.

Other art

Lately I’ve been playing around with making meaningless decorative pieces in Blender, using displacement maps with (for the most part) procedural heightfields. For these I’ve generally textured the heightfield in Affinity Photo and sometimes also textured a separate color map. Looking forward to doing more work in this vein.

Pattern 001
Pattern 001. This is the one that wasn’t procedural; I made the heightfield in Figma. While I like the way the sun lamp lights things evenly, it still feels maybe a little too harsh to me. I think of this piece as some kind of vintage fabric.
Pattern 002 A
Pattern 002 A. Kind of going for a Central American archaeological feel here. For this I wrote a Python script that generated rectangles on a grid in SVG for the heightfield. Switched to a spotlight lamp, and added some fog. I added the green in post.
Pattern 002 B
Pattern 002 B. Same script as 002 A, this time with different textures and lighting. Going for a Middle Eastern archaeological feel. I also added a slight bit of rippling and rotational blur on top to make it feel a little magical.
Pattern 003 A
Pattern 003 A. New script. Fairly pleased with how this turned out — all the different varieties that come out from random circles. (Since that’s all the heightfield is, really.) I added the lower-level squares on a last-minute impulse and I’m glad I did.
Pattern 003 B
Pattern 003 B. Same script as 003 A. I love love love the way the heightfield texture makes it look like things are growing, in a creepy way. Added depth of field to make things look more underwater. I’m happy with the old-photograph feel, too.
Pattern 004
Pattern 004. It still blows my mind that I can take a black-and-white heightfield and use it to generate art like this. Kind of cool how several of these look like they’re bowls even though the interiors aren’t actually rounded.

Reply via email or office hours

Weeknotes 2.1

  • Weeknotes are back, I think, and we’ll start a new season to celebrate the gap.
  • Today marks one full year since BYU announced that classes were going remote, and tomorrow is the anniversary of my work and the kids’ school following suit. One year. Whew. A bit mind-blowing. It’s certainly taken longer than we thought it would, but hope is finally upon us. My wife and I are looking forward to getting vaccinated next month, and then hopefully the trials with children go well. (We have a child with a high-risk medical condition, so we can’t really breathe easy until the whole family’s vaccinated. Which probably won’t be till the end of the year. Endure to the end!)
  • Quick update on the new job (which is great, loving it): while I still hit occasional pockets of onboarding slowness (new parts of the codebase, mainly), overall I feel like the impostor syndrome is mostly shutting the heck up. Also, Go turns out to be a great language for team-based work, at least in my view. Extremely easy to read, and it feels transparent, like it’s just you and what you’re trying to do, without the language getting in the way.
  • A couple weeks ago I messed up my back and have been dealing with the fallout since then. This time it’s taking longer to recover than it did a few years ago, which I suspect has to do at least in part with age. What a joy.
  • Art has slowed down a bit. I’m still planning to keep at it, but on a less regular basis. (It’s been my main thing for a while now and I think I’d like to focus more on other things.) When I do work on it, I’m planning to continue exploring the new texturing technique I used on Where Can I Turn for Peace? (probably redo a few old pieces with it). Maybe some more Blender, too, though I’m not really sure yet how that fits in.
  • Most of my writing projects are in the planning/outlining stages, so there’s not much to show yet there, sadly. (A fact which needs to bother me more, enough so that I start actually finishing stories. Good grief. But I guess part of working in public is being incompetent in public. Here you go! And I hope that the beats idea is the answer to my writing woes.)
  • I’ve finished the initial draft of lowercase letters on the Hinte typeface, and I’m in the middle of refining those and starting on the uppercase. Hoping to do much more type design going forward. (And eventually replace Literata on this site with something homegrown.)
  • As part of that endeavor, by the way, I’m itching to build that nice new web-based version of Curves. (FontForge is functional, sure, but its UI definitely does not spark joy for me.) Since I’ve already built the font-generating backend, the main remaining challenge here is just figuring out how I want the UI to work.

Reply via email or office hours

Links #38

Ziglings. Learn Zig by fixing small bugs in small programs. (Inspired by rustlings, though those exercises seem to be broader than just fixing errors.) A good way to learn a programming language, I think.

Maggie Appleton on bi-directional links. Doing this locally is one of the (many) changes I want to make down the road when I rebuild this site’s backend.

Vasilis van Gemert on where web page navigation should be. I’m convinced: nav at the bottom of the source file, and on mobile at the bottom visually as well. Planning to make the change here soon.

Blender 2.92 dropped recently. Geometry nodes look promising, and it’s crazy to see how all the grease pencil work has turned Blender into a viable 2D animation studio as well.

PEP 636. Pattern matching! In Python! Very much looking forward to this — I’ve loved using it in Rust.


Reply via email or office hours

Links #28


Reply via email or office hours

Links #22

  • ProgrammingFonts.org — I’ve been using Go Mono for years now but lately I’ve been thinking that maybe it’s time to change things up a bit
  • Starship — a cross-shell prompt written in Rust, though I haven’t yet dived deep enough into the configuration docs to see if I can bend it to my will
  • Mark Boulton on history and digital type specimens — ephemerality for some things doesn’t matter, but the lack of excellent solutions for others (family photos, etc.) bothers me
  • Joseph Gentle on CRDTs — going along with the local-first idea I posted about in the last batch
  • 100+ Blender modeling tips — I’ve been working through this, quite helpful

Reply via email or office hours

New artwork: Within the Walls of Your Own Homes.

I realized (this is the very small breakthrough I mentioned yesterday) that I could use Blender to add 3D texture to my pieces. Verisimilitude has been the goal all along, and using an actual 3D renderer brings so much to the table that it boggles my mind that I didn’t think of this much earlier.

A closeup of the texture:

within-the-walls-closeup.jpg

How I made this piece: I mocked it up in Illustrator, then exported it to SVG where I manually added the turbulence and displacement filters (in Vim) to distress the edges of the white square, which you can see in that closeup. I used Inkscape to export the SVG to a 6500×6500 PNG.

Then, in Blender, I created a plane and went to town on the shading, using a combination of procedural and image textures to mix the colors together and displace the geometry of the plane. There’s a key light and a dim fill light. And in the compositor I added a little chromatic aberration around the edges with the lens distortion filter.

Rendered it at 5200×5200, which took about two hours on my 16″ MacBook Pro. I tend to work a little smaller and then upscale to 6500×6500 (for square pieces), since Photoshop’s upscaling is fairly decent these days. After upscaling, I added my signature thingie, which I’ll add in Blender in the future so it fits in better.

Here’s the node setup on the plane (and in the future I’ll use groups to make things more manageable):

within-the-walls-nodes.png

Overall, I’m happy with this technique. It’s more time-consuming than painting textures in Photoshop, but I can do other things while it’s rendering, and the result looks much better to me. Working in 3D is more fun, too. Most importantly, using Blender gives me loads of new options that would have been harder to do well with my old technique — shiny paint, glowing materials, etc.


Reply via email or office hours

Wave GIF

A quick animated GIF I threw together:

wave-001

I made the initial animation in Blender, using the wave and displace modifiers and some postprocessing in the node editor. Then I imported the frames into After Effects and did a little more processing (added grain, some color adjustments). I exported the frames as a PNG sequence and then converted them to a GIF using ImageMagick on the command line:

convert -delay 1x20 *.png -resize 500x500 -layers optimize +dither -colors 32 output.gif

More animations coming in the near future, hopefully.


Reply via email or office hours

Postmortem: Daily Blender

Done! Today was my last Daily Blender render (since I’m not doing Sundays). Whew. Here they all are:

Other than feeling guilty about spamming people on Twitter and Facebook about it each day, it’s been fun. I’ve pushed myself and done far more Blender than I had in the whole year before this month (just six pieces), and I’ve learned a lot. I’ve started using the rigid body sim, the cloth sim, the hair sim, the cell fracture addon, and environment maps. I’ve done a little more sculpting (can’t say that I’m any good at it yet, though). And, from looking at this overview image, I’ve learned once again that my artistic style is all over the map.

Things I still need to work on:

  • Modeling. I found myself avoiding it as much as possible this month. I can do basic stuff, but not much beyond that. (What would probably be best, I think, is a “Daily Modeling” challenge. But not just yet, and I’ll probably keep it private this time.)
  • Lighting. Environment maps helped a lot, but I still feel like it’s purely accidental when I end up with good lighting in my pieces.
  • UV mapping. I’m still scared of it.
  • I only used Freestyle on one piece. I wish I’d used it more.
  • OSL. I’ve done a little with it but not much.
  • External renderers (LuxRender, Yafaray, Mitsuba, Appleseed).

This daily challenge thing has once again proven productive. (The other time I did it was NaShoStoMo back in April 2011, which netted me twenty stories.) But now it’s time to rest.


Reply via email or office hours