Saturday, 29 August 2026

Happy Saturn's day in late Sextilis

 I don't want to develop a reputation as a moany old grumbler who complains a lot, but I've been awake since 4am. I've long passed safe drinking limits for coffee, and I'm dealing with back pain, mouth pain, slight ear pain and sore legs. The last two of those issues are listed for completeness, but they aren't causing me any measurable bother.

So I finished my playthrough of XCOM 2. I'm now very interested in getting that new Star Wars game that apparently offers the same crunchy turn-based tactics. Off in the distance, there's the promise of a Rainbow Six variant.

    "Looks like turn-based tactical games are back on the menu, boys!!"

I need to make some progress with the terrain test. I had a quick play with Gaea 3. It looks amazing, but the early access version they just released is resolution-limited and doesn't appear to support exporting terrains out. A bit of a non-starter for the moment.


Nauts

Created to support the development of Orbital Elements-based 3D content. These three "nauts" are now part of my drop-in characters' set.

1million+, 100k+, and 10k+ polygone counts.


Fun, fun, fun!

I can see me generating a few more in more varied poses in due course. I think I'd knock out a quick science fiction scene with them. I always wanted some decent spacewalk-ready astronauts.

Rock it! 2

Lots of talk of making some custom rocks. I suddenly remember how good Rock it! 2 was. Does it work with Blender 5.2? Well, as of very recently, yes, it does.

Geo-nodes-based rock creation tool. 

Rock it! 2, Aquatiq, and a basic volume ftw!




Friday, 28 August 2026

Onwards towards (long) weekend


Monday is a bank holiday 

Gaea 3.0 teaser video

Aquatiq

I bought an addon! Shopping therapy saves the day! Aquatiq comes from Blender add-on powerhouse Polygoniq, the creators of many mainstay addons, such as Materialiq and Botaniq

I'll do some testing soon! Really, this is a collection of really nice water shaders that you can drop into a scene. I have water in True Terrain, which is really powerful, but not really set up for use in small pools and limited areas. There are some shaders available in the Sanctus Library which can be nice, too. Aquatic also provides drop-in fountains and animated spray "legos" that simulate water flow, not to be confused with complex water-simulation tools like Flipfluids. There's a nice preview from CG Essentials.

Aquatiq waters
There's all the parameters you would need for fine-tuning your water. This is what makes products like this worth the investment; it's not a silver bullet for water rendering, it's a toolset from which you can fashion whatever ammunition your current project needs.



Thursday, 27 August 2026

Today was a day...


'This must be Thursday,' said Arthur to himself, sinking low over his beer. 'I never could get the hang of Thursdays.'

- Arthur Dent

Not great sleep... is how it started. The sleeping ended, but a shitty day began. I was up, dressed and eating breakfast just before 6.00am. If you're going to have a shitty day, you might as well make an early start, as with a bit of luck you'll be able to sneak away early. 

Dental Surgery

I got distracted and left for my appointment a bit late, which forced me to run part of the way with my lower back pain. I got a small filling and a tooth extraction. Yeah, shitty day.

dysregulated

I walked from the dentist to my work shift. There was a rainstorm - not just rain, an actual storm of rain. I completed my shift, returning home at 2:30 to find my youngest son, Leo, was having a massive meltdown, shrieking and shouting his little ADHD-Autism heart out.

Blender 5.2.1

Blender received a bug fix release yesterday. Blender 5.2.1! Always welcome. See the release notes.

VDMs

I reinstalled the rock texture VDM brushes. It took a lot of effort until I remembered that you need to assign a dummy user. 


I will be making some big rocks soon.

Wednesday, 26 August 2026

Women

Here are some of the woman figures I've generated, which I'm adding to a new portion of the Character Set 1 asset library.


Monday, 24 August 2026

Back to work, again

 Halo: Raptor

The director reminded me of a test I said that I'd run, using Gaea to rebuild the terrain element for the service road. It should be possible; the question will be how to do it for the quickest and best results. I must confess, I've not touched Gaea since my rush to proficiency. I'm also hoping that we see Gaea 3.0 appear in the next few weeks. I'll have this test completed by the end of the week.

More Hitem3D

The daily free credits have stopped, but I've continued to generate content using Hitem3D. I took one of my heads and placed it on one of the bodies I'd created in last week's free-credits splurge.

