Blender is an open-source 3D modelling software.
It can be used for creating 3D models for games, creating 2D/3D animations, and even creating video games.
choco install blender
Blender is available on the Snap store
sudo snap install blender --classic
Geometry nodes allow you to procedurally modify the geometry of the object. Some things it can do include instancing of objects, moving vertices, and arithmetic. Note that Geometry nodes are available in Blender 2.92+ with some nodes introduced in 2.93 LTS.
See some references:
Rendering and Compositing
Press <key>F12</key> to render.
- In the view layer properties, check
- Switch to the compositor layout.
- Add a denoise node, under filter.
- Attach the denoising normal, denoising albedo, and denoising depth.
Blender supports scripting as an alternative means of interaction.
Most things are available in the
See one of the following resources to get started:
vertices = [(-1, -1, 0), (1, -1, 0), (-1, 1, 0), (1, 1, 0)] edges = [(0,1), (1,2), (2,3), (3,0)] faces = [(0,1,2), (1,2,3)] uvs = [(0, 0), (1, 0), (0, 1), (1, 1)] # Create a new mesh new_mesh = bpy.data.meshes.new(mesh_name) new_mesh.from_pydata(vertices, edges, faces) new_mesh.update() # Add UVs uv_layer = new_mesh.uv_layers.new() for face in new_mesh.polygons: for vert_idx, loop_idx in zip(face.vertices, face.loop_indices): uv_layer.data[loop_idx].uv = uvs[vert_idx]
# Create a new material my_material = bpy.data.materials.new("My New Material") my_material.use_nodes = True # Add material to an object my_object.data.materials.append(my_material)
Saving scripts outside
By default, everything is stored in the
.blend file including your custom scripts.
If you want to store your scripts outside or use another IDE, you will need to have the script inside Blender call the script outside:
import bpy filepath = bpy.path.abspath("//myscript.py") exec(compile(open(filepath).read(), filename, 'exec'))
def render_to_file(filepath, width, height): # Set device to GPU bpy.context.scene.cycles.device = "GPU" # Set resolution bpy.context.scene.render.resolution_x = width bpy.context.scene.render.resolution_y = height bpy.context.scene.render.resolution_percentage = 100 # Set output file path bpy.context.scene.render.filepath = filepath # Do render bpy.ops.render.render(write_still=True)
# Model matrix my_object.matrix_world # View matrix bpy.context.scene.camera.matrix_world.inverted() # Projection matrix projection_matrix = bpy.context.scene.camera.calc_matrix_camera( bpy.context.evaluated_depsgraph_get(), x=WIDTH, y=HEIGHT)
Note that Blender has a github mirror which may be faster to clone.
- Blender 2.8 Beginner Tutorial by Blender Guru
- This is an updated version of the famous donut tutorial
- See https://www.reddit.com/r/BlenderDoughnuts/
- Complete Blender Creator: Learn 3D Modelling for Beginners (Udemy, $20)