Blender | Light Shafts/God Rays

To make a beam of light coming in through a window you have to use a spot light and not a sun/distant light. This took me a bit to figure out, but it seems Blender just doesn't support the sun light/lamp with volumes at the moment(based on the Blender Guru tutorial I watched to figure this out anyways). First scale it up to fit the window. Next you need to turn volume scattering on. To do this click on the world properties tab and scroll down to the "Volume" drop down. Open it up and select "Volume Scatter" from the drop down(either do that or attach it manually in the shader editor window). Turn the density down to .1. Next attach a "Light Falloff" node to the strength attribute of the "Emission" node of the spot light. Set the strength to 300 on the ligt path node. This will make the spot light more like sun light. And that's it. Also try to make sure the camera isn't inside the spot light cone - when I was testing at first the camera was in the cone and I was getting strange large black artifacts/shapes in my render. Also make sure to turn the volume samples in the render settings down from 1 to 0 if you want a cleaner/higher contrast final render. If you want a dustier look then leave it at 1.

Find the Blender Guru video where he goes over this process in more detail here - https://www.youtube.com/watch?v=VyLOZWevi8g

UPDATE:
Turns out this is only one way of doing it. You can also create a volume box/cube and if you do that the sun/distant light will be visible through the volume.

Blender | Animate values over time