V3 and V2.1 What a difference! Twice the resolution now, apparently.

I also started to create an asset library for the latest high-resolution figures.

I used decimation to create three variants of each figure: at 10k+, 500k+, and 1M+ resolution.

The men! I'll add the women once I've generated a couple more.

While there's a super improvement in the overall resolution, there also seems to be better accuracy. Hands are less prone to weirdness. This could be an issue with using generative AI source images vs high-resolution photographs of real people. There's room for improvement, but we're really only a year into this particular implementation. Where will we be in 5 years? Photorealistic (or near enough) output, maybe?


Friday, 21 August 2026

Blender School: Camera Rig

Extension: Add Dolly Cam (Now pre-installed by default) 

If you want to use Blender's default camera setup for anything like a real-world camera operation, you'll have your work cut out. Almost every common camera operation requires extra functions and constraints. For example, orbiting a Blender camera around a target object can be achieved by adding an empty object and parenting the camera to it. That's fine as far as it goes, but you can go straight to a fully integrated camera rig.

Add a Camera (Dolly Camera), and this is what you win...

The Dolly includes a collection of bone-system-based widgets configured with various constraints to mimic the functions of a real-world camera rig.

Given this is a bone system, you edit it using CTRL+Tab.
Or you can select the rig and go into Pose mode.

The Main Dolly Rig sits beneath the camera; move it to move the whole rig around, much like the default camera.

The Camera Offset sits immediately behind the camera. Move this as if you were placing the camera on a mount that is located away from the rig. For example, you can place the rig on a car model; they use the Camera Offset to position the camera on the side of the car, pointing back at the rig.

The Aim widget is always located in front of the camera's optics. When you move the aim widget, the camera moves to point towards it. This is really useful when you want to move the camera relative to a target.

 Hitem3D Upgraded!

I held off following through with their offer until the v3 model arrived. I'm gone for the 70% discount deal for a year on their pro account, but I absolutely must cancel or downgrade before next year, as I can't afford the full price of £350. In fact, let me create a Google Calendar reminder! 

Generated figures, old and new. Some super results!

 Blowing the dust from terrains with True Terrain 3.5 and True Sky 3. Plus an explosion cloud from my Cloud volume collection.

Boom today!

Wednesday, 19 August 2026

The calm before the storm

 I've returned to my part-time job, with shifts on alternate days until the start of the new term, when it will be Monday-to-Friday. What a shock! I've put on a bit of weight because I wasn't as active over the summer as I'd planned (and I was also eating too much of the wrong sort of food). I didn't maintain my resistance training due to a back injury, although I did keep up with the walking. If this morning's efforts tell me anything, it's that I will lose the weight when I start doing *that* every day. No bad thing!

I felt the need to dive into gaming for a few days. I'm not being very productive at the moment; I thought that maybe an actual gap would help -- a period of fallow before renewing my efforts on the animation project I installed XCOM 2. Oh boy! I love this game, although it's looking a bit dated now -- ten years old and still as engrossing and satisfying a turn-based strategy game as I've ever played.

Screenshot from 1st March 2016! I'd met my Waterloo, but I brought the whole team back, at least.

HitEm3D harder!

The super 3d model generator, HitEm3D, has a new super-detailed model. It's expensive to use but is currently being offered for free, presumably because nobody would try it otherwise, since it's three times the usual cost per model at the highest setting.

It's a brass bust of moi

Previous outputs pushed through the new V3 model

Added clouds/Atmosphere 2 addon ...seems stable

Sunday, 16 August 2026

Grim familiarity

 The Regis apartments. Sheffield had plenty of modernist highrise flats. Eventually considered a blight on the city's skyline, these great grey monuments to concrete must have had an impact on my psyche.


This was a quick test to see what happens when I stack the main block.


Saturday, 15 August 2026

Regis Appartments

 

A quick project! Another grim architectural sketch.


It started as an exercise in modernist architecture—high-density, high-rise apartments.



At this point, the plan was to have a large garden space on that roof platform. I'm unsure whether this will be replaced with something darker. It might be that the building will get a grime treatment - turning it a bit cyberpunk, again.



Wednesday, 12 August 2026

Stability problems

 Oh sheeeeeee-AT

