Blender (software): Difference between revisions

 
(14 intermediate revisions by the same user not shown)
Line 18: Line 18:


==Modelling==
==Modelling==
===Geometry Nodes===
[https://docs.blender.org/manual/en/latest/modeling/geometry_nodes/index.html Blender Manual Geometry Nodes]
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:
* [https://www.youtube.com/watch?v=Lb9tJhn9EHE Making grass by SouthernShotty]
* [https://www.youtube.com/watch?v=TjGL4RjR13Q Making a raspberry by Bad Normals]
* [https://www.youtube.com/watch?v=52UYqe3zdxQ Making a gumdrop by Blender Guru]
==Materials and Shaders==
Blender uses a node system for shader which let you composite different textures and BSDFS.
===Bypass BSDF===
If you wish to use a raw colors from a texture, bypassing materials altogether, you can directly attach a image texture node output to the material output.<br>
For transparent textures, you will need a transparent BSDF node and a mix node with alpha connected to <code>mix.outputs["Fac"]</code> to achieve transparency.
==Animations==
==Rendering and Compositing==
Press {{key press|F12}} to render.
===Denoising===
# In the view layer properties, check <code>Denoising Data</code>
# Switch to the compositor layout.
# Add a denoise node, under filter.
# Attach the denoising normal, denoising albedo, and denoising depth.


==Scripting==
==Scripting==
Line 58: Line 88:
# Add material to an object
# Add material to an object
my_object.data.materials.append(my_material)
my_object.data.materials.append(my_material)
</syntaxhighlight>
====Images====
<syntaxhighlight lang="python">
# Add an image
image_bpy = bpy.data.images.new("my_image", width=width, height=height, alpha=(channels==4), float_buffer=False)
image_bpy.pixels = np.flipud(image_np).ravel()
image_tex_node = my_material.node_tree.nodes.new("ShaderNodeTexImage")
image_tex_node.image = image_bpy
my_material.node_tree.links.new(image_tex_node.outputs['Color'], my_bsdf.inputs['Base Color'])
</syntaxhighlight>
</syntaxhighlight>


Line 70: Line 109:
exec(compile(open(filepath).read(), filename, 'exec'))
exec(compile(open(filepath).read(), filename, 'exec'))
</syntaxhighlight>
</syntaxhighlight>
===Rendering===
<syntaxhighlight lang="python">
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)
</syntaxhighlight>
===MVP matrices===
[https://github.com/blender/blender/blob/v2.93.0/doc/python_api/examples/gpu.9.py Example python code]
<syntaxhighlight lang="python">
# 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)
</syntaxhighlight>
===Python Modules===
To add modules, install them using pip to the <code>scripts/modules</code> directory of your Blender install:
<pre>
python3.9 -m pip install -t=scripts/modules $MODULE
</pre>
* If you installed blender using snap, you will need to create another scripts directory somewhere else.
==Compiling Blender==
See [https://wiki.blender.org/wiki/Building_Blender/Linux/Ubuntu https://wiki.blender.org/wiki/Building_Blender/Linux/Ubuntu],
Note that Blender has a [https://github.com/blender/blender github mirror] which may be faster to clone.


==Resources==
==Resources==