Show description
The Ultimate Blender Guide
The Ultimate Blender Guide
Blender Guide
The Basics
Introduction
The Interface
Workspaces
Layout
Modeling
Sculpting
UV Editing
Texture Paint
Shading
Animation
Rendering
Compositing
Geometry Nodes
Scripting
Introduction to Blender
Welcome to the world of Blender! Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D-printed models, motion graphics, interactive 3D applications, and video games. It's an incredibly powerful and versatile tool, but its depth can be intimidating. This guide is designed to break it down, workspace by workspace.
The Blender Philosophy
Free and Open Source: Blender is developed by the community and is free for everyone, for any purpose, forever.
All-in-One Pipeline: You can take a project from the initial concept all the way to the final render and post-production without ever leaving Blender.
Hotkeys are King: Blender is designed for speed. While you can click buttons, learning the keyboard shortcuts (hotkeys) is the key to an efficient workflow.
Non-destructive Workflow: Many of Blender's tools, especially modifiers and nodes, allow you to make changes without permanently altering your original work.
Understanding the Interface
Blender's interface is fully customizable but is built around a few core components. Mastering navigation is the first step to mastering Blender.
Core Components
3D Viewport
This is your main window into the 3D world. You'll spend most of your time here, manipulating objects and viewing your scene.
Outliner
Located in the top-right by default, this is a list of everything in your scene (objects, cameras, lights, etc.).…
The Ultimate Blender Guide
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>The Ultimate Blender Guide</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Inter', sans-serif;
background-color: #282c34;
color: #e2e2e2;
}
/* Blender-like scrollbar */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: #282c34;
}
::-webkit-scrollbar-thumb {
background: #4b515d;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #5f6775;
}
.hotkey {
background-color: #f09400;
color: #282c34;
padding: 2px 6px;
border-radius: 4px;
font-weight: 600;
font-size: 0.9em;
display: inline-block;
margin: 0 2px;
border-bottom: 2px solid #c07600;
}
.content-section {
display: none;
}
.content-section.active {
display: block;
}
.nav-link.active {
background-color: #f09400;
color: #282c34;
}
</style>
</head>
<body class="flex h-screen overflow-hidden">
<!-- Sidebar Navigation -->
<aside class="w-64 h-full bg-[#3a3f4a] p-4 overflow-y-auto">
<div class="flex items-center mb-6">
<svg class="w-10 h-10 text-[#f09400] mr-2" viewBox="0 0 24 24" fill="currentColor">
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-2.5-3.5c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5-1.5.67-1.5 1.5.67 1.5 1.5 1.5zM12 5c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zm4.5 9.5c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5-1.5.67-1.5 1.5.67 1.5 1.5 1.5z"/>
</svg>
<h1 class="text-xl font-bold text-white">Blender Guide</h1>
</div>
<nav id="sidebar-nav">
<h2 class="text-xs font-bold text-gray-400 uppercase tracking-wider mb-2">The Basics</h2>
<a href="#introduction" class="nav-link block w-full text-left py-2 px-3 rounded-md mb-1 hover:bg-[#4b515d] transition-colors duration-200">Introduction</a>
<a href="#interface" class="nav-link block w-full text-left py-2 px-3 rounded-md mb-1 hover:bg-[#4b515d] transition-colors duration-200">The Interface</a>
<h2 class="text-xs font-bold text-gray-400 uppercase tracking-wider mt-4 mb-2">Workspaces</h2>
<a href="#layout" class="nav-link block w-full text-left py-2 px-3 rounded-md mb-1 hover:bg-[#4b515d] transition-colors duration-200">Layout</a>
<a href="#modeling" class="nav-link block w-full text-left py-2 px-3 rounded-md mb-1 hover:bg-[#4b515d] transition-colors duration-200">Modeling</a>
<a href="#sculpting" class="nav-link block w-full text-left py-2 px-3 rounded-md mb-1 hover:bg-[#4b515d] transition-colors duration-200">Sculpting</a>
<a href="#uv_editing" class="nav-link block w-full text-left py-2 px-3 rounded-md mb-1 hover:bg-[#4b515d] transition-colors duration-200">UV Editing</a>
<a href="#texture_paint" class="nav-link block w-full text-left py-2 px-3 rounded-md mb-1 hover:bg-[#4b515d] transition-colors duration-200">Texture Paint</a>
<a href="#shading" class="nav-link block w-full text-left py-2 px-3 rounded-md mb-1 hover:bg-[#4b515d] transition-colors duration-200">Shading</a>
<a href="#animation" class="nav-link block w-full text-left py-2 px-3 rounded-md mb-1 hover:bg-[#4b515d] transition-colors duration-200">Animation</a>
<a href="#rendering" class="nav-link block w-full text-left py-2 px-3 rounded-md mb-1 hover:bg-[#4b515d] transition-colors duration-200">Rendering</a>
<a href="#compositing" class="nav-link block w-full text-left py-2 px-3 rounded-md mb-1 hover:bg-[#4b515d] transition-colors duration-200">Compositing</a>
<a href="#geometry_nodes" class="nav-link block w-full text-left py-2 px-3 rounded-md mb-1 hover:bg-[#4b515d] transition-colors duration-200">Geometry Nodes</a>
<a href="#scripting" class="nav-link block w-full text-left py-2 px-3 rounded-md mb-1 hover:bg-[#4b515d] transition-colors duration-200">Scripting</a>
</nav>
</aside>
<!-- Main Content -->
<main id="main-content" class="flex-1 p-8 overflow-y-auto">
<!-- Introduction Section -->
<section id="introduction" class="content-section">
<h2 class="text-4xl font-bold text-white mb-4 border-b-2 border-[#4b515d] pb-2">Introduction to Blender</h2>
<p class="mb-4 text-lg">
Welcome to the world of Blender! Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D-printed models, motion graphics, interactive 3D applications, and video games. It's an incredibly powerful and versatile tool, but its depth can be intimidating. This guide is designed to break it down, workspace by workspace.
</p>
<h3 class="text-2xl font-semibold text-white mt-6 mb-3">The Blender Philosophy</h3>
<ul class="list-disc list-inside space-y-2 pl-4">
<li><strong>Free and Open Source:</strong> Blender is developed by the community and is free for everyone, for any purpose, forever.</li>
<li><strong>All-in-One Pipeline:</strong> You can take a project from the initial concept all the way to the final render and post-production without ever leaving Blender.</li>
<li><strong>Hotkeys are King:</strong> Blender is designed for speed. While you can click buttons, learning the keyboard shortcuts (hotkeys) is the key to an efficient workflow.</li>
<li><strong>Non-destructive Workflow:</strong> Many of Blender's tools, especially modifiers and nodes, allow you to make changes without permanently altering your original work.</li>
</ul>
</section>
<!-- The Interface Section -->
<section id="interface" class="content-section">
<h2 class="text-4xl font-bold text-white mb-4 border-b-2 border-[#4b515d] pb-2">Understanding the Interface</h2>
<p class="mb-4 text-lg">
Blender's interface is fully customizable but is built around a few core components. Mastering navigation is the first step to mastering Blender.
</p>
<h3 class="text-2xl font-semibold text-white mt-6 mb-3">Core Components</h3>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="bg-[#3a3f4a] p-4 rounded-lg">
<h4 class="text-xl font-bold text-[#f09400] mb-2">3D Viewport</h4>
<p>This is your main window into the 3D world. You'll spend most of your time here, manipulating objects and viewing your scene.</p>
</div>
<div class="bg-[#3a3f4a] p-4 rounded-lg">
<h4 class="text-xl font-bold text-[#f09400] mb-2">Outliner</h4>
<p>Located in the top-right by default, this is a list of everything in your scene (objects, cameras, lights, etc.). It's essential for organization.</p>
</div>
<div class="bg-[#3a3f4a] p-4 rounded-lg">
<h4 class="text-xl font-bold text-[#f09400] mb-2">Properties Panel</h4>
<p>In the bottom-right, this context-sensitive panel contains all the settings for your selected object, the render engine, the world, modifiers, and more.</p>
</div>
<div class="bg-[#3a3f4a] p-4 rounded-lg">
<h4 class="text-xl font-bold text-[#f09400] mb-2">Timeline</h4>
<p>At the bottom, this window is used for animation, allowing you to control playback and set keyframes.</p>
</div>
</div>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Viewport Navigation Hotkeys</h3>
<table class="w-full text-left bg-[#3a3f4a] rounded-lg overflow-hidden">
<thead class="bg-[#4b515d]">
<tr>
<th class="p-3">Action</th>
<th class="p-3">Hotkey</th>
<th class="p-3">Description</th>
</tr>
</thead>
<tbody>
<tr class="border-b border-[#282c34]">
<td class="p-3">Orbit</td>
<td class="p-3"><span class="hotkey">Middle Mouse Button</span> + Drag</td>
<td>Rotate the view around a central pivot point.</td>
</tr>
<tr class="border-b border-[#282c34]">
<td class="p-3">Pan</td>
<td class="p-3"><span class="hotkey">Shift</span> + <span class="hotkey">Middle Mouse Button</span> + Drag</td>
<td>Slide the view left, right, up, or down.</td>
</tr>
<tr class="border-b border-[#282c34]">
<td class="p-3">Zoom</td>
<td class="p-3"><span class="hotkey">Scroll Wheel</span> or <span class="hotkey">Ctrl</span> + <span class="hotkey">MMB</span> + Drag</td>
<td>Move the view closer or further away.</td>
</tr>
<tr class="border-b border-[#282c34]">
<td class="p-3">Frame Selected</td>
<td class="p-3"><span class="hotkey">Numpad .</span> (Period)</td>
<td>Zooms and centers the view on the selected object(s).</td>
</tr>
<tr>
<td class="p-3">View Camera</td>
<td class="p-3"><span class="hotkey">Numpad 0</span></td>
<td>Jump to the active camera's point of view.</td>
</tr>
</tbody>
</table>
</section>
<!-- Layout Section -->
<section id="layout" class="content-section">
<h2 class="text-4xl font-bold text-white mb-4 border-b-2 border-[#4b515d] pb-2">Layout Workspace</h2>
<p class="mb-4 text-lg">
The Layout workspace is your general-purpose "studio floor." It's designed for scene assembly, where you arrange objects, lights, and cameras. It's a balanced workspace that gives you access to the most common tools without specializing in any one area.
</p>
<h3 class="text-2xl font-semibold text-white mt-6 mb-3">Key Concepts: Objects and Transformations</h3>
<p class="mb-4">Everything in Blender is an "object." This could be a mesh, a camera, a light, or an empty. In Layout, your primary job is to transform these objects.</p>
<ul class="list-disc list-inside space-y-2 pl-4">
<li><strong>Location:</strong> Where an object is in 3D space (X, Y, Z coordinates).</li>
<li><strong>Rotation:</strong> The orientation of an object.</li>
<li><strong>Scale:</strong> The size of an object.</li>
</ul>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Essential Hotkeys</h3>
<table class="w-full text-left bg-[#3a3f4a] rounded-lg overflow-hidden">
<thead class="bg-[#4b515d]">
<tr><th class="p-3">Action</th><th class="p-3">Hotkey</th><th class="p-3">Description</th></tr>
</thead>
<tbody>
<tr class="border-b border-[#282c34]">
<td class="p-3">Grab / Move</td>
<td class="p-3"><span class="hotkey">G</span></td>
<td>Move the selected object. Press <span class="hotkey">X</span>, <span class="hotkey">Y</span>, or <span class="hotkey">Z</span> to constrain to an axis.</td>
</tr>
<tr class="border-b border-[#282c34]">
<td class="p-3">Rotate</td>
<td class="p-3"><span class="hotkey">R</span></td>
<td>Rotate the selected object. Also works with axis constraints.</td>
</tr>
<tr class="border-b border-[#282c34]">
<td class="p-3">Scale</td>
<td class="p-3"><span class="hotkey">S</span></td>
<td>Scale the selected object. Also works with axis constraints.</td>
</tr>
<tr class="border-b border-[#282c34]">
<td class="p-3">Add Object</td>
<td class="p-3"><span class="hotkey">Shift</span> + <span class="hotkey">A</span></td>
<td>Opens the "Add" menu to create new meshes, lights, cameras, etc.</td>
</tr>
<tr>
<td class="p-3">Delete</td>
<td class="p-3"><span class="hotkey">X</span> or <span class="hotkey">Delete</span></td>
<td>Deletes the selected object(s).</td>
</tr>
</tbody>
</table>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Example: Setting Up a Simple Scene</h3>
<ol class="list-decimal list-inside space-y-2 pl-4 bg-[#3a3f4a] p-4 rounded-lg">
<li>Press <span class="hotkey">Shift</span> + <span class="hotkey">A</span> → Mesh → Plane. This creates a floor.</li>
<li>Press <span class="hotkey">S</span> to scale, type <span class="hotkey">10</span>, and press <span class="hotkey">Enter</span> to make it bigger.</li>
<li>Select the default cube. Press <span class="hotkey">G</span> then <span class="hotkey">Z</span>, type <span class="hotkey">1</span>, and press <span class="hotkey">Enter</span> to lift it onto the plane.</li>
<li>Press <span class="hotkey">Shift</span> + <span class="hotkey">A</span> → Light → Area.</li>
<li>Press <span class="hotkey">G</span> then <span class="hotkey">Z</span> to move the light up, then <span class="hotkey">R</span> to rotate it towards the cube.</li>
<li>Select the light, go to the Properties Panel (green lightbulb icon), and increase its Power.</li>
</ol>
</section>
<!-- Modeling Section -->
<section id="modeling" class="content-section">
<h2 class="text-4xl font-bold text-white mb-4 border-b-2 border-[#4b515d] pb-2">Modeling Workspace</h2>
<p class="mb-4 text-lg">
This is where you create the actual shapes of your 3D objects. The Modeling workspace reconfigures the UI to focus on tools that manipulate the fundamental components of a mesh. To use it, select an object and press <span class="hotkey">Tab</span> to enter <strong>Edit Mode</strong>.
</p>
<h3 class="text-2xl font-semibold text-white mt-6 mb-3">Key Concepts: The Building Blocks of a Mesh</h3>
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
<div class="bg-[#3a3f4a] p-4 rounded-lg">
<h4 class="text-xl font-bold text-[#f09400] mb-2">Vertices (<span class="hotkey">1</span>)</h4>
<p>Single points in space. The most basic component.</p>
</div>
<div class="bg-[#3a3f4a] p-4 rounded-lg">
<h4 class="text-xl font-bold text-[#f09400] mb-2">Edges (<span class="hotkey">2</span>)</h4>
<p>A line connecting two vertices.</p>
</div>
<div class="bg-[#3a3f4a] p-4 rounded-lg">
<h4 class="text-xl font-bold text-[#f09400] mb-2">Faces (<span class="hotkey">3</span>)</h4>
<p>A flat surface enclosed by three or more edges. This is what gets rendered.</p>
</div>
</div>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Essential Modeling Hotkeys</h3>
<table class="w-full text-left bg-[#3a3f4a] rounded-lg overflow-hidden">
<thead class="bg-[#4b515d]">
<tr><th class="p-3">Action</th><th class="p-3">Hotkey</th><th class="p-3">Description</th></tr>
</thead>
<tbody>
<tr class="border-b border-[#282c34]"><td class="p-3">Toggle Edit/Object Mode</td><td class="p-3"><span class="hotkey">Tab</span></td><td>Switch between shaping the mesh and manipulating the object.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Extrude</td><td class="p-3"><span class="hotkey">E</span></td><td>Pulls out new geometry from the selection (vertices, edges, or faces).</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Inset</td><td class="p-3"><span class="hotkey">I</span></td><td>Creates a new, smaller face inset within a selected face.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Bevel</td><td class="p-3"><span class="hotkey">Ctrl</span> + <span class="hotkey">B</span></td><td>Rounds off sharp edges or corners. Use the scroll wheel to add segments.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Loop Cut</td><td class="p-3"><span class="hotkey">Ctrl</span> + <span class="hotkey">R</span></td><td>Adds a new loop of edges through a series of faces. Use the scroll wheel to add more cuts.</td></tr>
<tr><td class="p-3">Merge</td><td class="p-3"><span class="hotkey">M</span></td><td>Merges selected vertices into a single point (At Center, At Cursor, etc.).</td></tr>
</tbody>
</table>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Example: Modeling a Simple Coffee Mug</h3>
<ol class="list-decimal list-inside space-y-2 pl-4 bg-[#3a3f4a] p-4 rounded-lg">
<li>Add a Cylinder: <span class="hotkey">Shift</span> + <span class="hotkey">A</span> → Mesh → Cylinder. In the bottom-left popup, set Vertices to 16.</li>
<li>Enter Edit Mode (<span class="hotkey">Tab</span>). Go to Face Select (<span class="hotkey">3</span>). Select the top face.</li>
<li>Press <span class="hotkey">I</span> to inset the face slightly.</li>
<li>Press <span class="hotkey">E</span> to extrude, then move your mouse down to create the inside of the mug. Left click to confirm.</li>
<li>For the handle, use Loop Cut (<span class="hotkey">Ctrl</span> + <span class="hotkey">R</span>) to add two horizontal edge loops on the side of the mug.</li>
<li>Select the two faces between these loops. Use <span class="hotkey">E</span> to extrude the handle outwards. Rotate and move it to form a C-shape.</li>
</ol>
</section>
<!-- Sculpting Section -->
<section id="sculpting" class="content-section">
<h2 class="text-4xl font-bold text-white mb-4 border-b-2 border-[#4b515d] pb-2">Sculpting Workspace</h2>
<p class="mb-4 text-lg">
Sculpting is like working with digital clay. Instead of moving individual vertices, you use brushes to shape a high-resolution mesh. It's ideal for organic forms like characters, rocks, and terrain.
</p>
<h3 class="text-2xl font-semibold text-white mt-6 mb-3">Key Concepts</h3>
<ul class="list-disc list-inside space-y-2 pl-4">
<li><strong>Brushes:</strong> The core of sculpting. Each brush has a different effect (Draw, Clay, Grab, Smooth, etc.).</li>
<li><strong>Dynamic Topology (Dyntopo):</strong> A powerful feature that adds or removes geometry under your brush as you sculpt. This means you don't need to worry about starting with a super dense mesh. You create detail only where you need it.</li>
<li><strong>Symmetry:</strong> Most sculpting is done with symmetry enabled (usually along the X-axis), so you only have to sculpt one side of a model.</li>
</ul>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Essential Sculpting Hotkeys</h3>
<table class="w-full text-left bg-[#3a3f4a] rounded-lg overflow-hidden">
<thead class="bg-[#4b515d]">
<tr><th class="p-3">Action</th><th class="p-3">Hotkey</th><th class="p-3">Description</th></tr>
</thead>
<tbody>
<tr class="border-b border-[#282c34]"><td class="p-3">Change Brush Size</td><td class="p-3"><span class="hotkey">F</span> + Drag</td><td>Interactively change the radius of your brush.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Change Brush Strength</td><td class="p-3"><span class="hotkey">Shift</span> + <span class="hotkey">F</span> + Drag</td><td>Interactively change the intensity of your brush stroke.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Invert Brush Action</td><td class="p-3">Hold <span class="hotkey">Ctrl</span></td><td>Inverts the brush effect (e.g., carving in instead of building up).</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Smooth</td><td class="p-3">Hold <span class="hotkey">Shift</span></td><td>Temporarily switches to the Smooth brush to average out the geometry under your cursor.</td></tr>
</tbody>
</table>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Example: Sculpting a Simple Rock</h3>
<ol class="list-decimal list-inside space-y-2 pl-4 bg-[#3a3f4a] p-4 rounded-lg">
<li>Start with a cube or sphere. Go to the Sculpting workspace.</li>
<li>In the header, enable Dyntopo by clicking the checkbox. Keep the default settings.</li>
<li>Use the Grab brush (hotkey <span class="hotkey">G</span>) with a large brush size (<span class="hotkey">F</span>) to pull out the basic, rough shape of your rock. Don't worry about detail yet.</li>
<li>Switch to the Clay Strips brush. Build up some larger forms and planes on the surface.</li>
<li>Use the Scrape or Trim brush to flatten some areas, creating hard, rocky planes.</li>
<li>Hold <span class="hotkey">Shift</span> to gently smooth some of the transitions.</li>
</ol>
</section>
<!-- And so on for all other sections... -->
<section id="uv_editing" class="content-section">
<h2 class="text-4xl font-bold text-white mb-4 border-b-2 border-[#4b515d] pb-2">UV Editing Workspace</h2>
<p class="mb-4 text-lg">UV Editing is the process of "unwrapping" your 3D model into a 2D image map. Think of it like carefully peeling an orange and laying the peel flat, or disassembling a cardboard box. This 2D representation, called a UV map, tells Blender how to apply a 2D texture to your 3D surface without distortion.</p>
<h3 class="text-2xl font-semibold text-white mt-6 mb-3">Key Concepts</h3>
<ul class="list-disc list-inside space-y-2 pl-4">
<li><strong>UVs:</strong> These are 2D coordinates that correspond to the 3D vertices of your model. (U is the horizontal axis, V is the vertical).</li>
<li><strong>Seams:</strong> These are edges on your 3D model that you mark as "cuts." Blender uses these seams to know where to split the mesh apart when unwrapping. Placing seams correctly is the most important part of UV editing.</li>
<li><strong>Islands:</strong> Each separate, contiguous piece of your flattened UV map is called an island.</li>
<li><strong>Texel Density:</strong> The ratio of texture pixels to 3D surface area. For a consistent look, you generally want all islands to have a similar texel density.</li>
</ul>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Essential UV Editing Hotkeys (in 3D Viewport Edit Mode)</h3>
<table class="w-full text-left bg-[#3a3f4a] rounded-lg overflow-hidden">
<thead class="bg-[#4b515d]"><tr><th class="p-3">Action</th><th class="p-3">Hotkey</th><th class="p-3">Description</th></tr></thead>
<tbody>
<tr class="border-b border-[#282c34]"><td class="p-3">Mark Seam</td><td class="p-3"><span class="hotkey">Ctrl</span> + <span class="hotkey">E</span> → Mark Seam</td><td>Marks selected edges as seams for unwrapping.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Clear Seam</td><td class="p-3"><span class="hotkey">Ctrl</span> + <span class="hotkey">E</span> → Clear Seam</td><td>Removes the seam property from selected edges.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Unwrap</td><td class="p-3"><span class="hotkey">U</span> → Unwrap</td><td>Unwraps the selected faces based on the marked seams.</td></tr>
<tr><td class="p-3">Smart UV Project</td><td class="p-3"><span class="hotkey">U</span> → Smart UV Project</td><td>An automatic unwrapping method that works well for complex mechanical objects but can create many small islands.</td></tr>
</tbody>
</table>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Example: Unwrapping a Simple Crate (a Cube)</h3>
<ol class="list-decimal list-inside space-y-2 pl-4 bg-[#3a3f4a] p-4 rounded-lg">
<li>Select the default cube and go to the UV Editing workspace. Enter Edit Mode (<span class="hotkey">Tab</span>).</li>
<li>Go to Edge Select mode (<span class="hotkey">2</span>). Select the edges that would allow the cube to unfold like a cross. You'll need to select the three top edges of the "lid" that meet at one corner, and the vertical edges connecting the sides.</li>
<li>With the edges selected, press <span class="hotkey">Ctrl</span> + <span class="hotkey">E</span> and choose "Mark Seam". The edges will turn red.</li>
<li>Select all faces (<span class="hotkey">A</span>). Press <span class="hotkey">U</span> and choose "Unwrap".</li>
<li>In the left-hand UV Editor window, you will now see the cube's faces laid out in a cross shape. You can now move (<span class="hotkey">G</span>), rotate (<span class="hotkey">R</span>), and scale (<span class="hotkey">S</span>) these islands to fit your texture map.</li>
</ol>
</section>
<section id="texture_paint" class="content-section">
<h2 class="text-4xl font-bold text-white mb-4 border-b-2 border-[#4b515d] pb-2">Texture Paint Workspace</h2>
<p class="mb-4 text-lg">This workspace allows you to paint colors and material details directly onto the surface of your 3D model, much like painting a physical miniature. It's a highly intuitive way to create unique textures and add details like wear, dirt, or specific patterns.</p>
<h3 class="text-2xl font-semibold text-white mt-6 mb-3">Prerequisites</h3>
<p class="mb-4">Before you can texture paint, you need two things:</p>
<ul class="list-disc list-inside space-y-2 pl-4">
<li><strong>A Good UV Map:</strong> The model must be properly unwrapped. Texture painting works by creating a 2D image that is then mapped onto the model using its UVs. Without a good unwrap, your paint strokes will be stretched and distorted.</li>
<li><strong>A Material and a Texture:</strong> The object needs a material, and that material needs a blank <span class="font-semibold text-[#f09400]">Image Texture</span> node that you can paint on.</li>
</ul>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Essential Texture Paint Hotkeys</h3>
<table class="w-full text-left bg-[#3a3f4a] rounded-lg overflow-hidden">
<thead class="bg-[#4b515d]"><tr><th class="p-3">Action</th><th class="p-3">Hotkey</th><th class="p-3">Description</th></tr></thead>
<tbody>
<tr class="border-b border-[#282c34]"><td class="p-3">Change Brush Size</td><td class="p-3"><span class="hotkey">F</span> + Drag</td><td>Interactively change the radius of your brush.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Change Brush Strength</td><td class="p-3"><span class="hotkey">Shift</span> + <span class="hotkey">F</span> + Drag</td><td>Interactively change the opacity/intensity of your brush.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Sample Color</td><td class="p-3"><span class="hotkey">S</span></td><td>Samples the color under your cursor (from the model's surface).</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Swap Colors</td><td class="p-3"><span class="hotkey">X</span></td><td>Swaps your primary and secondary paint colors.</td></tr>
</tbody>
</table>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Example: Painting a Simple Target on a Plane</h3>
<ol class="list-decimal list-inside space-y-2 pl-4 bg-[#3a3f4a] p-4 rounded-lg">
<li>Add a Plane and go to the Texture Paint workspace.</li>
<li>In the Properties panel (under Material Properties), click "+ New" to add a material if it doesn't have one.</li>
<li>Next to "Base Color," click the yellow dot and select "Image Texture."</li>
<li>In the texture properties, click "+ New" to create a new blank image. Give it a name (e.g., "TargetTexture") and set a base color (like white). Click OK. The plane will turn white.</li>
<li>You are now ready to paint! In the 3D Viewport, select a red color from the color picker on the left.</li>
<li>Use the draw brush to paint a red circle in the middle of the plane.</li>
<li>Select a blue color and paint another circle around the red one.</li>
<li><strong class="text-[#f09400]">CRUCIAL:</strong> Your painting is not saved until you explicitly save the image. In the Image Editor on the left, go to Image → Save As... to save your texture to your computer. Remember to save often!</li>
</ol>
</section>
<section id="shading" class="content-section">
<h2 class="text-4xl font-bold text-white mb-4 border-b-2 border-[#4b515d] pb-2">Shading Workspace</h2>
<p class="mb-4 text-lg">The Shading workspace is where you define the 'look' of your objects. You create materials by connecting different building blocks called "nodes" to describe how a surface should react to light. Is it rough or smooth? Metal or plastic? Transparent or opaque? These questions are answered here.</p>
<h3 class="text-2xl font-semibold text-white mt-6 mb-3">Key Concepts</h3>
<ul class="list-disc list-inside space-y-2 pl-4">
<li><strong>Nodes:</strong> Everything in the shader editor is a node. Each node performs a specific function—it might provide a color, a texture, a mathematical operation, or define the surface itself.</li>
<li><strong>The Principled BSDF:</strong> This is the "uber" shader node. It's a physically-based shader that can create a massive variety of realistic materials just by adjusting its sliders (Base Color, Metallic, Roughness, etc.). You will use this node 95% of the time.</li>
<li><strong>Texture Nodes:</strong> These nodes (like Image Texture, Noise Texture, Voronoi Texture) generate or load in patterns that you can plug into the inputs of the Principled BSDF to create complex materials.</li>
</ul>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Essential Shading Hotkeys (in Shader Editor)</h3>
<table class="w-full text-left bg-[#3a3f4a] rounded-lg overflow-hidden">
<thead class="bg-[#4b515d]"><tr><th class="p-3">Action</th><th class="p-3">Hotkey</th><th class="p-3">Description</th></tr></thead>
<tbody>
<tr class="border-b border-[#282c34]"><td class="p-3">Add Node</td><td class="p-3"><span class="hotkey">Shift</span> + <span class="hotkey">A</span></td><td>Opens the menu to add any type of node.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Connect Nodes</td><td class="p-3">Click and Drag</td><td>Drag from an output socket (right side) to an input socket (left side).</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Cut Links</td><td class="p-3"><span class="hotkey">Ctrl</span> + Right Click Drag</td><td>Drags a "knife" to sever connections between nodes.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Node Wrangler Addon</td><td class="p-3"><span class="hotkey">Ctrl</span>+<span class="hotkey">Shift</span>+Click</td><td>(Requires enabling the addon) Instantly previews the selected node. Incredibly useful.</td></tr>
</tbody>
</table>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Example: Creating a Basic Brushed Metal Material</h3>
<ol class="list-decimal list-inside space-y-2 pl-4 bg-[#3a3f4a] p-4 rounded-lg">
<li>Select your object and add a new material. You'll see a Principled BSDF node connected to the Material Output.</li>
<li>On the Principled BSDF node, slide the <span class="font-semibold">Metallic</span> value all the way to 1.0.</li>
<li>Slide the <span class="font-semibold">Roughness</span> value down to around 0.2 to make it shiny.</li>
<li>To add the "brushed" look, press <span class="hotkey">Shift</span> + <span class="hotkey">A</span> → Texture → Noise Texture.</li>
<li>Press <span class="hotkey">Shift</span> + <span class="hotkey">A</span> → Vector → Bump.</li>
<li>Connect the <span class="font-semibold">Factor</span> output of the Noise Texture to the <span class="font-semibold">Height</span> input of the Bump node.</li>
<li>Connect the <span class="font-semibold">Normal</span> output of the Bump node to the <span class="font-semibold">Normal</span> input of the Principled BSDF node.</li>
<li>On the Noise Texture, increase the <span class="font-semibold">Scale</span> on one axis (e.g., X) to a high number like 50 to stretch the noise and create the brushed effect.</li>
</ol>
</section>
<section id="animation" class="content-section">
<h2 class="text-4xl font-bold text-white mb-4 border-b-2 border-[#4b515d] pb-2">Animation Workspace</h2>
<p class="mb-4 text-lg">This is where you bring your creations to life by making them move, change, or transform over time. The core of animation in Blender is the concept of "keyframes."</p>
<h3 class="text-2xl font-semibold text-white mt-6 mb-3">Key Concepts</h3>
<ul class="list-disc list-inside space-y-2 pl-4">
<li><strong>Timeline:</strong> The bar at the bottom of the screen that represents time, measured in frames.</li>
<li><strong>Keyframe:</strong> A saved record of an object's property (like its location, rotation, or scale) at a specific point in time (a specific frame).</li>
<li><strong>Interpolation:</strong> What Blender does automatically *between* your keyframes. If you set a keyframe for a cube on the left at frame 1 and on the right at frame 24, Blender calculates its position for all the frames in between, creating smooth motion.</li>
</ul>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Essential Animation Hotkeys</h3>
<table class="w-full text-left bg-[#3a3f4a] rounded-lg overflow-hidden">
<thead class="bg-[#4b515d]"><tr><th class="p-3">Action</th><th class="p-3">Hotkey</th><th class="p-3">Description</th></tr></thead>
<tbody>
<tr class="border-b border-[#282c34]"><td class="p-3">Insert Keyframe</td><td class="p-3"><span class="hotkey">I</span></td><td>Opens a menu to set a keyframe for Location, Rotation, Scale, or a combination.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Play/Stop Animation</td><td class="p-3"><span class="hotkey">Spacebar</span></td><td>Plays the animation in the viewport.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Go to Next/Previous Keyframe</td><td class="p-3"><span class="hotkey">Up/Down Arrow</span></td><td>Jumps the timeline to the nearest keyframe.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Go to Start/End Frame</td><td class="p-3"><span class="hotkey">Shift</span>+<span class="hotkey">Left/Right Arrow</span></td><td>Jumps to the first or last frame of the animation range.</td></tr>
</tbody>
</table>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Example: Animating a Bouncing Ball</h3>
<ol class="list-decimal list-inside space-y-2 pl-4 bg-[#3a3f4a] p-4 rounded-lg">
<li>Add a UV Sphere and a Plane for it to bounce on. Move the sphere up above the plane.</li>
<li>Go to frame 1 on the timeline. With the sphere selected, press <span class="hotkey">I</span> and choose "Location" to set its starting keyframe.</li>
<li>Move to frame 12 on the timeline. Press <span class="hotkey">G</span>, then <span class="hotkey">Z</span> to move the sphere down so it's touching the plane. Press <span class="hotkey">I</span> → "Location" again.</li>
<li>Go to frame 24. Go back to the first keyframe on the timeline (at frame 1), right-click it, and select "Copy." Then right-click on frame 24 and select "Paste." Now you have a complete up-and-down motion.</li>
<li>In the Properties panel, set the "End Frame" of your animation to 24.</li>
<li>Press <span class="hotkey">Spacebar</span> to watch your ball move up and down. To make it look more like a bounce, you would then go into the Graph Editor to edit the interpolation curves, but this is the basic keyframing workflow!</li>
</ol>
</section>
<section id="rendering" class="content-section">
<h2 class="text-4xl font-bold text-white mb-4 border-b-2 border-[#4b515d] pb-2">Rendering Workspace</h2>
<p class="mb-4 text-lg">Rendering is the final stage: the process of generating a 2D image or video from your 3D scene. This is where Blender calculates all the lighting, materials, and camera settings to produce the final output.</p>
<h3 class="text-2xl font-semibold text-white mt-6 mb-3">The Render Engines: Eevee vs. Cycles</h3>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="bg-[#3a3f4a] p-4 rounded-lg">
<h4 class="text-xl font-bold text-[#f09400] mb-2">Eevee</h4>
<p>A real-time render engine. It's incredibly fast, giving you near-instant results. It's great for stylized looks and quick previews. Think of it as a high-end video game engine. It uses clever shortcuts and approximations for speed.</p>
</div>
<div class="bg-[#3a3f4a] p-4 rounded-lg">
<h4 class="text-xl font-bold text-[#f09400] mb-2">Cycles</h4>
<p>A path-tracing render engine. It's physically accurate and produces photorealistic results by simulating the actual behavior of light rays. This accuracy comes at the cost of much longer render times.</p>
</div>
</div>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Key Render Settings</h3>
<p class="mb-4">These are found in the <span class="font-semibold text-[#f09400]">Render Properties</span> tab (looks like the back of a camera) and the <span class="font-semibold text-[#f09400]">Output Properties</span> tab (looks like a printer).</p>
<ul class="list-disc list-inside space-y-2 pl-4">
<li><strong>Render Engine:</strong> The first thing you choose (Eevee or Cycles).</li>
<li><strong>Samples:</strong> The number of light paths calculated per pixel. Higher samples reduce noise (graininess) in Cycles but increase render time.</li>
<li><strong>Resolution:</strong> The dimensions of your final image in pixels (e.g., 1920x1080).</li>
<li><strong>Frame Rate:</strong> For animations, the number of frames per second (e.g., 24, 30, 60).</li>
<li><strong>Output Path:</strong> Where on your computer the final rendered image or video will be saved.</li>
<li><strong>File Format:</strong> The type of file to save as (e.g., PNG for images, FFmpeg Video for videos).</li>
</ul>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Essential Rendering Hotkeys</h3>
<table class="w-full text-left bg-[#3a3f4a] rounded-lg overflow-hidden">
<thead class="bg-[#4b515d]"><tr><th class="p-3">Action</th><th class="p-3">Hotkey</th><th class="p-3">Description</th></tr></thead>
<tbody>
<tr class="border-b border-[#282c34]"><td class="p-3">Render Image</td><td class="p-3"><span class="hotkey">F12</span></td><td>Renders a single frame from the current camera view.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">Render Animation</td><td class="p-3"><span class="hotkey">Ctrl</span> + <span class="hotkey">F12</span></td><td>Renders the entire frame range specified in the Output Properties.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3">View Render</td><td class="p-3"><span class="hotkey">F11</span></td><td>Opens the Render Result window to view your last render.</td></tr>
</tbody>
</table>
</section>
<section id="compositing" class="content-section">
<h2 class="text-4xl font-bold text-white mb-4 border-b-2 border-[#4b515d] pb-2">Compositing Workspace</h2>
<p class="mb-4 text-lg">Compositing is the step *after* rendering. It allows you to take your rendered image (or multiple images/video clips) and process them further. You can adjust colors, add effects like glow or lens flares, combine render layers, and much more. It's a powerful node-based post-processing tool built right into Blender.</p>
<h3 class="text-2xl font-semibold text-white mt-6 mb-3">Key Concepts</h3>
<ul class="list-disc list-inside space-y-2 pl-4">
<li><strong>Node-Based:</strong> Just like the Shading workspace, you connect nodes to build up an effects chain. Your render result flows from left to right through this chain.</li>
<li><strong>Render Layers:</strong> You can separate your scene into different layers (e.g., a foreground layer and a background layer) and combine them in the compositor, giving you fine control over the final image.</li>
<li><strong>Viewer Node:</strong> To see what you're doing, you must add a Viewer node (<span class="hotkey">Shift</span>+<span class="hotkey">A</span> → Output → Viewer) and connect your node tree to it. The result will appear in the background.</li>
</ul>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Common Compositing Nodes</h3>
<table class="w-full text-left bg-[#3a3f4a] rounded-lg overflow-hidden">
<thead class="bg-[#4b515d]"><tr><th class="p-3">Node</th><th class="p-3">Purpose</th></tr></thead>
<tbody>
<tr class="border-b border-[#282c34]"><td class="p-3 font-semibold">Glare</td><td>Creates glow, bloom, and starburst effects from bright parts of the image.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3 font-semibold">Color Balance / RGB Curves</td><td>Powerful tools for color correction and grading.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3 font-semibold">Lens Distortion</td><td>Simulates camera lens distortion, chromatic aberration, and dispersion.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3 font-semibold">Denoise</td><td>Uses advanced data from the Cycles renderer to intelligently remove noise from the final image.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3 font-semibold">Alpha Over</td><td>Mixes two images together based on their alpha (transparency) channels. The core of layering.</td></tr>
</tbody>
</table>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Example: Adding a Simple Glow Effect</h3>
<ol class="list-decimal list-inside space-y-2 pl-4 bg-[#3a3f4a] p-4 rounded-lg">
<li>After rendering an image with some bright spots (e.g., an emissive material), go to the Compositing workspace and check the "Use Nodes" box.</li>
<li>You'll see a "Render Layers" node connected to a "Composite" node. The Composite node is your final output.</li>
<li>Press <span class="hotkey">Shift</span> + <span class="hotkey">A</span> → Filter → Glare. Place this node between the other two.</li>
<li>The default "Streaks" mode might look strange. Change the Glare Type in the node's settings to "Fog Glow."</li>
<li>Adjust the "Threshold" slider. Lowering it makes more of the image glow; raising it restricts the glow to only the very brightest parts.</li>
<li>To see the result on your next render, just press <span class="hotkey">F12</span>. The compositing will be applied automatically.</li>
</ol>
</section>
<section id="geometry_nodes" class="content-section">
<h2 class="text-4xl font-bold text-white mb-4 border-b-2 border-[#4b515d] pb-2">Geometry Nodes Workspace</h2>
<p class="mb-4 text-lg">Geometry Nodes is a revolutionary and advanced system for procedural modeling, animation, and scattering. Instead of manually placing every object or shaping every detail, you create a node-based system that generates or modifies geometry based on a set of rules. It's incredibly powerful for creating complex scenes that are easy to change and iterate upon.</p>
<h3 class="text-2xl font-semibold text-white mt-6 mb-3">Key Concepts</h3>
<ul class="list-disc list-inside space-y-2 pl-4">
<li><strong>Proceduralism:</strong> The core idea. You build a recipe (the node tree) that Blender follows to create the final result. Changing a parameter early in the tree can completely change the outcome without any destructive manual editing.</li>
<li><strong>Attributes:</strong> Data that lives on your geometry. For example, every vertex has a `position` attribute. You can create, modify, and use custom attributes to drive your node setups.</li>
<li><strong>Fields:</strong> A new, powerful system that lets you evaluate values differently across your geometry. For example, you could use a field to make objects scale down the further they are from a certain point.</li>
</ul>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Common Use Cases</h3>
<table class="w-full text-left bg-[#3a3f4a] rounded-lg overflow-hidden">
<thead class="bg-[#4b515d]"><tr><th class="p-3">Use Case</th><th class="p-3">Description</th></tr></thead>
<tbody>
<tr class="border-b border-[#282c34]"><td class="p-3 font-semibold">Scattering / Instancing</td><td>Distributing thousands of objects (like trees, rocks, or grass) across a surface. You can control density, scale, and rotation procedurally.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3 font-semibold">Procedural Modeling</td><td>Generating complex shapes from scratch using nodes, like sci-fi greebles, architectural patterns, or abstract forms.</td></tr>
<tr class="border-b border-[#282c34]"><td class="p-3 font-semibold">Motion Graphics</td><td>Creating dynamic text effects, growing vines, and other complex animations that would be tedious to keyframe by hand.</td></tr>
</tbody>
</table>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Example: Scattering Cubes on a Plane</h3>
<ol class="list-decimal list-inside space-y-2 pl-4 bg-[#3a3f4a] p-4 rounded-lg">
<li>Create a Plane for the ground and a Cube to be scattered. Move the cube to the side; it will be our source object.</li>
<li>Select the Plane. Go to the Geometry Nodes workspace and click "+ New" to create a new node tree.</li>
<li>You'll start with a `Group Input` and `Group Output`. This represents the original plane geometry passing through.</li>
<li>Press <span class="hotkey">Shift</span> + <span class="hotkey">A</span> → Points → Distribute Points on Faces. Place this node after the `Group Input`. The plane will disappear and be replaced by points.</li>
<li>Press <span class="hotkey">Shift</span> + <span class="hotkey">A</span> → Instances → Instance on Points. Place this after the Distribute Points node.</li>
<li>Drag the Cube from the Outliner into the Geometry Nodes editor. This creates an `Object Info` node.</li>
<li>Connect the `Geometry` output of the Cube's `Object Info` node into the `Instance` input of the `Instance on Points` node.</li>
<li>To get the original plane back, add a `Join Geometry` node before the `Group Output` and plug both the original `Group Input` and the `Instance on Points` output into it. You now have cubes scattered on your plane! You can now adjust the `Density` on the Distribute Points node.</li>
</ol>
</section>
<section id="scripting" class="content-section">
<h2 class="text-4xl font-bold text-white mb-4 border-b-2 border-[#4b515d] pb-2">Scripting Workspace</h2>
<p class="mb-4 text-lg">The Scripting workspace is your gateway to automating and extending Blender's functionality using the Python programming language. Almost every action you can perform by clicking a button in Blender has a corresponding Python command. By writing scripts, you can perform complex or repetitive tasks with a single click.</p>
<h3 class="text-2xl font-semibold text-white mt-6 mb-3">Key Concepts</h3>
<ul class="list-disc list-inside space-y-2 pl-4">
<li><strong>Blender Python API (bpy):</strong> This is the library of Python modules that gives you access to Blender's data and operators. You'll always start your scripts with `import bpy`.</li>
<li><strong>Info Panel:</strong> A hidden gem. If you drag the timeline window up, you can change it to the Info panel. It shows you the exact Python command for every action you take in Blender. It's the best way to learn the API.</li>
<li><strong>Text Editor:</strong> The main part of the scripting workspace is a built-in text editor where you can write, edit, and run your Python scripts.</li>
<li><strong>Add-ons:</strong> Most Blender add-ons are simply Python scripts that have been packaged to integrate seamlessly with the UI, adding new panels, buttons, and functionality.</li>
</ul>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">The bpy Module: Accessing Blender Data</h3>
<p>The `bpy` module is your entry point. Here are some common starting points:</p>
<ul class="list-disc list-inside space-y-2 pl-4">
<li><code class="bg-[#3a3f4a] p-1 rounded">bpy.context</code>: Accesses contextual data like the active object, selected objects, or the current scene.</li>
<li><code class="bg-[#3a3f4a] p-1 rounded">bpy.data</code>: Accesses all the raw data in your .blend file, such as all objects (`bpy.data.objects`), all materials (`bpy.data.materials`), etc.</li>
<li><code class="bg-[#3a3f4a] p-1 rounded">bpy.ops</code>: Accesses Blender's operators, which are the same functions that buttons in the UI call (e.g., `bpy.ops.mesh.primitive_cube_add()`).</li>
</ul>
<h3 class="text-2xl font-semibold text-white mt-8 mb-3">Example: A Script to Add and Scatter Cubes</h3>
<div class="bg-[#3a3f4a] p-4 rounded-lg">
<pre><code class="language-python text-sm">
import bpy
import random
# Clear existing mesh objects for a clean run
for obj in bpy.data.objects:
if obj.type == 'MESH':
bpy.data.objects.remove(obj)
# --- Parameters ---
cube_count = 50
scatter_range = 10
# --- Main Loop ---
for i in range(cube_count):
# Calculate a random location
x = random.uniform(-scatter_range, scatter_range)
y = random.uniform(-scatter_range, scatter_range)
z = random.uniform(-scatter_range, scatter_range)
# Add a new cube at the random location
bpy.ops.mesh.primitive_cube_add(location=(x, y, z))
print(f"Successfully created {cube_count} cubes.")
</code></pre>
</div>
<p class="mt-4">To run this: Copy and paste it into the Text Editor in the Scripting workspace and click the "Run Script" button (or press <span class="hotkey">Alt</span> + <span class="hotkey">P</span>).</p>
</section>
</main>
<script>
document.addEventListener('DOMContentLoaded', function() {
const navLinks = document.querySelectorAll('.nav-link');
const contentSections = document.querySelectorAll('.content-section');
const sidebarNav = document.getElementById('sidebar-nav');
const mainContent = document.getElementById('main-content');
function showSection(hash) {
// Default to #introduction if hash is empty or invalid
const targetHash = hash || '#introduction';
let found = false;
contentSections.forEach(section => {
if ('#' + section.id === targetHash) {
section.classList.add('active');
found = true;
} else {
section.classList.remove('active');
}
});
// Fallback if the hash doesn't match any section
if (!found) {
document.getElementById('introduction').classList.add('active');
}
navLinks.forEach(link => {
if (link.getAttribute('href') === targetHash) {
link.classList.add('active');
} else {
link.classList.remove('active');
}
});
// Scroll main content to top on navigation
mainContent.scrollTop = 0;
}
sidebarNav.addEventListener('click', function(e) {
if (e.target.classList.contains('nav-link')) {
e.preventDefault();
const targetHash = e.target.getAttribute('href');
history.pushState(null, null, targetHash); // Update URL without reloading
showSection(targetHash);
}
});
// Handle browser back/forward buttons
window.addEventListener('popstate', function() {
showSection(window.location.hash);
});
// Show initial section based on URL hash
showSection(window.location.hash);
});
</script>
</body>
</html>