Was just trying to figure out how to make a flickering light in Blender, which could act as an influencing light source from a fire or lightning, etc. After browsing the interwebs for a while I found a post on reddit from 5 years ago( https://bit.ly/2lIy7RX ) that seems to provide a pretty good python solution to this haha. I will post it below. Credit goes to @merschemek on this one. Here it is..

import bpy import random def randf(lo, hi): return random.uniform(lo, hi) bpy.app.driver_namespace["randf"] = randf

Once you’ve run it, use “randf(0,1)” as your driver/in the input box for the value that you want to animate. You can replace the “0,1” with any values that you want the randomized range to be restricted to.

UPDATE: An alternative method to achieve the same or very similar result is by setting key frames on the value you want randomized within the time range that you want it to randomize throughout. You would then open the graph editor and with the object you want the value randomized on selected hit the “n” key(with your mouse cursor over the graph editor) to bring up the properties menus. Next go to the modifiers tab and add the noise modifier. Your values with vary here(the guy in the tutorial I watched(see below) had his strength at 7500), but I finished with mine at 80 in my test file. My scale was at 2 and my depth was at 10. I also restricted the frame range to the frames that I keyed the values on initially.
This method requires more setup and doesn’t give you as much control in terms of specifying a specific value range to stay within, but it also doesn’t rely on a python script and creating drivers which can be beneficial.

*I discovered this technique on “CG Masters” youtube channel in a video titled “Lightning Flashes Using Noise Modifiers in Blender”. You can watch it for yourself here - https://www.youtube.com/watch?v=RF0ttU2ZUBk

Blender | Normal maps

Normal maps on blender need to filter through a “Normal Map” node before connecting to the normal input of the principled shader. Once it’s connected you will need to change the color space setting on the “Image Texture” node for the normal map from sRGB to non-color for it to work.

blender

Blender | Select object of the same kind/type

To select all geometry in the scene select a piece of geometry and then press shift + “G”. A pop up menu will pop up. Next select “type”. Now all of the geometry within your scene will be selected and you can move it into a collection, isolate it, or do whatever you’d like with it. The same method can be used for lights, controls, etc.

Blender | Repeat texture

To tile your textures in blender(similarly to how you would use for example a 2d texture node in Maya or using a Renderman PxrManifold2d node or TileManifold node) you need to create a “Texture Coordinate” node and then plug the UV output into the vector input of a “Mapping” node. The vector output of the “Mapping” node then needs to be plugged into the vector input of the image texture node. You can use this 2 node set up for all image texture node you have plugged into a material.

Blender | Control multiple lights with one set of values

To “link” certain lights together in Blender, so they all share the same attributes simply shift select all of the lights you want to share the same attributes and then press ctrl + “L”. Next select “object data”. This will make it so all of the selected lights share the same light properties. So when you change the colour or intensity on one light, that change will be applied to all of the lights sharing data.

Blender | Clean noise free image

Denoise seems 100% necessary for a close to clean final render with Blender. From my experience you can get most of the way in Renderman without denoise being necessary, although obviously it helps. You just don’t NEED it with Renderman - you can often get away with cranking the settings and still have half decent render times(depending on you’re shooting for) without any denoise(although I still usually us it cuz, why not). To turn it on in Blender go to the render layers tab in the properties editor and scroll to the bottom. You’ll find a check box for it here. Check it off to turn it on. Once on, it helps clean up the image for sure, but they’ve still been quite splotchy for me generally. There are various techniques you can use to help minimize the noise like drowning it out with more light(which isn’t always ideal), turning the sun bounces down to 1 or 2, use portals, check your hdri map resolution, clamp indirect at a low value(around .2 to .5), use larger more distant/spread out light sources - none of these techniques have fully cleaned up my renders though. However I just did a test boosting the radius setting on the denoiser to higher values and this has cleaned up the splotchyness drastically, with little effect to render times while maintaining sharpness and texture quality. I finished with it at 22(above the default of 8).

Blender | Shadow catcher with Blender 2.8 & Cycles

This is pretty straight forward, but different from how other render engines and 3d packages do it so I’m gonna post a quick how to. First select for example the object that is receiving the shadow/s and then go to it’s object properties tab(orange box). Next go to the visibility drop down section and click “Shadow Catcher”. Wapah! Just like that your ground plane will be catching shadows. Now if you have the primary visibility turned off on you objects on top of your ground plane you will notice where they contact the ground plane there will be extremely dark patches/shadows. This is usually fine since you would be layering your objects back on top. However for example if when you layer them back on top and you want them to be semi-transparent/holographic/ghost like you most likely won’t want those patches to be visible. To eliminate these make you top level objects into hold outs. To do this, simply go to the same visibility drop down section of their object properties where you find the shadow catcher option. Right below it is a “Holdout” option. Click that. And that’s it. Done.

*Note: I don’t believe the “Hold out” option is available in 2.79 and earlier in the object properties. You might have to apply a hold out shader to the top level object alternatively. Like the versions of Renderman prior to 21.

Blender | Render with an alpha channel

Was just trying to figure this out for a while. To do this go to your render settings properties tab(camera icon) and drop down the film section. Next make sure “Transparent” is checked off. To view the alpha in the render view click the button in the top right corner of the render view window and select “alpha”.

Blender | Move camera while looking through it

It seems the best way to do this in Blender 2.8 is by while lookng through the camera you want to move pressing shift + `(shift + f in 2.79). This will put you into an fps mode where you use w, a, s, and d to move the camera around. Alternatively you can move the perspective view around until you get a decent angle and then press ctrl + alt + 0 and that will position your current active camera to the current position of you perspective camera - although this doesn’t seem like the most precise way of doing it since you can’t seem to change the focal length of the perspective camera to get an accurate representation of where your render/active camera will be/what the frame will look like.

Blender | Dome/World Light

So it seems that in Blender the dome equivalent(the name of the world light in Renderman/and VRay) is called a world light. However it is not classified as light per-say in Blender, as it is not “creatable" in the viewport. Rather it is found in the properties editor in the “World” tab. And so to create an image based lighting setup in Blender you can attach an environment texture/HDRI to the colour input of the background. I’m still messing with it, but unfortunately it doesn’t seem like you can’t create multiple versions of these lights within one file, as you can with other renders. This can helpful when testing light setups to separate different light kits into separate groups/collections for example or onto seperate render layers. It can also help to use separate domes/env lights as booster lights to subtly kick up the overall brightness of different assets in a scene - This is very efficient as it is easily scriptable because you don’t have to establish a precise position for the light as you do with area lights for example. All you have to do is simply create it at a specific value and link it. If I find a work around for this I will make sure to update this post with the solution.

Blender | Turn off a single objects visibility

To turn off a single objects visibility so it doesn’t show in your renders go to the object properties tab(orange square)>visibility>check off ‘show in renders’. Another way is to make a collection in the outliner and add the object to it then hide the collection.

Blender | Using slots in the render view/window

This is super helpful when doing lighting tests or testing renders to any degree really. This is similar to the catalog column in Renderman’s ‘IT’(Image Tool) window if you have used that, where you can press page up and down to go through recent renders or arrow up and down to go through passes within those renders. To use slots in a similar fashion double click the arrow on the right side of the render window in Blender. Four tabs will pop out. Click on the ‘image’ tab. A pop out menu will appear with a ‘Render Slots’ drop down. In here you can arrow up and down to cycle through your recent renders. You can also add more slots or delete slots here as well.

Blender | Setting the active camera

This is essential to know when you have a scene where you want to either final render from multiple angles or even simply test render from multiple angles. This first method to switch active cameras in Blender is by going to the scene settings tab(a picture of a cone and a sphere). Here you will find a “Camera” menu at the top - If click on the input area it will come up with a list of all the cameras in your scene. Simply select the camera you want to render from and it will become your active/renderable camera once selected. The second method to change your active camera is by selecting a none active camera and then using the cntrl + ‘0’ shortcut. This will then make the camera you had selected your current active camera.

Blender | Focus on object hotkey

For Blender 2.8

The default hotkey for this in Blender is ‘Numpad .(period)’. I’m changing this to ‘f’ for now as it is in Maya; This is only because with it set to ‘f’ I don’t have to move my hand positions and there isn’t another command assigned to the ‘f’ key for the 3D view anyways. ‘F’ also can also stand for “focus” or “frame”, which just makes sense to me. To do this go to Blender preferences>hotkeys and then filter the search by “key-binding” and type Numpad(You can also filter by “name” and search “View Selected”). Next scroll down to the 3D View section until you find “Numpad .” and change it to ‘f’. I made this same change to the hotkey for “Show Selected” in the outliner, since it’s by default set to “Numpad .(dot)” as well.

Blender | Merging verts

This is gonna be a quick tip. I wanted to post it because I frequently use the merge command in Maya while modelling. To merge verts in Blender, the shortcut is alt + m. Conversely you can also find the merge command in the “Remove:” section of the tools panel on the left side of the ui.

To define the vertex you want another vertex to snap to you can pick one of 5 different options(at first, at last, at centre, at cursor, and collapse). I’m not gonna explain them here, as they’re pretty self explanatory - just experiment with them to see what they do :)