Yesterday morning's stability problems came back. Render crashes on the default scene. Restart, do a few things: render completes. Do a few more things: Blender crashes.
  • I removed Metalworks (again)
  • I removed Atmosphere 2
The problem continued. I then took the unprecedented step of restoring the previous Nvidia driver. So far...so...<touch wood> ...good.

It's weird that Blender is actually mentioned in the latest driver's release notes, so you wouldn't expect foul goings on. This could be something specific to my setup. I could probably test the latest driver on my other system, then see if the crashes happen without installing any additional addons.

A note about Copilot's response to the error log

The AI assistant provided a detailed breakdown of the log. It was very interesting, very specific, probably not right, though. It talks about tt.render as an addon, but it doesn't have any information about it, and I don't think it is an addon. Still, it bodes well for troubleshooting in future. I mean, it can't always be wrong! 💪😆

True Sky 3 was disabled. Strange!

This morning I created a demanding environment scene. If the system was flaky, I'd expect to see crashes. Thankfully, none yet!

Partial Eclipse of the Sun

This evening (6pm-7pm) we should be able to see a partial solar eclipse (70% reduction in light). Might be cool! Might be cloudy in that spot. I'm going up to the top of the hill to watch it unfold. 

Stable table!


Tuesday, 11 August 2026

Some scans and new addons

 

Some Scans

Yesterday I went for a walk into Loxley, the neighbouring suburb. I didn't find the kinds of rocks I was hoping for—what few there were had plants growing around them, making a clean scan impossible. It wasn't a complete waste—I did some practice scans of various things, including an old set of stocks outside the Wadsley Jack.

Practice scans

I'm heading into the city centre today; there are a few rocky objects that are used to block car access, but mostly this job is done with very boring blocks of concrete. I'll keep practising!

Addons: Atmosphere 2

So it looks like I was wrong about being blocked from upgrading to Atmosphere 2. I think I must have accidentally tried to apply two coupons at once. This time it worked using just the 70% upgrade coupon.

Basic Sky

New Clouds
My first reaction: impressed, but not blown away. I always liked their first Physical Starlight and Atmosphere addon, although for environments I preferred True Sky 2, then True Sky 3. PSA seemed to provide crisper results, good for product renders, but True Sky did wacky things that instantly made renders pop, albeit at the cost of that crispness.

Atmosphere 2's clouds are instantly good-looking, but even though there are a lot of parameters, I wasn't seeing True Sky 3's level of control. It's early days, of course. If anything, A2's parameters are deeper and more "mathsy".


Addon: Metalworks

Metalworks looks fab! It's a really deep metal shader system for creating complex metal surfaces. The only snag right now is that it crashes whenever I try to render the results. Not a good start!

Worse than that, it is crashing renders even when Metalworks is not being applied! Only, this might be caused by a new NVIDIA driver installation. I hadn't restarted since installing last week's update. After a system restart, the crash-on-render stopped happening. 

# Blender 5.2.0, Commit date: 2026-07-13 15:20, Hash fbe6228777e7
bpy.ops.true_vault.asset_store_init()  # Operator
bpy.ops.true_vault.asset_store_fetch_page(page=1, use_offline=False)  # Operator
bpy.ops.object.delete(use_global=False, confirm=False)  # Operator
Deleted 1 object(s)  # Info
bpy.ops.mesh.primitive_cube_add(size=2, enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))  # Operator
bpy.context.space_data.shading.type = 'RENDERED'  # Property
bpy.ops.object.light_add(type='SUN', radius=1, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))  # Operator
bpy.ops.lightwrangler.apply_custom_data_block(light_name="Sun", light_type="SUN", customization="Default")  # Operator
bpy.ops.transform.translate(value=(-6.25838, -2.8598, 1.13404), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False, snap=False, snap_elements={'INCREMENT'}, use_snap_project=False, snap_target='CLOSEST', use_snap_self=True, use_snap_edit=True, use_snap_nonedit=True, use_snap_selectable=False)  # Operator
bpy.ops.transform.rotate(value=-0.854849, orient_axis='Z', orient_type='VIEW', orient_matrix=((0.805897, 0.592056, -1.49012e-08), (-0.460156, 0.626358, 0.629232), (0.37254, -0.507096, 0.777218)), orient_matrix_type='VIEW', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False, snap=False, snap_elements={'INCREMENT'}, use_snap_project=False, snap_target='CLOSEST', use_snap_self=True, use_snap_edit=True, use_snap_nonedit=True, use_snap_selectable=False)  # Operator
bpy.context.space_data.context = 'DATA'  # Property
bpy.context.object.data.photographer.irradiance = 3  # Property
bpy.ops.transform.rotate(value=-0.42096, orient_axis='Z', orient_type='VIEW', orient_matrix=((0.805897, 0.592056, -1.49012e-08), (-0.460156, 0.626358, 0.629232), (0.37254, -0.507096, 0.777218)), orient_matrix_type='VIEW', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False, snap=False, snap_elements={'INCREMENT'}, use_snap_project=False, snap_target='CLOSEST', use_snap_self=True, use_snap_edit=True, use_snap_nonedit=True, use_snap_selectable=False)  # Operator
bpy.ops.transform.translate(value=(0, 0, 5.05358), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(False, False, True), mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False, snap=False, snap_elements={'INCREMENT'}, use_snap_project=False, snap_target='CLOSEST', use_snap_self=True, use_snap_edit=True, use_snap_nonedit=True, use_snap_selectable=False)  # Operator
bpy.ops.mesh.primitive_plane_add(size=2, enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))  # Operator
bpy.ops.transform.resize(value=(-2.01375, -2.01375, -2.01375), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False, snap=False, snap_elements={'INCREMENT'}, use_snap_project=False, snap_target='CLOSEST', use_snap_self=True, use_snap_edit=True, use_snap_nonedit=True, use_snap_selectable=False)  # Operator
bpy.ops.transform.resize(value=(2.5325, 2.5325, 2.5325), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False, snap=False, snap_elements={'INCREMENT'}, use_snap_project=False, snap_target='CLOSEST', use_snap_self=True, use_snap_edit=True, use_snap_nonedit=True, use_snap_selectable=False)  # Operator
bpy.ops.transform.resize(value=(1.63292, 1.63292, 1.63292), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False, snap=False, snap_elements={'INCREMENT'}, use_snap_project=False, snap_target='CLOSEST', use_snap_self=True, use_snap_edit=True, use_snap_nonedit=True, use_snap_selectable=False)  # Operator
bpy.ops.transform.translate(value=(-0, -0, -3.85117), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(False, False, True), mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False, snap=False, snap_elements={'INCREMENT'}, use_snap_project=False, snap_target='CLOSEST', use_snap_self=True, use_snap_edit=True, use_snap_nonedit=True, use_snap_selectable=False)  # Operator
bpy.ops.transform.resize(value=(1.65643, 1.65643, 1.65643), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False, snap=False, snap_elements={'INCREMENT'}, use_snap_project=False, snap_target='CLOSEST', use_snap_self=True, use_snap_edit=True, use_snap_nonedit=True, use_snap_selectable=False)  # Operator
bpy.ops.transform.resize(value=(0.81061, 0.81061, 0.81061), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False, snap=False, snap_elements={'INCREMENT'}, use_snap_project=False, snap_target='CLOSEST', use_snap_self=True, use_snap_edit=True, use_snap_nonedit=True, use_snap_selectable=False)  # Operator
bpy.ops.transform.resize(value=(1.71865, 1.71865, 1.71865), orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False, snap=False, snap_elements={'INCREMENT'}, use_snap_project=False, snap_target='CLOSEST', use_snap_self=True, use_snap_edit=True, use_snap_nonedit=True, use_snap_selectable=False)  # Operator
bpy.ops.transform.rotate(value=0.504055, orient_axis='Z', orient_type='VIEW', orient_matrix=((0.805897, 0.592056, -1.49012e-08), (-0.460156, 0.626358, 0.629232), (0.37254, -0.507096, 0.777218)), orient_matrix_type='VIEW', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False, snap=False, snap_elements={'INCREMENT'}, use_snap_project=False, snap_target='CLOSEST', use_snap_self=True, use_snap_edit=True, use_snap_nonedit=True, use_snap_selectable=False)  # Operator
bpy.ops.transform.rotate(value=1.33445, orient_axis='Z', orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(False, False, True), mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False, snap=False, snap_elements={'INCREMENT'}, use_snap_project=False, snap_target='CLOSEST', use_snap_self=True, use_snap_edit=True, use_snap_nonedit=True, use_snap_selectable=False)  # Operator
bpy.ops.transform.rotate(value=-1.75908, orient_axis='Z', orient_type='VIEW', orient_matrix=((0.805897, 0.592056, -1.49012e-08), (-0.460156, 0.626358, 0.629232), (0.37254, -0.507096, 0.777218)), orient_matrix_type='VIEW', mirror=False, use_proportional_edit=False, proportional_edit_falloff='SMOOTH', proportional_size=1, use_proportional_connected=False, use_proportional_projected=False, snap=False, snap_elements={'INCREMENT'}, use_snap_project=False, snap_target='CLOSEST', use_snap_self=True, use_snap_edit=True, use_snap_nonedit=True, use_snap_selectable=False)  # Operator
bpy.ops.tt.render(use_viewport=True)  # Operator

# backtrace
Exception Record:

ExceptionCode         : EXCEPTION_ACCESS_VIOLATION (0xc0000005)
Exception Address     : 0x00007FF66E2DA0FD
Exception Module      : blender.exe
Exception Flags       : 0x00000000
Exception Parameters  : 0x2
Parameters[0] (action)  : 0x0000000000000000 (read)
Parameters[1] (address) : 0x0000000000000050


Stack trace:
blender.exe         :0x00007FF66E2DA0C0  blender::BKE_layer_eval_view_layer_indexed
blender.exe         :0x00007FF66F45EBE0  blender::deg::`anonymous namespace'::deg_task_run_func
blender.exe         :0x00007FF66E531C80  tbb::detail::d2::function_task<blender::Task>::execute
tbb12.dll           :0x00007FF8132A8C60  tbb::detail::r1::current_context
tbb12.dll           :0x00007FF8132A8C60  tbb::detail::r1::current_context
blender.exe         :0x00007FF66E531750  tbb::detail::d0::try_call_proxy<`tbb::detail::d2::task_group_base::wait'::`1'::<lambda_1> >::on_com
blender.exe         :0x00007FF66E531000  blender::TaskPool::tbb_task_pool_work_and_wait
blender.exe         :0x00007FF66F45E760  blender::deg::`anonymous namespace'::evaluate_graph_threaded_stage
blender.exe         :0x00007FF66F45E390  blender::deg::deg_evaluate_on_refresh
blender.exe         :0x00007FF66E592890  blender::deg_flush_updates_and_refresh
blender.exe         :0x00007FF66DE937B0  blender::scene_graph_update_tagged
blender.exe         :0x00007FF66E276FF0  blender::wm_event_do_depsgraph
blender.exe         :0x00007FF66E2772E0  blender::wm_event_do_refresh_wm_and_depsgraph
blender.exe         :0x00007FF66E277380  blender::wm_event_do_notifiers
blender.exe         :0x00007FF66E272280  blender::WM_main
blender.exe         :0x00007FF66DE31030  main
blender.exe         :0x00007FF672A2C0A4  __scrt_common_main_seh
KERNEL32.DLL        :0x00007FF82EEDCCA0  BaseThreadInitThunk
ntdll.dll           :0x00007FF82FDEAD40  RtlUserThreadStart


Threads:
Thread : 00000eb0
ntdll.dll           :0x00007FF82FEA03F0  NtWaitForSingleObject
KERNELBASE.dll      :0x00007FF82D5CC070  WaitForSingleObjectEx
IlmThread.dll       :0x00007FF817224920  IlmThread_3_4::Semaphore::wait
IlmThread.dll       :0x00007FF8172233C0  IlmThread_3_4::ThreadPool::setThreadProvider
IlmThread.dll       :0x00007FF817221280  IlmThread_3_4::supportsThreads
ucrtbase.dll        :0x00007FF82CF7CBE0  wcsrchr
KERNEL32.DLL        :0x00007FF82EEDCCA0  BaseThreadInitThunk
ntdll.dll           :0x00007FF82FDEAD40  RtlUserThreadStart
...snip

Happy Saturn's day in late Sextilis

 I don't want to develop a reputation as a moany old grumbler who complains a lot, but I've been awake since 4am. I've long pass...