2025-12-01

This commit is contained in:
2026-03-17 14:58:51 -06:00
parent 183e865f8b
commit 4b82b57113
6846 changed files with 954887 additions and 162606 deletions
@@ -0,0 +1,419 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Change List | Retopoflow</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="Change List" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A suite of retopology tools for Blender" />
<meta property="og:description" content="A suite of retopology tools for Blender" />
<link rel="canonical" href="http://localhost:4000/v4/changelist.html" />
<meta property="og:url" content="http://localhost:4000/v4/changelist.html" />
<meta property="og:site_name" content="Retopoflow" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Change List" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"A suite of retopology tools for Blender","headline":"Change List","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"http://localhost:4000/images/logos/v4.png"}},"url":"http://localhost:4000/v4/changelist.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/css/style.css?v=fae29b0ecee4f94874e8b5996f55661955b83305">
<link rel="stylesheet" type="text/css" href="/assets/css/main.css">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<span id="logo" class="logo"><img src="/images/logos/v4.png" alt="Logo" /></span>
<h1 class="title" id="title"><a href="/index.html">Retopoflow</a></h1>
<p class="tagline">by <a class="outlink" href="https://orangeturbine.com/" target="_blank">Orange Turbine</a></p>
<select name="version" class="version" id="version_menu" title="version" onchange="switch_versions(event)">
<option value="v3">Version 3</option>
<option value="v4">Version 4</option>
</select>
<div id="navigation"></div>
</header>
<script>
let version = localStorage.getItem("version")
if (version == null) {version = 'v4';}
let path = `/assets/html/${version}.html`;
function switch_versions(event) {
let menu = event.target;
let result = menu.options[menu.selectedIndex].value;
version = result
localStorage.setItem("version", result);
if (result == 'v3') {
location.href = '/v3/index.html'
}
else if (result == 'v4') {
location.href = '/index.html'
}
}
fetch(path)
.then(response => response.text())
.then(data => {document.getElementById('navigation').innerHTML = data;})
.catch(error => console.error('Error loading HTML:', error));
if (location.href.includes('v3')) {
document.getElementById('version_menu').value = 'v3'
document.getElementById('title').innerHTML = `<a href="/v3/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v3.png" alt="Logo" class="logo" />`
localStorage.setItem("version", 'v3');
}
else {
document.getElementById('version_menu').value = 'v4'
document.getElementById('title').innerHTML = `<a href="/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v4.png" alt="Logo" class="logo" />`
}
</script>
<section>
<h1 id="change-list">Change List</h1>
<p>This document contains details about what has changed in RetopoFlow since version 2.x.</p>
<h3 id="400-alpha">4.0.0 alpha</h3>
<p>RetopoFlow 4 is a complete rewrite of RetopoFlow that massively improves performance and integrates the tools directly into Blenders Edit Mode.</p>
<p>Some key changes include:</p>
<ul>
<li>General
<ul>
<li>The tools are now in the Edit Mode toolbar</li>
<li>Ctrl scroll is now used instead of Shift scroll for adjusting insert count</li>
</ul>
</li>
<li>Contours
<ul>
<li>A new Fast method was added, which can improve performance on dense meshes and work in some cases where the mesh is split</li>
</ul>
</li>
<li>PolyStrips
<ul>
<li>Proportional Editing can now be used for smoothly affecting the surrounding geometry while adjusting existing strips</li>
<li>The angle at which new strips are split to create sharp corners can now be specified</li>
<li>Strip spacing is now calculated in world space</li>
</ul>
</li>
<li>Strokes
<ul>
<li>Several new stroke shapes are now supported so drawing new geometry feels more natural</li>
<li>Extrudes can now match the curvature of the original geometry if the method is set to Adapt</li>
<li>A smoothing control has been added for naturally blending between strokes created at different angles</li>
<li>The new default insert count, Average, always creates perfectly even quads when extruding</li>
</ul>
</li>
</ul>
<h3 id="343">3.4.3</h3>
<ul>
<li>Fixed text rendering bug</li>
<li>Fixed GPU Capabilities bug with Blender 4.1</li>
<li>Fixed Blender UI becoming unresponsive after starting RF</li>
</ul>
<h3 id="342">3.4.2</h3>
<ul>
<li>Worked around issue of “locking” Blender interface on Windows machines with Blender &gt;3.6</li>
<li>Strokes now shows counts for selected verts, selected edges, new spans, new loops</li>
<li>Improved clarity for target geometry that is pinned, seam, non-manifold</li>
<li>Disabling visualization of pinned or seam geometry will disable pinning</li>
<li>Added keymap for marking/clearing seams, confirming quick tools</li>
<li>Added keymap for confirming quick tools</li>
<li>Added Merge options to Delete / Dissolve pie menu</li>
<li>Many minor bug fixes</li>
</ul>
<h3 id="341">3.4.1</h3>
<ul>
<li>Improved visualization and editing when working on “wrong” side of symmetry</li>
<li>Fixed bridging bug with Strokes</li>
<li>Fixed many bugs</li>
<li>Improved general PolyPen performance</li>
<li>UI drawing uses framebuffers again (UI performance)</li>
<li>Warns when geometry is on “wrong” side of symmetry</li>
<li>General code cleanup, refactor, and optimizations</li>
</ul>
<h3 id="340">3.4.0</h3>
<p>This version of RetopoFlow requires Blender 3.6 or later.</p>
<ul>
<li>Blender
<ul>
<li>Removed dependence on deprecated <code class="language-plaintext highlighter-rouge">bgl</code> module</li>
<li>Added support for Metal</li>
<li>Improved general feedback and error handling during startup process</li>
<li>Improved indication of warnings in Blender menu</li>
<li>Added button to continue editing with active mesh as target</li>
<li>Improved handling of when Blender version is outside requirements</li>
</ul>
</li>
<li>Performance
<ul>
<li>Improved navigating and selecting</li>
<li>Improved performance of all tools</li>
</ul>
</li>
<li>Select: added new tool to do box selection</li>
<li>General: added simple rip and rip fill</li>
<li>Contours
<ul>
<li>Fixed crashing bug when cutting across non-manifold edge</li>
<li>Fixed bug when cancelling cut</li>
</ul>
</li>
<li>Strokes: consistent fixed span/segment count for all insertions</li>
<li>Knife: fixed bug when using where no source geometry exists</li>
<li>Tweak: added raycast/snap modes to work in screen or world space</li>
<li>Auto Save
<ul>
<li>Fixed and improved reporting, recovery, and other operations</li>
<li>Auto save is delayed until current action is finished</li>
</ul>
</li>
<li>Input
<ul>
<li>Added keymaps to select all linked, roll view, increase vertex count (Contours, PolyStrips, etc.) with <code class="language-plaintext highlighter-rouge">plus</code> key</li>
<li>Fixed NDOF and trackpad</li>
</ul>
</li>
<li>Mirror: preliminary work to mirror actions to “correct” side of symmetry plane(s)</li>
<li>Debug: deep debugging for capturing terminal output to a file</li>
<li>Hive: improved integration</li>
<li>General
<ul>
<li>Fixed visual bug when matcaps are not installed. Light and Dark themes now use built-in matcaps</li>
<li>Ray casts ignores source geometry that is clipped (near clip only) or culled (backface)</li>
<li>Brush size (PolyStrips, Strokes, Relax, Smooth) is more consistent across screen</li>
<li>Fixed many smaller bugs</li>
<li>Restructured, refactored, and cleaned code base</li>
<li>Auto saves will make a few attempts before alerting of failure</li>
</ul>
</li>
</ul>
<h3 id="330">3.3.0</h3>
<ul>
<li>New undo system</li>
<li>New recovery system</li>
<li>Revamped action system</li>
<li>Added button to open online documents for Warning Details</li>
<li>Improved error handling at startup</li>
<li>Refactored large sections and cleaned code</li>
<li>Removed code for Blender 2.79 and earlier</li>
<li>Reorganized file structure</li>
<li>Improved Hive integration</li>
<li>Added option to keep viewport orbit center when nothing is selected</li>
<li>Added options to control Tweak/Relax brush alpha</li>
<li>Fixed disappearing text on detail UI elements at certain Blender UI scales</li>
<li>Fixed crash when exiting RetopoFlow after starting in wireframe mode</li>
<li>Fixed issue where selected but hidden geometry could get deleted</li>
<li>Turning off shading optimization now restores original shading settings</li>
<li>General code improvement</li>
</ul>
<h3 id="329">3.2.9</h3>
<ul>
<li>Fixed bug where scaling of target and viewport changes with save/undo</li>
<li>Fixed rare bug in PolyPen</li>
</ul>
<h3 id="328">3.2.8</h3>
<ul>
<li>Fixed bug where checkedness of alert checkboxes is not saved</li>
<li>Fixed bug with Stroke snapping distance</li>
</ul>
<h3 id="327">3.2.7</h3>
<ul>
<li>Fixed bug when pressing MMB while moving geometry with LMB</li>
<li>Significantly improved Auto Save and Auto Save recovery</li>
<li>Added quick bail if unexpected exceptions occur to prevent work loss</li>
<li>Temp mesh is used when updating to prevent work loss</li>
<li>PolyPen now has option to adjust distance for inserting vertex into edge</li>
<li>Fixed issue where loose verts and edges are unselectable</li>
<li>Fixed issue with crashing when using tablet</li>
<li>Improved auto adjustment of view clipping</li>
<li>Improved stability of Strokes and PolyPen</li>
<li>Added option for snapping to geometry while using Strokes instead of using brush radius</li>
<li>Checking for invalid characters in add-on folder name</li>
<li>Improved and debugged UI code</li>
<li>Removed RetopoFlow menu from all modes other than Object and Mesh Edit</li>
<li>Moved version number from the menu title to the menu header</li>
</ul>
<h3 id="326">3.2.6</h3>
<ul>
<li>Vertex pinning and unpinning, where pinned vertices cannot be moved</li>
<li>Seam edges can be pinned</li>
<li>Option to hide mouse cursor when moving geometry</li>
<li>Keymap editor improvements: shows keys for done and toggle UI, added Blender passthrough, fixed many bugs</li>
<li>Fixed bug where modifier key states would be out of sync if pressed or unpressed while changing view</li>
<li>Added auto clip adjustment setting, which adjusts clip settings based on view position and distance to bbox of sources</li>
<li>Fixed visualization bug where depth test wasnt always enabled and depth range might not be [0,1]</li>
<li>Added check for and button to select vertices that are on the “wrong” side of symmetry planes.</li>
<li>Fixed many bugs and cleaned up code</li>
</ul>
<h3 id="325">3.2.5</h3>
<ul>
<li>Worked around a major crashing bug in Blender 3.0 and 3.1</li>
<li>Overhauled RetopoFlows Blender menu, by adding custom icons to buttons, improving the wording, buttons to online help documents, buttons to updater</li>
<li>Modifier keys (i.e., <code class="language-plaintext highlighter-rouge">Ctrl</code>, <code class="language-plaintext highlighter-rouge">Shift</code>, <code class="language-plaintext highlighter-rouge">Alt</code>, <code class="language-plaintext highlighter-rouge">OSKey</code>) now show OSX-specific symbols (i.e., <code class="language-plaintext highlighter-rouge">^</code>, <code class="language-plaintext highlighter-rouge"></code>, <code class="language-plaintext highlighter-rouge"></code>, <code class="language-plaintext highlighter-rouge"></code>) for better readability on OSX machines</li>
<li>Improved keymap editor</li>
<li>Minor improvements for smaller screens</li>
<li>Started working on improvements for error reporting</li>
<li>Started refactoring code for major changes to Blender 3.0+ API, such as removing dependence on the deprecated <code class="language-plaintext highlighter-rouge">bgl</code> module</li>
<li>Many bug fixes</li>
<li>General cleaning up of old code and adding comments</li>
</ul>
<h3 id="324">3.2.4</h3>
<ul>
<li>Fixed visual bug that affected machines with Apples M1 processor (issue #915)</li>
</ul>
<h3 id="323">3.2.3</h3>
<ul>
<li>Worked around a bug with Apple M1 MacBook Pro / Intel graphics card where Blender would crash on load</li>
<li>Warn if a source or the target has non-invertible transformation matrix</li>
<li>Minor change due to Blender 3.0 deprecating <code class="language-plaintext highlighter-rouge">blf.KERNING_DEFAULT</code></li>
</ul>
<h3 id="322">3.2.2</h3>
<ul>
<li>Fixed major updater bug</li>
<li>Fixed bug where Brush Falloff with <code class="language-plaintext highlighter-rouge">Ctrl+F</code> was not working</li>
</ul>
<h3 id="321">3.2.1</h3>
<ul>
<li>Fixed issue where normals are not computed correctly after applying symmetry</li>
<li>Added shortcuts to increase and decrease brush radius for Tweak and Relax</li>
<li>Fixed scrolling UI with trackpad</li>
<li>Minor fixes across several tools (Contours, PolyStrips, Loops, Strokes, Relax, Tweak)</li>
<li>Broad and general maintenance (code refactoring, cleaning, and commenting)</li>
<li>Minor UI/UX improvements</li>
</ul>
<h3 id="320">3.2.0</h3>
<ul>
<li>Added builtin Keymap Editor (prototype)</li>
<li>Significantly improved performance of tools with large target meshes!</li>
<li>Target mesh visualization will now split (under the hood) when working on a small portion, improving feedback performance for some actions</li>
<li>Shortest path selection keymap default changed from <code class="language-plaintext highlighter-rouge">Shift+Alt+LMB/RMB+Double</code> to <code class="language-plaintext highlighter-rouge">Ctrl+Shift+LMB/RMB+Click</code> to better match Blender</li>
<li>Added ability to hide/reveal target mesh geometry</li>
<li>Added button to recalculate normals in the Target Cleaning panel</li>
<li>Added ability to Collapse Edges &amp; Faces from delete/dissolve/collapse menu</li>
<li>Tweak and Relax can now slide vertices along a boundary</li>
<li>New Plane Symmetry Visualization setting, which is now default for better performance</li>
<li>Added selection options to help with selecting hard-to-get vertices</li>
<li>Improved Updater System</li>
<li>General code cleanup and refactoring</li>
<li>Works in Blender 2.83.03.0.0alpha (as of 2021.06.21)</li>
<li>Many bug fixes and UX improvements</li>
</ul>
<h3 id="310">3.1.0</h3>
<ul>
<li>Knife is a new tool for cutting into existing geometry!</li>
<li>Selection painting now selects geometry along shortest path from where mouse was first pressed to the geometry nearest current mouse position</li>
<li>Tools are much more responsive when working on targets with high geometry counts</li>
<li>Loops, Tweak, and Relax now have quick shortcuts</li>
<li>The tools pie menu is now <code class="language-plaintext highlighter-rouge">Q</code> as well as <code class="language-plaintext highlighter-rouge">~</code> to help reduce finger gymnastics</li>
<li>Major UI performance improvements from redesign and reimplementation of underlying UI system</li>
<li>Improved smart selection and added actions for selecting geometry along shortest path</li>
<li>Added button to push target vertices along normal before snapping to fix vertices snapping to inner source surfaces</li>
<li>Added updater system for updating to specific branches or commits</li>
<li>Added actions for hiding or revealing target geometry</li>
<li>Added button on help system to view help documents in web browser and to open FAQ</li>
<li>Added Blender operator for creating new target mesh based on active source mesh</li>
<li>Visualizing non-manifold edges and detached vertices</li>
<li>Many bug fixes and UX improvements</li>
</ul>
<h3 id="302">3.0.2</h3>
<ul>
<li>Tweak/Relax: added brush presets</li>
<li>Symmetry: added button to apply symmetry, improved visualization</li>
<li>PolyStrips/Strokes: brush settings now remain through sessions</li>
<li>Strokes: added span insert modes (fixed, brush size) and brush size adjustment</li>
<li>Improved ability to select geometry</li>
<li>Added edge flow smooth feature</li>
<li>Several bug fixes and UX improvements</li>
</ul>
<h3 id="301">3.0.1</h3>
<ul>
<li>PolyPen: added ability to move edge with drag after inserting new quad (before releasing insert)</li>
<li>Strokes: added a simple visualization to show how a stroke will connect to hovered existing geometry. Still a work-in-progress!</li>
<li>Dissolving edges now dissolves verts (similar to Blender)</li>
<li>Tweak/Relax: brushes now do not become fully opaque (nor fully transparent) when strength is set to 1 (or 0)</li>
<li>Patches: improved code to detect good candidates for bridging two I-strips</li>
<li>PolyPen: PP-specific pie menu now shown in help doc</li>
<li>Added quit confirmation dialog when using <code>Tab</code>. This dialog can be disabled.</li>
<li>Added Delete/Dissolve pie menu using <code>Ctrl+Backspace</code>, <code>Ctrl+Delete</code>, <code>Ctrl+X</code></li>
<li>Other miscellaneous bug fixes</li>
</ul>
<h3 id="300">3.0.0</h3>
<ul>
<li>Left-mouse select is now a thing!</li>
<li>Mouse dragging, clicking, and double-clicking are now possible actions.</li>
<li>Some of the keymaps for some tools have changed to allow for LMB-select.</li>
<li>The target mesh is what you are currently editing (Edit Mode), and the source meshes are any other visible mesh.</li>
<li>RF now automatically detects many common mesh errors, such as vertices with invalid coordinates and inward-facing normals.</li>
<li>Some RF tools have improved options.</li>
<li>Major UI and UX improvements, including: tooltips, labels, help docs, gizmo rendering, minimizing main tool window</li>
<li>Improved consistency across all tools</li>
<li>Tools refresh faster when in middle of editing</li>
<li>Code optimization, cleanup, and refactoring</li>
<li>Reworked Auto Save and Save to be more intuitive and handle errors better</li>
<li>Works in Blender 2.8x and 2.9x</li>
<li>Fixed many issues</li>
</ul>
</section>
<footer>
<p><small>Hosted on GitHub Pages. Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
</body>
</html>
@@ -0,0 +1,255 @@
# Change List
This document contains details about what has changed in RetopoFlow since version 2.x.
### 4.0.0 alpha
RetopoFlow 4 is a complete rewrite of RetopoFlow that massively improves performance and integrates the tools directly into Blender's Edit Mode.
Some key changes include:
- General
- The tools are now in the Edit Mode toolbar
- Ctrl scroll is now used instead of Shift scroll for adjusting insert count
- Contours
- A new Fast method was added, which can improve performance on dense meshes and work in some cases where the mesh is split
- PolyStrips
- Proportional Editing can now be used for smoothly affecting the surrounding geometry while adjusting existing strips
- The angle at which new strips are split to create sharp corners can now be specified
- Strip spacing is now calculated in world space
- Strokes
- Several new stroke shapes are now supported so drawing new geometry feels more natural
- Extrudes can now match the curvature of the original geometry if the method is set to Adapt
- A smoothing control has been added for naturally blending between strokes created at different angles
- The new default insert count, Average, always creates perfectly even quads when extruding
### 3.4.3
- Fixed text rendering bug
- Fixed GPU Capabilities bug with Blender 4.1
- Fixed Blender UI becoming unresponsive after starting RF
### 3.4.2
- Worked around issue of "locking" Blender interface on Windows machines with Blender >3.6
- Strokes now shows counts for selected verts, selected edges, new spans, new loops
- Improved clarity for target geometry that is pinned, seam, non-manifold
- Disabling visualization of pinned or seam geometry will disable pinning
- Added keymap for marking/clearing seams, confirming quick tools
- Added keymap for confirming quick tools
- Added Merge options to Delete / Dissolve pie menu
- Many minor bug fixes
### 3.4.1
- Improved visualization and editing when working on "wrong" side of symmetry
- Fixed bridging bug with Strokes
- Fixed many bugs
- Improved general PolyPen performance
- UI drawing uses framebuffers again (UI performance)
- Warns when geometry is on "wrong" side of symmetry
- General code cleanup, refactor, and optimizations
### 3.4.0
This version of RetopoFlow requires Blender 3.6 or later.
- Blender
- Removed dependence on deprecated `bgl` module
- Added support for Metal
- Improved general feedback and error handling during startup process
- Improved indication of warnings in Blender menu
- Added button to continue editing with active mesh as target
- Improved handling of when Blender version is outside requirements
- Performance
- Improved navigating and selecting
- Improved performance of all tools
- Select: added new tool to do box selection
- General: added simple rip and rip fill
- Contours
- Fixed crashing bug when cutting across non-manifold edge
- Fixed bug when cancelling cut
- Strokes: consistent fixed span/segment count for all insertions
- Knife: fixed bug when using where no source geometry exists
- Tweak: added raycast/snap modes to work in screen or world space
- Auto Save
- Fixed and improved reporting, recovery, and other operations
- Auto save is delayed until current action is finished
- Input
- Added keymaps to select all linked, roll view, increase vertex count (Contours, PolyStrips, etc.) with `plus` key
- Fixed NDOF and trackpad
- Mirror: preliminary work to mirror actions to "correct" side of symmetry plane(s)
- Debug: deep debugging for capturing terminal output to a file
- Hive: improved integration
- General
- Fixed visual bug when matcaps are not installed. Light and Dark themes now use built-in matcaps
- Ray casts ignores source geometry that is clipped (near clip only) or culled (backface)
- Brush size (PolyStrips, Strokes, Relax, Smooth) is more consistent across screen
- Fixed many smaller bugs
- Restructured, refactored, and cleaned code base
- Auto saves will make a few attempts before alerting of failure
### 3.3.0
- New undo system
- New recovery system
- Revamped action system
- Added button to open online documents for Warning Details
- Improved error handling at startup
- Refactored large sections and cleaned code
- Removed code for Blender 2.79 and earlier
- Reorganized file structure
- Improved Hive integration
- Added option to keep viewport orbit center when nothing is selected
- Added options to control Tweak/Relax brush alpha
- Fixed disappearing text on detail UI elements at certain Blender UI scales
- Fixed crash when exiting RetopoFlow after starting in wireframe mode
- Fixed issue where selected but hidden geometry could get deleted
- Turning off shading optimization now restores original shading settings
- General code improvement
### 3.2.9
- Fixed bug where scaling of target and viewport changes with save/undo
- Fixed rare bug in PolyPen
### 3.2.8
- Fixed bug where checkedness of alert checkboxes is not saved
- Fixed bug with Stroke snapping distance
### 3.2.7
- Fixed bug when pressing MMB while moving geometry with LMB
- Significantly improved Auto Save and Auto Save recovery
- Added quick bail if unexpected exceptions occur to prevent work loss
- Temp mesh is used when updating to prevent work loss
- PolyPen now has option to adjust distance for inserting vertex into edge
- Fixed issue where loose verts and edges are unselectable
- Fixed issue with crashing when using tablet
- Improved auto adjustment of view clipping
- Improved stability of Strokes and PolyPen
- Added option for snapping to geometry while using Strokes instead of using brush radius
- Checking for invalid characters in add-on folder name
- Improved and debugged UI code
- Removed RetopoFlow menu from all modes other than Object and Mesh Edit
- Moved version number from the menu title to the menu header
### 3.2.6
- Vertex pinning and unpinning, where pinned vertices cannot be moved
- Seam edges can be pinned
- Option to hide mouse cursor when moving geometry
- Keymap editor improvements: shows keys for done and toggle UI, added Blender passthrough, fixed many bugs
- Fixed bug where modifier key states would be out of sync if pressed or unpressed while changing view
- Added auto clip adjustment setting, which adjusts clip settings based on view position and distance to bbox of sources
- Fixed visualization bug where depth test wasn't always enabled and depth range might not be [0,1]
- Added check for and button to select vertices that are on the "wrong" side of symmetry planes.
- Fixed many bugs and cleaned up code
### 3.2.5
- Worked around a major crashing bug in Blender 3.0 and 3.1
- Overhauled RetopoFlow's Blender menu, by adding custom icons to buttons, improving the wording, buttons to online help documents, buttons to updater
- Modifier keys (i.e., `Ctrl`, `Shift`, `Alt`, `OSKey`) now show OSX-specific symbols (i.e., `^`, `⇧`, `⌥`, `⌘`) for better readability on OSX machines
- Improved keymap editor
- Minor improvements for smaller screens
- Started working on improvements for error reporting
- Started refactoring code for major changes to Blender 3.0+ API, such as removing dependence on the deprecated `bgl` module
- Many bug fixes
- General cleaning up of old code and adding comments
### 3.2.4
- Fixed visual bug that affected machines with Apple's M1 processor (issue #915)
### 3.2.3
- Worked around a bug with Apple M1 MacBook Pro / Intel graphics card where Blender would crash on load
- Warn if a source or the target has non-invertible transformation matrix
- Minor change due to Blender 3.0 deprecating `blf.KERNING_DEFAULT`
### 3.2.2
- Fixed major updater bug
- Fixed bug where Brush Falloff with `Ctrl+F` was not working
### 3.2.1
- Fixed issue where normals are not computed correctly after applying symmetry
- Added shortcuts to increase and decrease brush radius for Tweak and Relax
- Fixed scrolling UI with trackpad
- Minor fixes across several tools (Contours, PolyStrips, Loops, Strokes, Relax, Tweak)
- Broad and general maintenance (code refactoring, cleaning, and commenting)
- Minor UI/UX improvements
### 3.2.0
- Added builtin Keymap Editor (prototype)
- Significantly improved performance of tools with large target meshes!
- Target mesh visualization will now split (under the hood) when working on a small portion, improving feedback performance for some actions
- Shortest path selection keymap default changed from `Shift+Alt+LMB/RMB+Double` to `Ctrl+Shift+LMB/RMB+Click` to better match Blender
- Added ability to hide/reveal target mesh geometry
- Added button to recalculate normals in the Target Cleaning panel
- Added ability to Collapse Edges & Faces from delete/dissolve/collapse menu
- Tweak and Relax can now slide vertices along a boundary
- New Plane Symmetry Visualization setting, which is now default for better performance
- Added selection options to help with selecting hard-to-get vertices
- Improved Updater System
- General code cleanup and refactoring
- Works in Blender 2.83.0--3.0.0alpha (as of 2021.06.21)
- Many bug fixes and UX improvements
### 3.1.0
- Knife is a new tool for cutting into existing geometry!
- Selection painting now selects geometry along shortest path from where mouse was first pressed to the geometry nearest current mouse position
- Tools are much more responsive when working on targets with high geometry counts
- Loops, Tweak, and Relax now have quick shortcuts
- The tools pie menu is now `Q` as well as `~` to help reduce finger gymnastics
- Major UI performance improvements from redesign and reimplementation of underlying UI system
- Improved smart selection and added actions for selecting geometry along shortest path
- Added button to push target vertices along normal before snapping to fix vertices snapping to inner source surfaces
- Added updater system for updating to specific branches or commits
- Added actions for hiding or revealing target geometry
- Added button on help system to view help documents in web browser and to open FAQ
- Added Blender operator for creating new target mesh based on active source mesh
- Visualizing non-manifold edges and detached vertices
- Many bug fixes and UX improvements
### 3.0.2
- Tweak/Relax: added brush presets
- Symmetry: added button to apply symmetry, improved visualization
- PolyStrips/Strokes: brush settings now remain through sessions
- Strokes: added span insert modes (fixed, brush size) and brush size adjustment
- Improved ability to select geometry
- Added edge flow smooth feature
- Several bug fixes and UX improvements
### 3.0.1
- PolyPen: added ability to move edge with drag after inserting new quad (before releasing insert)
- Strokes: added a simple visualization to show how a stroke will connect to hovered existing geometry. Still a work-in-progress!
- Dissolving edges now dissolves verts (similar to Blender)
- Tweak/Relax: brushes now do not become fully opaque (nor fully transparent) when strength is set to 1 (or 0)
- Patches: improved code to detect good candidates for bridging two I-strips
- PolyPen: PP-specific pie menu now shown in help doc
- Added quit confirmation dialog when using {{ site.data.keymaps.done }}. This dialog can be disabled.
- Added Delete/Dissolve pie menu using {{ site.data.keymaps.delete_pie_menu }}
- Other miscellaneous bug fixes
### 3.0.0
- Left-mouse select is now a thing!
- Mouse dragging, clicking, and double-clicking are now possible actions.
- Some of the keymaps for some tools have changed to allow for LMB-select.
- The target mesh is what you are currently editing (Edit Mode), and the source meshes are any other visible mesh.
- RF now automatically detects many common mesh errors, such as vertices with invalid coordinates and inward-facing normals.
- Some RF tools have improved options.
- Major UI and UX improvements, including: tooltips, labels, help docs, gizmo rendering, minimizing main tool window
- Improved consistency across all tools
- Tools refresh faster when in middle of editing
- Code optimization, cleanup, and refactoring
- Reworked Auto Save and Save to be more intuitive and handle errors better
- Works in Blender 2.8x and 2.9x
- Fixed many issues
@@ -0,0 +1,138 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Contours | Retopoflow</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="Contours" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A suite of retopology tools for Blender" />
<meta property="og:description" content="A suite of retopology tools for Blender" />
<link rel="canonical" href="http://localhost:4000/v4/contours.html" />
<meta property="og:url" content="http://localhost:4000/v4/contours.html" />
<meta property="og:site_name" content="Retopoflow" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Contours" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"A suite of retopology tools for Blender","headline":"Contours","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"http://localhost:4000/images/logos/v4.png"}},"url":"http://localhost:4000/v4/contours.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/css/style.css?v=fae29b0ecee4f94874e8b5996f55661955b83305">
<link rel="stylesheet" type="text/css" href="/assets/css/main.css">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<span id="logo" class="logo"><img src="/images/logos/v4.png" alt="Logo" /></span>
<h1 class="title" id="title"><a href="/index.html">Retopoflow</a></h1>
<p class="tagline">by <a class="outlink" href="https://orangeturbine.com/" target="_blank">Orange Turbine</a></p>
<select name="version" class="version" id="version_menu" title="version" onchange="switch_versions(event)">
<option value="v3">Version 3</option>
<option value="v4">Version 4</option>
</select>
<div id="navigation"></div>
</header>
<script>
let version = localStorage.getItem("version")
if (version == null) {version = 'v4';}
let path = `/assets/html/${version}.html`;
function switch_versions(event) {
let menu = event.target;
let result = menu.options[menu.selectedIndex].value;
version = result
localStorage.setItem("version", result);
if (result == 'v3') {
location.href = '/v3/index.html'
}
else if (result == 'v4') {
location.href = '/index.html'
}
}
fetch(path)
.then(response => response.text())
.then(data => {document.getElementById('navigation').innerHTML = data;})
.catch(error => console.error('Error loading HTML:', error));
if (location.href.includes('v3')) {
document.getElementById('version_menu').value = 'v3'
document.getElementById('title').innerHTML = `<a href="/v3/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v3.png" alt="Logo" class="logo" />`
localStorage.setItem("version", 'v3');
}
else {
document.getElementById('version_menu').value = 'v4'
document.getElementById('title').innerHTML = `<a href="/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v4.png" alt="Logo" class="logo" />`
}
</script>
<section>
<h1 id="-contours"><img src="/images/icons/contours-icon.png" alt="" /> Contours</h1>
<p><img src="/v4/images/contours.jpg" alt="" /></p>
<p>The Contours tool gives you a quick and easy way to retopologize cylindrical forms.
For example, its ideal for organic forms such as arms, fingers, legs, tentacles, tails, horns, etc.</p>
<h2 id="inserting">Inserting</h2>
<p>The tool works by drawing strokes perpendicular to the form to create loops that define the contour of the shape.</p>
<p>Hold <code class="language-plaintext highlighter-rouge">Ctrl</code> and <code class="language-plaintext highlighter-rouge">LMB Drag</code> across the source geometry to cretate a new cut. The source geometry under the center of the stroke is what gets evaluated. You may draw strokes in any order, from any direction.</p>
<ul>
<li>If there is no retopology geometry selected or under the stroke, a new loop will be created.</li>
<li>If the stroke is over existing geometry, a new cut will be inserted similar to a loop cut.</li>
<li>If there is a loop selected, a new loop will be created and connected to the selection if possible.</li>
</ul>
<p>After you create a new loop but before that loop is connected to any other geometry (including another loop), you can adjust the number of vertices in the loop by scrolling with <code class="language-plaintext highlighter-rouge">Ctrl Mouse Wheel</code>.</p>
<h2 id="settings">Settings</h2>
<p><strong>Count</strong> is the number of vertices that will be created when adding a new loop that is not connected to any geometry. When extruding or cutting existing geometry, the new loop will have the same number of vertices as the adjacent loops.</p>
<p><strong>Method</strong> is how Contours calculates the shape of the source mesh in order to create a new loop around it.</p>
<ul>
<li>
<p><strong>Walk</strong> calculates the faces under the stroke one by one until it complets a loop, ensuring that the shape is fully preserved. This can be slow on extremely dense meshes, and does not work on non-manifold geometry, but is still quite fast and gives the best results in the vast majority of cases. It works great for complex shapes like fingers, where screen-space or raycasting algorithms tend to fail.</p>
</li>
<li>
<p><strong>Fast</strong> and <strong>Skip</strong> are experimental options that can improve speed, but are currently not always accurate or stable. They are still in development and not guarenteed to work.</p>
</li>
</ul>
<h2 id="selecting">Selecting</h2>
<p>The default selection mode for Contours is Vertex + Edge because it is helpful to be able to quickly select edges and loops while also clearly seeing the number and position of the newly creted vertices.</p>
<h2 id="transforming">Transforming</h2>
<p>You can quickly slide loops around by simply clicking and dragging on an edge. [Not working yet in version 4]</p>
<p>To rotate or twist a loop around the surface of the source, use the hotkey <code class="language-plaintext highlighter-rouge">Alt R</code>. [Not working yet in version 4]</p>
</section>
<footer>
<p><small>Hosted on GitHub Pages. Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
</body>
</html>
@@ -0,0 +1,39 @@
# ![](/images/icons/contours-icon.png) Contours
![](images/contours.jpg)
The Contours tool gives you a quick and easy way to retopologize cylindrical forms.
For example, it's ideal for organic forms such as arms, fingers, legs, tentacles, tails, horns, etc.
## Inserting
The tool works by drawing strokes perpendicular to the form to create loops that define the contour of the shape.
Hold `Ctrl` and `LMB Drag` across the source geometry to cretate a new cut. The source geometry under the center of the stroke is what gets evaluated. You may draw strokes in any order, from any direction.
- If there is no retopology geometry selected or under the stroke, a new loop will be created.
- If the stroke is over existing geometry, a new cut will be inserted similar to a loop cut.
- If there is a loop selected, a new loop will be created and connected to the selection if possible.
After you create a new loop but before that loop is connected to any other geometry (including another loop), you can adjust the number of vertices in the loop by scrolling with `Ctrl Mouse Wheel`.
## Settings
**Count** is the number of vertices that will be created when adding a new loop that is not connected to any geometry. When extruding or cutting existing geometry, the new loop will have the same number of vertices as the adjacent loops.
**Method** is how Contours calculates the shape of the source mesh in order to create a new loop around it.
- **Walk** calculates the faces under the stroke one by one until it complets a loop, ensuring that the shape is fully preserved. This can be slow on extremely dense meshes, and does not work on non-manifold geometry, but is still quite fast and gives the best results in the vast majority of cases. It works great for complex shapes like fingers, where screen-space or raycasting algorithms tend to fail.
- **Fast** and **Skip** are experimental options that can improve speed, but are currently not always accurate or stable. They are still in development and not guarenteed to work.
## Selecting
The default selection mode for Contours is Vertex + Edge because it is helpful to be able to quickly select edges and loops while also clearly seeing the number and position of the newly creted vertices.
## Transforming
You can quickly slide loops around by simply clicking and dragging on an edge. [Not working yet in version 4]
To rotate or twist a loop around the surface of the source, use the hotkey `Alt R`. [Not working yet in version 4]
@@ -0,0 +1,212 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Retopoflow Debugging | Retopoflow</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="Retopoflow Debugging" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A suite of retopology tools for Blender" />
<meta property="og:description" content="A suite of retopology tools for Blender" />
<link rel="canonical" href="http://localhost:4000/v4/debugging.html" />
<meta property="og:url" content="http://localhost:4000/v4/debugging.html" />
<meta property="og:site_name" content="Retopoflow" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Retopoflow Debugging" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"A suite of retopology tools for Blender","headline":"Retopoflow Debugging","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"http://localhost:4000/images/logos/v4.png"}},"url":"http://localhost:4000/v4/debugging.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/css/style.css?v=fae29b0ecee4f94874e8b5996f55661955b83305">
<link rel="stylesheet" type="text/css" href="/assets/css/main.css">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<span id="logo" class="logo"><img src="/images/logos/v4.png" alt="Logo" /></span>
<h1 class="title" id="title"><a href="/index.html">Retopoflow</a></h1>
<p class="tagline">by <a class="outlink" href="https://orangeturbine.com/" target="_blank">Orange Turbine</a></p>
<select name="version" class="version" id="version_menu" title="version" onchange="switch_versions(event)">
<option value="v3">Version 3</option>
<option value="v4">Version 4</option>
</select>
<div id="navigation"></div>
</header>
<script>
let version = localStorage.getItem("version")
if (version == null) {version = 'v4';}
let path = `/assets/html/${version}.html`;
function switch_versions(event) {
let menu = event.target;
let result = menu.options[menu.selectedIndex].value;
version = result
localStorage.setItem("version", result);
if (result == 'v3') {
location.href = '/v3/index.html'
}
else if (result == 'v4') {
location.href = '/index.html'
}
}
fetch(path)
.then(response => response.text())
.then(data => {document.getElementById('navigation').innerHTML = data;})
.catch(error => console.error('Error loading HTML:', error));
if (location.href.includes('v3')) {
document.getElementById('version_menu').value = 'v3'
document.getElementById('title').innerHTML = `<a href="/v3/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v3.png" alt="Logo" class="logo" />`
localStorage.setItem("version", 'v3');
}
else {
document.getElementById('version_menu').value = 'v4'
document.getElementById('title').innerHTML = `<a href="/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v4.png" alt="Logo" class="logo" />`
}
</script>
<section>
<h1 id="retopoflow-debugging">Retopoflow Debugging</h1>
<p>If you run into an issue while using Retopoflow, you can report it via <a href="https://blendermarket.com/products/retopoflow">Product Support</a> on Superhive (formerly Blender Market) or by creating an issue on <a href="https://github.com/CGCookie/retopoflow/issues/new/choose">GitHub</a>.</p>
<p>Those who have purchased Retopoflow are helped first.</p>
<p>We support official releases of Blender (as listed on the <a href="./installation.html">Installation</a> page) and cannot gurantee compatibility with pre-release or non-official versions of Blender or compatibility with other add-ons.</p>
<p>There are a few things to keep in mind that will help us in debugging and fixing the issue as quickly as possible.</p>
<ul>
<li>
<p>Clearly explain the context. Show or describe what the scene looked like before you had the issue, what action triggered the issue, and what was the result of the action.</p>
</li>
<li>
<p>Consider sharing your <code class="language-plaintext highlighter-rouge">.blend</code> file with us. Often times, the file has a particular combination of Blender settings that we have not tested and having access to your file will make reproducing your issue easier.</p>
</li>
<li>
<p>Try to reproduce the issue on the default Blender scene or try to reproduce the issue on another machine, especially a different operating system (OSX, Windows, Linux) if possible.</p>
</li>
<li>
<p>Be sure to include all of the terminal / console output in your message (see below).</p>
</li>
<li>
<p>Be sure to include your machine information, Blender version, and Retopoflow version in your message.</p>
</li>
<li>
<p>Be sure to reply to our questions. If we are unable to reproduce the issue and it goes without any activity for some time, we will close the issue.</p>
</li>
</ul>
<h2 id="terminal--console-output">Terminal / Console Output</h2>
<p>Sometimes an issue is caused by a different part of code than what is reported by the error in the UI.</p>
<p>By design, we do not report all the information from Retopoflow, but that information might be critical to solving the issue.
You can access the additional information through the system terminal / console.</p>
<p>Note: There might be a lot of info in there (have to scroll), but be sure to copy <em>all</em> of the text from the terminal / console. Its ok to hit us with a wall of text!</p>
<!--
### Built-in Deep Debugging
This simplest way to report the terminal output is to enable Deep Debugging.
Note: you will need to restart Blender after enabling.
![](images/debugging_enable.png)
When Deep Debugging is enabled, all terminal output will be redirected to a text file.
- Start Blender, enabled Deep Debugging, restart Blender
- Start Retopoflow
- Once issue occurs, exit Retopoflow
- Under the Retopoflow menu, choose Open Debugging Info
![](images/debugging_open.png)
-->
<h3 id="windows">Windows</h3>
<ul>
<li>Start Blender as usual</li>
<li>In the Blender Menu: Windows &gt; Toggle System Console. The system console window will now open; minimize for now.</li>
<li>Start Retopoflow</li>
<li>Once issue occurs, switch to the system console.</li>
</ul>
<h3 id="osx">OSX</h3>
<p>Option 1:</p>
<ul>
<li>Right click on Blender app (ex: in Applications), then click New Terminal at Folder. The system terminal window will now open.</li>
<li>In the terminal, type <code class="language-plaintext highlighter-rouge">./Contents/MacOS/Blender</code> to start Blender.</li>
<li>Start Retopoflow</li>
<li>Once issue occurs, switch to the system terminal.</li>
</ul>
<p>Option 2:</p>
<ul>
<li>Open Terminal (Command+Space, type Terminal)</li>
<li>Open Finder, and browse to the Blender app.</li>
<li>Right click on Blender, then click Show Package Contents.</li>
<li>Open Contents folder, then open MacOS folder</li>
<li>Drag the blender file to the Terminal window</li>
<li>In Terminal, press enter.</li>
<li>Start Retopoflow</li>
<li>Once issue occurs, switch to the system terminal.</li>
</ul>
<h3 id="linux">Linux</h3>
<p>Option 1:</p>
<ul>
<li>Right click Blender app</li>
<li>Choose Edit Application</li>
<li>Under Advanced tab, check “Run in terminal”</li>
<li>Save and close</li>
<li>Start Blender as normal, but now a terminal window will show right before Blender loads.</li>
<li>Start Retopoflow</li>
<li>Once issue occurs, switch to the system terminal.</li>
</ul>
<p>Option 2:</p>
<ul>
<li>Open system terminal / console</li>
<li>Type <code class="language-plaintext highlighter-rouge">/path/to/blender</code>, where <code class="language-plaintext highlighter-rouge">/path/to</code> is the path to the blender binary.
ex: <code class="language-plaintext highlighter-rouge">/home/username/Downloads/Blender\ 3.0.1/blender</code>
ex: <code class="language-plaintext highlighter-rouge">/usr/bin/blender</code></li>
<li>Start Retopoflow</li>
<li>Once issue occurs, switch to the system terminal / console</li>
</ul>
</section>
<footer>
<p><small>Hosted on GitHub Pages. Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
</body>
</html>
@@ -0,0 +1,100 @@
# Retopoflow Debugging
If you run into an issue while using Retopoflow, you can report it via [Product Support](https://blendermarket.com/products/retopoflow) on Superhive (formerly Blender Market) or by creating an issue on [GitHub](https://github.com/CGCookie/retopoflow/issues/new/choose).
Those who have purchased Retopoflow are helped first.
We support official releases of Blender (as listed on the [Installation](./installation.html) page) and cannot gurantee compatibility with pre-release or non-official versions of Blender or compatibility with other add-ons.
There are a few things to keep in mind that will help us in debugging and fixing the issue as quickly as possible.
- Clearly explain the context. Show or describe what the scene looked like before you had the issue, what action triggered the issue, and what was the result of the action.
- Consider sharing your `.blend` file with us. Often times, the file has a particular combination of Blender settings that we have not tested and having access to your file will make reproducing your issue easier.
- Try to reproduce the issue on the default Blender scene or try to reproduce the issue on another machine, especially a different operating system (OSX, Windows, Linux) if possible.
- Be sure to include all of the terminal / console output in your message (see below).
- Be sure to include your machine information, Blender version, and Retopoflow version in your message.
- Be sure to reply to our questions. If we are unable to reproduce the issue and it goes without any activity for some time, we will close the issue.
## Terminal / Console Output
Sometimes an issue is caused by a different part of code than what is reported by the error in the UI.
By design, we do not report all the information from Retopoflow, but that information might be critical to solving the issue.
You can access the additional information through the system terminal / console.
Note: There might be a lot of info in there (have to scroll), but be sure to copy _all_ of the text from the terminal / console. It's ok to hit us with a wall of text!
<!--
### Built-in Deep Debugging
This simplest way to report the terminal output is to enable Deep Debugging.
Note: you will need to restart Blender after enabling.
![](images/debugging_enable.png)
When Deep Debugging is enabled, all terminal output will be redirected to a text file.
- Start Blender, enabled Deep Debugging, restart Blender
- Start Retopoflow
- Once issue occurs, exit Retopoflow
- Under the Retopoflow menu, choose Open Debugging Info
![](images/debugging_open.png)
-->
### Windows
- Start Blender as usual
- In the Blender Menu: Windows > Toggle System Console. The system console window will now open; minimize for now.
- Start Retopoflow
- Once issue occurs, switch to the system console.
### OSX
Option 1:
- Right click on Blender app (ex: in Applications), then click New Terminal at Folder. The system terminal window will now open.
- In the terminal, type `./Contents/MacOS/Blender` to start Blender.
- Start Retopoflow
- Once issue occurs, switch to the system terminal.
Option 2:
- Open Terminal (Command+Space, type Terminal)
- Open Finder, and browse to the Blender app.
- Right click on Blender, then click Show Package Contents.
- Open Contents folder, then open MacOS folder
- Drag the blender file to the Terminal window
- In Terminal, press enter.
- Start Retopoflow
- Once issue occurs, switch to the system terminal.
### Linux
Option 1:
- Right click Blender app
- Choose Edit Application
- Under Advanced tab, check "Run in terminal"
- Save and close
- Start Blender as normal, but now a terminal window will show right before Blender loads.
- Start Retopoflow
- Once issue occurs, switch to the system terminal.
Option 2:
- Open system terminal / console
- Type `/path/to/blender`, where `/path/to` is the path to the blender binary.
ex: `/home/username/Downloads/Blender\ 3.0.1/blender`
ex: `/usr/bin/blender`
- Start Retopoflow
- Once issue occurs, switch to the system terminal / console
@@ -0,0 +1,119 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Retopoflow FAQ | Retopoflow</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="Retopoflow FAQ" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A suite of retopology tools for Blender" />
<meta property="og:description" content="A suite of retopology tools for Blender" />
<link rel="canonical" href="http://localhost:4000/v4/faq.html" />
<meta property="og:url" content="http://localhost:4000/v4/faq.html" />
<meta property="og:site_name" content="Retopoflow" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Retopoflow FAQ" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"A suite of retopology tools for Blender","headline":"Retopoflow FAQ","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"http://localhost:4000/images/logos/v4.png"}},"url":"http://localhost:4000/v4/faq.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/css/style.css?v=fae29b0ecee4f94874e8b5996f55661955b83305">
<link rel="stylesheet" type="text/css" href="/assets/css/main.css">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<span id="logo" class="logo"><img src="/images/logos/v4.png" alt="Logo" /></span>
<h1 class="title" id="title"><a href="/index.html">Retopoflow</a></h1>
<p class="tagline">by <a class="outlink" href="https://orangeturbine.com/" target="_blank">Orange Turbine</a></p>
<select name="version" class="version" id="version_menu" title="version" onchange="switch_versions(event)">
<option value="v3">Version 3</option>
<option value="v4">Version 4</option>
</select>
<div id="navigation"></div>
</header>
<script>
let version = localStorage.getItem("version")
if (version == null) {version = 'v4';}
let path = `/assets/html/${version}.html`;
function switch_versions(event) {
let menu = event.target;
let result = menu.options[menu.selectedIndex].value;
version = result
localStorage.setItem("version", result);
if (result == 'v3') {
location.href = '/v3/index.html'
}
else if (result == 'v4') {
location.href = '/index.html'
}
}
fetch(path)
.then(response => response.text())
.then(data => {document.getElementById('navigation').innerHTML = data;})
.catch(error => console.error('Error loading HTML:', error));
if (location.href.includes('v3')) {
document.getElementById('version_menu').value = 'v3'
document.getElementById('title').innerHTML = `<a href="/v3/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v3.png" alt="Logo" class="logo" />`
localStorage.setItem("version", 'v3');
}
else {
document.getElementById('version_menu').value = 'v4'
document.getElementById('title').innerHTML = `<a href="/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v4.png" alt="Logo" class="logo" />`
}
</script>
<section>
<h1 id="retopoflow-faq">Retopoflow FAQ</h1>
<p>Below are answers to some common questions about Retopoflow.</p>
<h2 id="where-is-the-retopoflow-menu">Where is the Retopoflow menu?</h2>
<p>There is no longer a separate mode in Retopoflow 4, so there is no need for a menu in the 3D View header. Instead, you can find the tools in the Edit Mode toolbar. To quickly start a new retopology session, use one of the Retopology options added to the Object Mode Add Mesh menu.</p>
<h2 id="i-cannot-create-new-geometry--help">I cannot create new geometry! Help!?</h2>
<p>All of the tools that create new geometry do so while holding <code class="language-plaintext highlighter-rouge">Ctrl</code>. See the tools or <a href="/v4/general.html">Retopoflow Mode</a> for more actions.</p>
<h2 id="why-is-my-geometry-below-the-source-mesh">Why is my geometry below the source mesh?</h2>
<p>Sometimes, when the source mesh contains objects that are very thin, overlap, or nearly overlap, Retopoflow will snap geometry to the inner surface.
To fix this, use the Cleanup operation in the tool settings to push the vertices out along their normal before snapping them back to the source surface.</p>
<h2 id="why-cant-i-see-the-mirror-modifier-while-im-working">Why cant I see the mirror modifier while Im working?</h2>
<p>Blenders Retopology overlay does not currently support viewing modifiers in Edit Mode unless you turn on the On Cage option, which is represented by the triangle mesh data icon.</p>
<h2 id="is-there-a-polycount-limit">Is there a polycount limit?</h2>
<p>Retopoflow 4 can comfortably work at the high resolutions needed for modern 3D graphics. The performance varies by tool. For example, PolyPen can work perfectly smoothly on meshes as high as 50 million polygons while Contours will have a few second delay at polycounts that high since it walks every face. We are currently working on alternative algorithms for any area that can be slow, even at extreme polycounts, so that you never have to worry about that again.</p>
</section>
<footer>
<p><small>Hosted on GitHub Pages. Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
</body>
</html>
@@ -0,0 +1,26 @@
# Retopoflow FAQ
Below are answers to some common questions about Retopoflow.
## Where is the Retopoflow menu?
There is no longer a separate mode in Retopoflow 4, so there is no need for a menu in the 3D View header. Instead, you can find the tools in the Edit Mode toolbar. To quickly start a new retopology session, use one of the Retopology options added to the Object Mode Add Mesh menu.
## I cannot create new geometry! Help!?
All of the tools that create new geometry do so while holding `Ctrl`. See the tools or [Retopoflow Mode](/v4/general.html) for more actions.
## Why is my geometry below the source mesh?
Sometimes, when the source mesh contains objects that are very thin, overlap, or nearly overlap, Retopoflow will snap geometry to the inner surface.
To fix this, use the Cleanup operation in the tool settings to push the vertices out along their normal before snapping them back to the source surface.
## Why can't I see the mirror modifier while I'm working?
Blender's Retopology overlay does not currently support viewing modifiers in Edit Mode unless you turn on the On Cage option, which is represented by the triangle mesh data icon.
## Is there a polycount limit?
Retopoflow 4 can comfortably work at the high resolutions needed for modern 3D graphics. The performance varies by tool. For example, PolyPen can work perfectly smoothly on meshes as high as 50 million polygons while Contours will have a few second delay at polycounts that high since it walks every face. We are currently working on alternative algorithms for any area that can be slow, even at extreme polycounts, so that you never have to worry about that again.
@@ -0,0 +1,184 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Retopoflow Mode | Retopoflow</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="Retopoflow Mode" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A suite of retopology tools for Blender" />
<meta property="og:description" content="A suite of retopology tools for Blender" />
<link rel="canonical" href="http://localhost:4000/v4/general.html" />
<meta property="og:url" content="http://localhost:4000/v4/general.html" />
<meta property="og:site_name" content="Retopoflow" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Retopoflow Mode" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"A suite of retopology tools for Blender","headline":"Retopoflow Mode","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"http://localhost:4000/images/logos/v4.png"}},"url":"http://localhost:4000/v4/general.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/css/style.css?v=fae29b0ecee4f94874e8b5996f55661955b83305">
<link rel="stylesheet" type="text/css" href="/assets/css/main.css">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<span id="logo" class="logo"><img src="/images/logos/v4.png" alt="Logo" /></span>
<h1 class="title" id="title"><a href="/index.html">Retopoflow</a></h1>
<p class="tagline">by <a class="outlink" href="https://orangeturbine.com/" target="_blank">Orange Turbine</a></p>
<select name="version" class="version" id="version_menu" title="version" onchange="switch_versions(event)">
<option value="v3">Version 3</option>
<option value="v4">Version 4</option>
</select>
<div id="navigation"></div>
</header>
<script>
let version = localStorage.getItem("version")
if (version == null) {version = 'v4';}
let path = `/assets/html/${version}.html`;
function switch_versions(event) {
let menu = event.target;
let result = menu.options[menu.selectedIndex].value;
version = result
localStorage.setItem("version", result);
if (result == 'v3') {
location.href = '/v3/index.html'
}
else if (result == 'v4') {
location.href = '/index.html'
}
}
fetch(path)
.then(response => response.text())
.then(data => {document.getElementById('navigation').innerHTML = data;})
.catch(error => console.error('Error loading HTML:', error));
if (location.href.includes('v3')) {
document.getElementById('version_menu').value = 'v3'
document.getElementById('title').innerHTML = `<a href="/v3/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v3.png" alt="Logo" class="logo" />`
localStorage.setItem("version", 'v3');
}
else {
document.getElementById('version_menu').value = 'v4'
document.getElementById('title').innerHTML = `<a href="/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v4.png" alt="Logo" class="logo" />`
}
</script>
<section>
<h1 id="retopoflow-mode">Retopoflow Mode</h1>
<p>In previous versions, Retopoflow tools were only accessable in a special mode that was completely separated from the rest of Blender. Since Retopoflow 4, these tools have been integrated tightly into Edit Mode. However, switching to one of the Retopoflow tools does still enter you into a type of mode that is specifically set up for retopology.</p>
<p>Entering a Retopoflow tool will adjust Blenders settings for:</p>
<ul>
<li>The selection mode</li>
<li>The retopology overlay</li>
<li>Snapping</li>
<li>Auto-merging vertices</li>
</ul>
<p>Switching out of a Retopoflow tool will restore all of your previous settings.</p>
<h2 id="terminology">Terminology</h2>
<table>
<tbody>
<tr>
<td>Source Object(s)</td>
<td>:</td>
<td>The original object(s) that you are re-creating. These meshes typically have a high polygon count with poor topology and edge flow (ex: result of Dyntopo in Sculpt Mode)</td>
</tr>
<tr>
<td>Retopology Object</td>
<td>:</td>
<td>The new object that stores the retopologized surface. This mesh typically has a low polygon count with good topology and edge flow.</td>
</tr>
</tbody>
</table>
<p>Any mesh object that is visible and not the active retopolgoy object is considered a source object.
This means that you can hide or move objects to different scenes to change which source objects will be retopologized.</p>
<p>You can also mark objects as non-selectable in the Outliner and in Retopoflows Options menu (far right in the tool header) choose Exclude Non-Selectable to keep those objects visible but not acting as sources.</p>
<h2 id="selection">Selection</h2>
<p>Selection in Retopoflow tools follows Blenders selection paradigm as much as possible.</p>
<p>The main difference is when using the brush-based tools like Tweak and Relax. In those, selection cannot be done with <code class="language-plaintext highlighter-rouge">LMB</code> (left mouse button) because that action is already used to apply the brush. Instead, you can use other Blender hotkeys like <code class="language-plaintext highlighter-rouge">Shift LMB</code> to toggle select, <code class="language-plaintext highlighter-rouge">B</code> to box select, or <code class="language-plaintext highlighter-rouge">Ctrl RMB drag</code> to lasso select.</p>
<p>Also, since <code class="language-plaintext highlighter-rouge">Ctrl LMB</code> is already used for creating new geometry in the other tools, Blenders Pick Shortest Path operator is not accessable with that hotkey. However, you can still use <code class="language-plaintext highlighter-rouge">Shift Ctrl LMB</code> to the same effect.</p>
<p>The tools in Retopoflow can be used in any selection mode, but are generally more useful in some than others. For example, PolyPen expects to connect to edges and verts but not faces, so switching to PolyPen enables both edge and vert selection and disables face selection by default. All tools have a preferred selection mode that is set automatically when switching to the tool.</p>
<p><em>Tip: In Blender, you can always enable multiple selection modes by holding</em> <code class="language-plaintext highlighter-rouge">Shift</code> <em>while choosing them.</em></p>
<p>Blenders default shortcut for loop selection is <code class="language-plaintext highlighter-rouge">Alt Left Click</code> or <code class="language-plaintext highlighter-rouge">Double Click</code> depending on your preferences. In Retopoflow, you can always use both!</p>
<h2 id="altered-operators">Altered Operators</h2>
<p>Retopoflow has slightly altered versions of a few Blender operators in order to make them more useful for retopology.</p>
<ul>
<li><strong>Translate</strong> (<code class="language-plaintext highlighter-rouge">G</code>) has been modified slighly to improve snapping behavior, but you should not need to think about this and can use it just like Blenders Translate.</li>
</ul>
<h2 id="common-settings">Common Settings</h2>
<p>All settings for the Retopoflow tools can be found in the 3D View tool header, the sidebar in the Tool tab, or the Tool tab of the Properties Editor when the tool is active in the 3D View toolbar.</p>
<p>The insert tools share the same <strong>Tweak</strong> settings for how big the selection hitbox is, whether vertices are auto-merged, and how big the auto-merge threshold is while using <code class="language-plaintext highlighter-rouge">LMB Drag</code> on geometry to tweak it. <em>These settings are not the same as the Tweak Brush tool settings.</em></p>
<p>Brush tools have the same <strong>Brush</strong> settings, though they are not shared across the tools. That way, you can use a small Tweak brush with a large Relax brush if you prefer.</p>
<ul>
<li><strong>Radius</strong> controls the size of the brush and can be adjusted with the hotkey <code class="language-plaintext highlighter-rouge">F</code></li>
<li><strong>Strength</strong> controls how much the brush effects the geometry and can be adjusted with the hotkey <code class="language-plaintext highlighter-rouge">Shift F</code></li>
<li><strong>Falloff</strong> controls how much the strength of the brush is feathered near the edges and can be adjusted with the hotkey <code class="language-plaintext highlighter-rouge">Ctrl F</code></li>
</ul>
<h2 id="general-options">General Options</h2>
<p>The far right side of the tool settings in any Retopoflow tool is the General Options dropdown. In it, you can:</p>
<ul>
<li>Choose to exclude non-selectable objects from being a snapping source
<ul>
<li>This is the same as Blenders option of the same name in the Snapping settings</li>
</ul>
</li>
<li>Adjust the retopology overlays color and depth</li>
<li>Adjust how much non-active objects are faded</li>
<li>Choose to expand or collapse the Retopoflow tools in the toolbar</li>
<li>Choose to expand or collapse the masking options in the tool header for the brush tools</li>
</ul>
<h2 id="switching-tools">Switching Tools</h2>
<p>You can quickly switch between Retopoflow tools and access some of their common settings by using the Retopoflow pie menu. It is currently mapped to the hotkey <code class="language-plaintext highlighter-rouge">W</code> while a Retopoflow tool is active.</p>
</section>
<footer>
<p><small>Hosted on GitHub Pages. Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
</body>
</html>
@@ -0,0 +1,68 @@
# Retopoflow Mode
In previous versions, Retopoflow tools were only accessable in a special mode that was completely separated from the rest of Blender. Since Retopoflow 4, these tools have been integrated tightly into Edit Mode. However, switching to one of the Retopoflow tools does still enter you into a type of mode that is specifically set up for retopology.
Entering a Retopoflow tool will adjust Blender's settings for:
- The selection mode
- The retopology overlay
- Snapping
- Auto-merging vertices
Switching out of a Retopoflow tool will restore all of your previous settings.
## Terminology
| :--- | :--- | :--- |
| Source Object(s) | : | The original object(s) that you are re-creating. These meshes typically have a high polygon count with poor topology and edge flow (ex: result of Dyntopo in Sculpt Mode) |
| Retopology Object | : | The new object that stores the retopologized surface. This mesh typically has a low polygon count with good topology and edge flow. |
Any mesh object that is visible and not the active retopolgoy object is considered a source object.
This means that you can hide or move objects to different scenes to change which source objects will be retopologized.
You can also mark objects as non-selectable in the Outliner and in Retopoflow's Options menu (far right in the tool header) choose Exclude Non-Selectable to keep those objects visible but not acting as sources.
## Selection
Selection in Retopoflow tools follows Blender's selection paradigm as much as possible.
The main difference is when using the brush-based tools like Tweak and Relax. In those, selection cannot be done with `LMB` (left mouse button) because that action is already used to apply the brush. Instead, you can use other Blender hotkeys like `Shift LMB` to toggle select, `B` to box select, or `Ctrl RMB drag` to lasso select.
Also, since `Ctrl LMB` is already used for creating new geometry in the other tools, Blender's Pick Shortest Path operator is not accessable with that hotkey. However, you can still use `Shift Ctrl LMB` to the same effect.
The tools in Retopoflow can be used in any selection mode, but are generally more useful in some than others. For example, PolyPen expects to connect to edges and verts but not faces, so switching to PolyPen enables both edge and vert selection and disables face selection by default. All tools have a preferred selection mode that is set automatically when switching to the tool.
*Tip: In Blender, you can always enable multiple selection modes by holding* `Shift` *while choosing them.*
Blender's default shortcut for loop selection is `Alt Left Click` or `Double Click` depending on your preferences. In Retopoflow, you can always use both!
## Altered Operators
Retopoflow has slightly altered versions of a few Blender operators in order to make them more useful for retopology.
- **Translate** (`G`) has been modified slighly to improve snapping behavior, but you should not need to think about this and can use it just like Blender's Translate.
## Common Settings
All settings for the Retopoflow tools can be found in the 3D View tool header, the sidebar in the Tool tab, or the Tool tab of the Properties Editor when the tool is active in the 3D View toolbar.
The insert tools share the same **Tweak** settings for how big the selection hitbox is, whether vertices are auto-merged, and how big the auto-merge threshold is while using `LMB Drag` on geometry to tweak it. *These settings are not the same as the Tweak Brush tool settings.*
Brush tools have the same **Brush** settings, though they are not shared across the tools. That way, you can use a small Tweak brush with a large Relax brush if you prefer.
- **Radius** controls the size of the brush and can be adjusted with the hotkey `F`
- **Strength** controls how much the brush effects the geometry and can be adjusted with the hotkey `Shift F`
- **Falloff** controls how much the strength of the brush is feathered near the edges and can be adjusted with the hotkey `Ctrl F`
## General Options
The far right side of the tool settings in any Retopoflow tool is the General Options dropdown. In it, you can:
- Choose to exclude non-selectable objects from being a snapping source
- This is the same as Blender's option of the same name in the Snapping settings
- Adjust the retopology overlay's color and depth
- Adjust how much non-active objects are faded
- Choose to expand or collapse the Retopoflow tools in the toolbar
- Choose to expand or collapse the masking options in the tool header for the brush tools
## Switching Tools
You can quickly switch between Retopoflow tools and access some of their common settings by using the Retopoflow pie menu. It is currently mapped to the hotkey `W` while a Retopoflow tool is active.
@@ -0,0 +1,171 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Installation | Retopoflow</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="Installation" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A suite of retopology tools for Blender" />
<meta property="og:description" content="A suite of retopology tools for Blender" />
<link rel="canonical" href="http://localhost:4000/v4/installation.html" />
<meta property="og:url" content="http://localhost:4000/v4/installation.html" />
<meta property="og:site_name" content="Retopoflow" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Installation" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"A suite of retopology tools for Blender","headline":"Installation","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"http://localhost:4000/images/logos/v4.png"}},"url":"http://localhost:4000/v4/installation.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/css/style.css?v=fae29b0ecee4f94874e8b5996f55661955b83305">
<link rel="stylesheet" type="text/css" href="/assets/css/main.css">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<span id="logo" class="logo"><img src="/images/logos/v4.png" alt="Logo" /></span>
<h1 class="title" id="title"><a href="/index.html">Retopoflow</a></h1>
<p class="tagline">by <a class="outlink" href="https://orangeturbine.com/" target="_blank">Orange Turbine</a></p>
<select name="version" class="version" id="version_menu" title="version" onchange="switch_versions(event)">
<option value="v3">Version 3</option>
<option value="v4">Version 4</option>
</select>
<div id="navigation"></div>
</header>
<script>
let version = localStorage.getItem("version")
if (version == null) {version = 'v4';}
let path = `/assets/html/${version}.html`;
function switch_versions(event) {
let menu = event.target;
let result = menu.options[menu.selectedIndex].value;
version = result
localStorage.setItem("version", result);
if (result == 'v3') {
location.href = '/v3/index.html'
}
else if (result == 'v4') {
location.href = '/index.html'
}
}
fetch(path)
.then(response => response.text())
.then(data => {document.getElementById('navigation').innerHTML = data;})
.catch(error => console.error('Error loading HTML:', error));
if (location.href.includes('v3')) {
document.getElementById('version_menu').value = 'v3'
document.getElementById('title').innerHTML = `<a href="/v3/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v3.png" alt="Logo" class="logo" />`
localStorage.setItem("version", 'v3');
}
else {
document.getElementById('version_menu').value = 'v4'
document.getElementById('title').innerHTML = `<a href="/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v4.png" alt="Logo" class="logo" />`
}
</script>
<section>
<h1 id="installation">Installation</h1>
<h2 id="requirements">Requirements</h2>
<p>Below is a table showing which versions of Blender that you can use for each version of Retopoflow.</p>
<table>
<thead>
<tr>
<th style="text-align: left">Retopoflow</th>
<th style="text-align: left">Blender</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">4.0</td>
<td style="text-align: left">4.3 or later</td>
</tr>
<tr>
<td style="text-align: left">3.4</td>
<td style="text-align: left">3.6 or later</td>
</tr>
<tr>
<td style="text-align: left">3.3</td>
<td style="text-align: left">2.93 3.5</td>
</tr>
<tr>
<td style="text-align: left">3.2</td>
<td style="text-align: left">2.8 2.9</td>
</tr>
<tr>
<td style="text-align: left">2.0</td>
<td style="text-align: left">2.79 or before</td>
</tr>
</tbody>
</table>
<p>All versions of Retopoflow are compatible with Windows, Mac, and Linux.</p>
<h2 id="downloading">Downloading</h2>
<p>Future updates to Retopoflow are funded by Superhive (formerly Blender Market) purchases, and we provide priority support through the Superhive support inbox.
However, we also make Retopoflow accessible on Retopoflows <a href="https://github.com/CGCookie/retopoflow">GitHub page</a> for students, teachers, and those using Retopoflow for educational purposes.</p>
<p>You may download Retopoflow from your <a href="https://blendermarket.com/account/orders">account dashboard</a> on Superhive once you have already purchased it.</p>
<p>The code for Retopoflow is open source under the <a href="https://www.gnu.org/licenses/gpl-3.0.en.html">GPL 3.0</a> license.
The non-code assets in this repository are not open source.</p>
<h2 id="installing">Installing</h2>
<p>The easiest way to install Retopoflow is to do so directly within Blender.
You can do this by going to Edit &gt; Preferences &gt; Add-ons. Go to the dropdown arrow on the top right of the editor and choose Install From Disk.
This will open the File Browser in Blender, allowing to you navigate to and select the zip file you downloaded.
Press Install From Disk.</p>
<p><em>If your browser auto-extracted the downloaded zip file, then you will need to re-compress the <strong>retopoflow</strong> folder before installing, or use Save As to save the zip file without extracting the contents.</em></p>
<p>Once installed, Blender should automatically filter the list of add-ons to show only Retopoflow.
You can then enable the add-on by clicking the checkbox next to <code class="language-plaintext highlighter-rouge">Retopoflow 4</code>.</p>
<p>If you have any issues with installing, please try the following steps:</p>
<ol>
<li>Download the latest version of Retopoflow for your version of Blender (see requirements section above).</li>
<li>Open Blender</li>
<li>Head to Edit &gt; Preferences &gt; Add-ons and search for Retopoflow</li>
<li>Expand by clicking the triangle, and then press Uninstall</li>
<li>Close Blender to completely clear out the previous version</li>
<li>Open Blender and head to Preferences again</li>
<li>Go to the top right dropdown and click Install From Disk</li>
<li>Navigate to your Retopoflow zip file (again, do not unzip)</li>
<li>Click Install From Disk</li>
<li>Enable Retopoflow</li>
</ol>
<p>If youre still experiencing any issues with starting Retopoflow, please try going to File &gt; Defaults &gt; Restore Factory Defaults and then enabling Retopoflow. This will help us rule out conflicts with other add-ons and custom settings.</p>
</section>
<footer>
<p><small>Hosted on GitHub Pages. Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
</body>
</html>
@@ -0,0 +1,54 @@
# Installation
## Requirements
Below is a table showing which versions of Blender that you can use for each version of Retopoflow.
| Retopoflow | Blender |
| :---------- | :-------------- |
| 4.0 | 4.3 or later |
| 3.4 | 3.6 or later |
| 3.3 | 2.93 -- 3.5 |
| 3.2 | 2.8 -- 2.9 |
| 2.0 | 2.79 or before |
All versions of Retopoflow are compatible with Windows, Mac, and Linux.
## Downloading
Future updates to Retopoflow are funded by Superhive (formerly Blender Market) purchases, and we provide priority support through the Superhive support inbox.
However, we also make Retopoflow accessible on Retopoflow's [GitHub page](https://github.com/CGCookie/retopoflow) for students, teachers, and those using Retopoflow for educational purposes.
You may download Retopoflow from your [account dashboard](https://blendermarket.com/account/orders) on Superhive once you have already purchased it.
The code for Retopoflow is open source under the [GPL 3.0](https://www.gnu.org/licenses/gpl-3.0.en.html) license.
The non-code assets in this repository are not open source.
## Installing
The easiest way to install Retopoflow is to do so directly within Blender.
You can do this by going to Edit > Preferences > Add-ons. Go to the dropdown arrow on the top right of the editor and choose Install From Disk.
This will open the File Browser in Blender, allowing to you navigate to and select the zip file you downloaded.
Press Install From Disk.
_If your browser auto-extracted the downloaded zip file, then you will need to re-compress the **retopoflow** folder before installing, or use Save As to save the zip file without extracting the contents._
Once installed, Blender should automatically filter the list of add-ons to show only Retopoflow.
You can then enable the add-on by clicking the checkbox next to `Retopoflow 4`.
If you have any issues with installing, please try the following steps:
1. Download the latest version of Retopoflow for your version of Blender (see requirements section above).
2. Open Blender
3. Head to Edit > Preferences > Add-ons and search for Retopoflow
4. Expand by clicking the triangle, and then press Uninstall
5. Close Blender to completely clear out the previous version
6. Open Blender and head to Preferences again
7. Go to the top right dropdown and click Install From Disk
8. Navigate to your Retopoflow zip file (again, do not unzip)
9. Click Install From Disk
10. Enable Retopoflow
If you're still experiencing any issues with starting Retopoflow, please try going to File > Defaults > Restore Factory Defaults and then enabling Retopoflow. This will help us rule out conflicts with other add-ons and custom settings.
@@ -0,0 +1,111 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Mesh Cleanup | Retopoflow</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="Mesh Cleanup" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A suite of retopology tools for Blender" />
<meta property="og:description" content="A suite of retopology tools for Blender" />
<link rel="canonical" href="http://localhost:4000/v4/mesh_cleanup.html" />
<meta property="og:url" content="http://localhost:4000/v4/mesh_cleanup.html" />
<meta property="og:site_name" content="Retopoflow" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Mesh Cleanup" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"A suite of retopology tools for Blender","headline":"Mesh Cleanup","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"http://localhost:4000/images/logos/v4.png"}},"url":"http://localhost:4000/v4/mesh_cleanup.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/css/style.css?v=fae29b0ecee4f94874e8b5996f55661955b83305">
<link rel="stylesheet" type="text/css" href="/assets/css/main.css">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<span id="logo" class="logo"><img src="/images/logos/v4.png" alt="Logo" /></span>
<h1 class="title" id="title"><a href="/index.html">Retopoflow</a></h1>
<p class="tagline">by <a class="outlink" href="https://orangeturbine.com/" target="_blank">Orange Turbine</a></p>
<select name="version" class="version" id="version_menu" title="version" onchange="switch_versions(event)">
<option value="v3">Version 3</option>
<option value="v4">Version 4</option>
</select>
<div id="navigation"></div>
</header>
<script>
let version = localStorage.getItem("version")
if (version == null) {version = 'v4';}
let path = `/assets/html/${version}.html`;
function switch_versions(event) {
let menu = event.target;
let result = menu.options[menu.selectedIndex].value;
version = result
localStorage.setItem("version", result);
if (result == 'v3') {
location.href = '/v3/index.html'
}
else if (result == 'v4') {
location.href = '/index.html'
}
}
fetch(path)
.then(response => response.text())
.then(data => {document.getElementById('navigation').innerHTML = data;})
.catch(error => console.error('Error loading HTML:', error));
if (location.href.includes('v3')) {
document.getElementById('version_menu').value = 'v3'
document.getElementById('title').innerHTML = `<a href="/v3/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v3.png" alt="Logo" class="logo" />`
localStorage.setItem("version", 'v3');
}
else {
document.getElementById('version_menu').value = 'v4'
document.getElementById('title').innerHTML = `<a href="/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v4.png" alt="Logo" class="logo" />`
}
</script>
<section>
<h1 id="mesh-cleanup">Mesh Cleanup</h1>
<p>Some operations that you can do in Edit Mode do not automatically snap the resulting mesh to the surface like RetopoFlow does. Or, you may find while working that you have common mesh issues like doubles or flipped faces.</p>
<p>To fix all of the common retopology problems at once, you can use Retopoflows <strong>Clean Up</strong> operator. It can be found in the tool settings and in the pie menu (<code class="language-plaintext highlighter-rouge">W</code>) and be used on either all vertices or selected vertices only.</p>
<p>The clean up operator can optionally:</p>
<ul>
<li>Snap the mesh to the nearest source surface</li>
<li>Merge By Distance</li>
<li>Recalculate Normals</li>
<li>Flip Normals</li>
<li>Delete Loose Geometry</li>
<li>Fill Holes</li>
</ul>
<p>If you are working on a very dense mesh and do not need all of those operations, consider turning the unnecissary ones off to speed up the operation.</p>
</section>
<footer>
<p><small>Hosted on GitHub Pages. Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
</body>
</html>
@@ -0,0 +1,15 @@
# Mesh Cleanup
Some operations that you can do in Edit Mode do not automatically snap the resulting mesh to the surface like RetopoFlow does. Or, you may find while working that you have common mesh issues like doubles or flipped faces.
To fix all of the common retopology problems at once, you can use Retopoflow's **Clean Up** operator. It can be found in the tool settings and in the pie menu (`W`) and be used on either all vertices or selected vertices only.
The clean up operator can optionally:
- Snap the mesh to the nearest source surface
- Merge By Distance
- Recalculate Normals
- Flip Normals
- Delete Loose Geometry
- Fill Holes
If you are working on a very dense mesh and do not need all of those operations, consider turning the unnecissary ones off to speed up the operation.
@@ -0,0 +1,201 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Patches Help | Retopoflow</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="Patches Help" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A suite of retopology tools for Blender" />
<meta property="og:description" content="A suite of retopology tools for Blender" />
<link rel="canonical" href="http://localhost:4000/v4/patches.html" />
<meta property="og:url" content="http://localhost:4000/v4/patches.html" />
<meta property="og:site_name" content="Retopoflow" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Patches Help" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"A suite of retopology tools for Blender","headline":"Patches Help","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"http://localhost:4000/images/logos/v4.png"}},"url":"http://localhost:4000/v4/patches.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/css/style.css?v=fae29b0ecee4f94874e8b5996f55661955b83305">
<link rel="stylesheet" type="text/css" href="/assets/css/main.css">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<span id="logo" class="logo"><img src="/images/logos/v4.png" alt="Logo" /></span>
<h1 class="title" id="title"><a href="/index.html">Retopoflow</a></h1>
<p class="tagline">by <a class="outlink" href="https://orangeturbine.com/" target="_blank">Orange Turbine</a></p>
<select name="version" class="version" id="version_menu" title="version" onchange="switch_versions(event)">
<option value="v3">Version 3</option>
<option value="v4">Version 4</option>
</select>
<div id="navigation"></div>
</header>
<script>
let version = localStorage.getItem("version")
if (version == null) {version = 'v4';}
let path = `/assets/html/${version}.html`;
function switch_versions(event) {
let menu = event.target;
let result = menu.options[menu.selectedIndex].value;
version = result
localStorage.setItem("version", result);
if (result == 'v3') {
location.href = '/v3/index.html'
}
else if (result == 'v4') {
location.href = '/index.html'
}
}
fetch(path)
.then(response => response.text())
.then(data => {document.getElementById('navigation').innerHTML = data;})
.catch(error => console.error('Error loading HTML:', error));
if (location.href.includes('v3')) {
document.getElementById('version_menu').value = 'v3'
document.getElementById('title').innerHTML = `<a href="/v3/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v3.png" alt="Logo" class="logo" />`
localStorage.setItem("version", 'v3');
}
else {
document.getElementById('version_menu').value = 'v4'
document.getElementById('title').innerHTML = `<a href="/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v4.png" alt="Logo" class="logo" />`
}
</script>
<section>
<h1 id="-patches-help"><img src="images/patches-icon.png" alt="" /> Patches Help</h1>
<p>Shortcut: <code>4</code>, <code>Ctrl+Alt+F</code></p>
<p>The Patches tool helps fill in holes in your topology.
Select the strip of boundary edges that you wish to fill.</p>
<p><img src="images/help_patches.png" alt="" /></p>
<h2 id="creating">Creating</h2>
<table>
<tbody>
<tr>
<td><code>Ctrl+Shift+LMB</code></td>
<td>:</td>
<td>toggle vertex as a corner</td>
</tr>
<tr>
<td><code>Enter</code>, <code>F</code>, <code>NumEnter</code></td>
<td>:</td>
<td>create visualized patch</td>
</tr>
<tr>
<td><code>+</code>, <code>=</code>, <code>Shift+ArrowUp</code>, <code>Shift+WheelUp</code></td>
<td>:</td>
<td>increase segment count when bridging</td>
</tr>
<tr>
<td><code>-</code>, <code>Shift+ArrowDown</code>, <code>Shift+WheelDown</code></td>
<td>:</td>
<td>decrease segment count when bridging</td>
</tr>
</tbody>
</table>
<h2 id="selecting">Selecting</h2>
<table>
<tbody>
<tr>
<td><code>LMB+Click</code>, <code>Shift+LMB+Click</code></td>
<td>:</td>
<td>select edge</td>
</tr>
<tr>
<td><code>LMB+Double</code>, <code>Shift+LMB+Double</code></td>
<td>:</td>
<td>smart select boundary edges</td>
</tr>
<tr>
<td><code>LMB+Drag</code>, <code>Shift+LMB+Drag</code></td>
<td>:</td>
<td>paint edge selection</td>
</tr>
<tr>
<td><code>Ctrl+Shift+LMB+Click</code></td>
<td>:</td>
<td>select edges along shortest path</td>
</tr>
<tr>
<td><code>A</code></td>
<td>:</td>
<td>select / deselect all</td>
</tr>
<tr>
<td><code>Alt+A</code></td>
<td>:</td>
<td>deselect all</td>
</tr>
</tbody>
</table>
<h2 id="transforming">Transforming</h2>
<table>
<tbody>
<tr>
<td><code>LMB+Drag</code></td>
<td>:</td>
<td>grab and move selected geometry under mouse</td>
</tr>
<tr>
<td><code>G</code></td>
<td>:</td>
<td>grab and move selected geometry</td>
</tr>
</tbody>
</table>
<h2 id="notes">Notes</h2>
<p>The Patches tool currently only handles a limited number of selected regions.
More support coming soon!</p>
<ul>
<li>2 connected strips in an L-shape</li>
<li>2 parallel strips: the two strips must contain the same number of edges</li>
<li>3 connected strips in a C-shape: first and last strips must contain the same number of edges</li>
<li>4 strips in a rectangular loop: opposite strips must contain the same number of edges</li>
</ul>
<p>If no pre-visualized regions show after selection, no geometry will be created after pressing <code>Enter</code>, <code>F</code>, <code>NumEnter</code>.</p>
<p>Adjust the Angle parameter to help Patches determine which connected edges should be in the same strip.
Alternatively, you can manually toggle vertex corners using <code>Shift+LMB</code>.</p>
</section>
<footer>
<p><small>Hosted on GitHub Pages. Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
</body>
</html>
@@ -0,0 +1,56 @@
# ![](images/patches-icon.png) Patches Help
Shortcut: {{ site.data.keymaps.patches_tool }}
The Patches tool helps fill in holes in your topology.
Select the strip of boundary edges that you wish to fill.
![](images/help_patches.png)
## Creating
| :--- | :--- | :--- |
| {{ site.data.keymaps.action_alt1 }} | : | toggle vertex as a corner |
| {{ site.data.keymaps.fill }} | : | create visualized patch |
| {{ site.data.keymaps.increase_count }} | : | increase segment count when bridging |
| {{ site.data.keymaps.decrease_count }} | : | decrease segment count when bridging |
## Selecting
| :--- | :--- | :--- |
| {{ site.data.keymaps.select_single }}, {{ site.data.keymaps.select_single_add }} | : | select edge |
| {{ site.data.keymaps.select_smart }}, {{ site.data.keymaps.select_smart_add }} | : | smart select boundary edges |
| {{ site.data.keymaps.select_paint }}, {{ site.data.keymaps.select_paint_add }} | : | paint edge selection |
| {{ site.data.keymaps.select_path_add }} | : | select edges along shortest path |
| {{ site.data.keymaps.select_all }} | : | select / deselect all |
| {{ site.data.keymaps.deselect_all }} | : | deselect all |
## Transforming
| :--- | :--- | :--- |
| {{ site.data.keymaps.action }} | : | grab and move selected geometry under mouse |
| {{ site.data.keymaps.grab }} | : | grab and move selected geometry |
## Notes
The Patches tool currently only handles a limited number of selected regions.
More support coming soon!
- 2 connected strips in an L-shape
- 2 parallel strips: the two strips must contain the same number of edges
- 3 connected strips in a C-shape: first and last strips must contain the same number of edges
- 4 strips in a rectangular loop: opposite strips must contain the same number of edges
If no pre-visualized regions show after selection, no geometry will be created after pressing {{ site.data.keymaps.fill }}.
Adjust the Angle parameter to help Patches determine which connected edges should be in the same strip.
Alternatively, you can manually toggle vertex corners using {{ site.data.keymaps.action_alt0 }}.
@@ -0,0 +1,135 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>PolyPen | Retopoflow</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="PolyPen" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A suite of retopology tools for Blender" />
<meta property="og:description" content="A suite of retopology tools for Blender" />
<link rel="canonical" href="http://localhost:4000/v4/polypen.html" />
<meta property="og:url" content="http://localhost:4000/v4/polypen.html" />
<meta property="og:site_name" content="Retopoflow" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="PolyPen" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"A suite of retopology tools for Blender","headline":"PolyPen","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"http://localhost:4000/images/logos/v4.png"}},"url":"http://localhost:4000/v4/polypen.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/css/style.css?v=fae29b0ecee4f94874e8b5996f55661955b83305">
<link rel="stylesheet" type="text/css" href="/assets/css/main.css">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<span id="logo" class="logo"><img src="/images/logos/v4.png" alt="Logo" /></span>
<h1 class="title" id="title"><a href="/index.html">Retopoflow</a></h1>
<p class="tagline">by <a class="outlink" href="https://orangeturbine.com/" target="_blank">Orange Turbine</a></p>
<select name="version" class="version" id="version_menu" title="version" onchange="switch_versions(event)">
<option value="v3">Version 3</option>
<option value="v4">Version 4</option>
</select>
<div id="navigation"></div>
</header>
<script>
let version = localStorage.getItem("version")
if (version == null) {version = 'v4';}
let path = `/assets/html/${version}.html`;
function switch_versions(event) {
let menu = event.target;
let result = menu.options[menu.selectedIndex].value;
version = result
localStorage.setItem("version", result);
if (result == 'v3') {
location.href = '/v3/index.html'
}
else if (result == 'v4') {
location.href = '/index.html'
}
}
fetch(path)
.then(response => response.text())
.then(data => {document.getElementById('navigation').innerHTML = data;})
.catch(error => console.error('Error loading HTML:', error));
if (location.href.includes('v3')) {
document.getElementById('version_menu').value = 'v3'
document.getElementById('title').innerHTML = `<a href="/v3/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v3.png" alt="Logo" class="logo" />`
localStorage.setItem("version", 'v3');
}
else {
document.getElementById('version_menu').value = 'v4'
document.getElementById('title').innerHTML = `<a href="/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v4.png" alt="Logo" class="logo" />`
}
</script>
<section>
<h1 id="-polypen"><img src="/images/icons/polypen-icon.png" alt="" /> PolyPen</h1>
<p><img src="/v4/images/polypen.jpg" alt="" /></p>
<p>The PolyPen tool provides absolute control for creating complex topology on a vertex-by-vertex basis (e.g., low-poly game models).
This tool lets you insert vertices, extrude edges, fill faces, and transform the subsequent geometry all within one tool and in just a few clicks.</p>
<h2 id="inserting">Inserting</h2>
<!--
| :--- | :--- | :--- |
| <code>Ctrl+LMB</code>, <code>Ctrl+LMB+Double</code> | : | insert geometry connected to selected geometry |
-->
<p>To create a new vertex using PolyPen, make sure no other retopology geometry is selected and hold <code class="language-plaintext highlighter-rouge">Ctrl</code> and <code class="language-plaintext highlighter-rouge">LMB</code> (Left Mouse Click) on the surface of the source geometry.</p>
<p>To follow this guide, keep the <strong>Insert Method</strong> set to <strong>Tri / Quad</strong> for now.</p>
<p>To create an edge, keep just that new vertex selected and <code class="language-plaintext highlighter-rouge">Ctrl LMB</code> on another part of the surface.</p>
<p>To create a triangle, keep that edge selected or select any other edge and <code class="language-plaintext highlighter-rouge">Ctrl LMB</code> again.</p>
<p>To turn a triangle into a quad, select it and <code class="language-plaintext highlighter-rouge">Ctrl LMB</code> one more time to define the fourth corner.</p>
<p>With the <strong>Tri / Quad</strong> method, you can quickly and explicitly define all four corners of a quad and it is the most precise way to work.</p>
<p>However, sometimes youll want to quickly insert quads in one click. For that, switch the <strong>Insert Method</strong> over to <strong>Quad</strong>. You could also choose <strong>Triangle</strong> to not automatically convert triangles into quads, <strong>Edge</strong> to not create any faces, or <strong>Vertex</strong> to only create vertices that are not connected to anything.</p>
<p>PolyPen can also be used to fill a quad between two edges. To fill in <strong>Tri / Quad</strong> or <strong>Quad</strong> mode, just select one edge, hold <code class="language-plaintext highlighter-rouge">Ctrl</code> and <code class="language-plaintext highlighter-rouge">LMB</code> on the second edge. Done! Keep in mind that you can also use Blenders <code class="language-plaintext highlighter-rouge">F</code> hotkey with any vert or face selected to create a new face with the next closest two vertices.</p>
<h2 id="cutting">Cutting</h2>
<p>PolyPen can also be used as a simple knife. To make a cut, hold <code class="language-plaintext highlighter-rouge">Ctrl</code> and either hover over a selected edge if there is a selection, or any edge if there is no selection. <code class="language-plaintext highlighter-rouge">LMB</code> on the edge and then <code class="language-plaintext highlighter-rouge">LMB</code> on any edge that is connected to the same face.</p>
<p>PolyPens knife cannot currently cut through multiple edges at the same time, cannot cut in the middle of a face, and does not have alignment guides like Blenders knife. We plan to improve the knife functionalty going forward but in the meantime, for more advanced features, it is recommended to use Blenders knife with the hotkey <code class="language-plaintext highlighter-rouge">K</code> and then use Retopoflows <a href="mesh_cleanup.html">Mesh Cleanup operator</a> on the result to snap the new vertices to the surface of the source object.</p>
<h2 id="selecting">Selecting</h2>
<p>The default selection mode for PolyPen is Vertex + Edge so that you can quickly tweak both vertices and edges. However, you can work in just Vertex mode if you find yourself accidentally selecting edges.</p>
<h2 id="transforming">Transforming</h2>
<p>A <code class="language-plaintext highlighter-rouge">LMB Drag</code> on components in PolyPen will perform a tweak action similar to Blenders Tweak tool. The tweaking settings are shared across multiple tools and can be read about on the <a href="general.html">Retopoflow Mode</a> docs page under Common Settings.</p>
</section>
<footer>
<p><small>Hosted on GitHub Pages. Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
</body>
</html>
@@ -0,0 +1,43 @@
# ![](/images/icons/polypen-icon.png) PolyPen
![](images/polypen.jpg)
The PolyPen tool provides absolute control for creating complex topology on a vertex-by-vertex basis (e.g., low-poly game models).
This tool lets you insert vertices, extrude edges, fill faces, and transform the subsequent geometry all within one tool and in just a few clicks.
## Inserting
<!--
| :--- | :--- | :--- |
| {{ site.data.keymaps.insert }} | : | insert geometry connected to selected geometry |
-->
To create a new vertex using PolyPen, make sure no other retopology geometry is selected and hold `Ctrl` and `LMB` (Left Mouse Click) on the surface of the source geometry.
To follow this guide, keep the **Insert Method** set to **Tri / Quad** for now.
To create an edge, keep just that new vertex selected and `Ctrl LMB` on another part of the surface.
To create a triangle, keep that edge selected or select any other edge and `Ctrl LMB` again.
To turn a triangle into a quad, select it and `Ctrl LMB` one more time to define the fourth corner.
With the **Tri / Quad** method, you can quickly and explicitly define all four corners of a quad and it is the most precise way to work.
However, sometimes you'll want to quickly insert quads in one click. For that, switch the **Insert Method** over to **Quad**. You could also choose **Triangle** to not automatically convert triangles into quads, **Edge** to not create any faces, or **Vertex** to only create vertices that are not connected to anything.
PolyPen can also be used to fill a quad between two edges. To fill in **Tri / Quad** or **Quad** mode, just select one edge, hold `Ctrl` and `LMB` on the second edge. Done! Keep in mind that you can also use Blender's `F` hotkey with any vert or face selected to create a new face with the next closest two vertices.
## Cutting
PolyPen can also be used as a simple knife. To make a cut, hold `Ctrl` and either hover over a selected edge if there is a selection, or any edge if there is no selection. `LMB` on the edge and then `LMB` on any edge that is connected to the same face.
PolyPen's knife cannot currently cut through multiple edges at the same time, cannot cut in the middle of a face, and does not have alignment guides like Blender's knife. We plan to improve the knife functionalty going forward but in the meantime, for more advanced features, it is recommended to use Blender's knife with the hotkey `K` and then use Retopoflow's [Mesh Cleanup operator](mesh_cleanup.html) on the result to snap the new vertices to the surface of the source object.
## Selecting
The default selection mode for PolyPen is Vertex + Edge so that you can quickly tweak both vertices and edges. However, you can work in just Vertex mode if you find yourself accidentally selecting edges.
## Transforming
A `LMB Drag` on components in PolyPen will perform a tweak action similar to Blender's Tweak tool. The tweaking settings are shared across multiple tools and can be read about on the [Retopoflow Mode](general.html) docs page under Common Settings.
@@ -0,0 +1,134 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>PolyStrips | Retopoflow</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="PolyStrips" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A suite of retopology tools for Blender" />
<meta property="og:description" content="A suite of retopology tools for Blender" />
<link rel="canonical" href="http://localhost:4000/v4/polystrips.html" />
<meta property="og:url" content="http://localhost:4000/v4/polystrips.html" />
<meta property="og:site_name" content="Retopoflow" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="PolyStrips" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"A suite of retopology tools for Blender","headline":"PolyStrips","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"http://localhost:4000/images/logos/v4.png"}},"url":"http://localhost:4000/v4/polystrips.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/css/style.css?v=fae29b0ecee4f94874e8b5996f55661955b83305">
<link rel="stylesheet" type="text/css" href="/assets/css/main.css">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<span id="logo" class="logo"><img src="/images/logos/v4.png" alt="Logo" /></span>
<h1 class="title" id="title"><a href="/index.html">Retopoflow</a></h1>
<p class="tagline">by <a class="outlink" href="https://orangeturbine.com/" target="_blank">Orange Turbine</a></p>
<select name="version" class="version" id="version_menu" title="version" onchange="switch_versions(event)">
<option value="v3">Version 3</option>
<option value="v4">Version 4</option>
</select>
<div id="navigation"></div>
</header>
<script>
let version = localStorage.getItem("version")
if (version == null) {version = 'v4';}
let path = `/assets/html/${version}.html`;
function switch_versions(event) {
let menu = event.target;
let result = menu.options[menu.selectedIndex].value;
version = result
localStorage.setItem("version", result);
if (result == 'v3') {
location.href = '/v3/index.html'
}
else if (result == 'v4') {
location.href = '/index.html'
}
}
fetch(path)
.then(response => response.text())
.then(data => {document.getElementById('navigation').innerHTML = data;})
.catch(error => console.error('Error loading HTML:', error));
if (location.href.includes('v3')) {
document.getElementById('version_menu').value = 'v3'
document.getElementById('title').innerHTML = `<a href="/v3/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v3.png" alt="Logo" class="logo" />`
localStorage.setItem("version", 'v3');
}
else {
document.getElementById('version_menu').value = 'v4'
document.getElementById('title').innerHTML = `<a href="/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v4.png" alt="Logo" class="logo" />`
}
</script>
<section>
<h1 id="-polystrips"><img src="/images/icons/polystrips-icon.png" alt="" /> PolyStrips</h1>
<p><img src="/v4/images/polystrips.jpg" alt="" /></p>
<p>The PolyStrips tool provides quick and easy ways to map out key face loops for complex models, as well as adjust existing strips of faces.</p>
<h2 id="inserting">Inserting</h2>
<p>To create a strip of quads with PolyStrips, hold down <code class="language-plaintext highlighter-rouge">Ctrl</code> and <code class="language-plaintext highlighter-rouge">LMB Drag</code> on the surface of a source object.</p>
<p>The size of the quads corresponds to the size of the brush that you see when you hold down <code class="language-plaintext highlighter-rouge">Ctrl</code>. To adjust the size, use the hotkey <code class="language-plaintext highlighter-rouge">F</code>.</p>
<p>Right after youve drawn a strip, youll be able to adjust some of its properties.</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">Ctrl Scroll</code> changes the segment count</li>
<li><code class="language-plaintext highlighter-rouge">Shift Scroll</code> changes the width</li>
</ul>
<p>These options are also available in Blenders Adjust Last Operation panel, along with a <strong>Split Angle</strong> property that adjusts how sharp the curve needs to be in order to be considered a corner.</p>
<h2 id="control-points">Control Points</h2>
<p>Any selected strip of quads will show control points and curve handles while youre using PolyStrips. Simply <code class="language-plaintext highlighter-rouge">LMB Drag</code> on the control points or handles to adjust the strip like a Bezier curve.</p>
<p>PolyStrips handles work great with Blenders proportional editing. If you enable that (hotkey <code class="language-plaintext highlighter-rouge">O</code>), you can easily adjust sections of existing loops that are already surrounded by geometry.</p>
<h2 id="selecting">Selecting</h2>
<p>The default selection mode for PolyStrips is Face so that you can quickly select and tweak parts of strips. However, you can work in just Vertex and / or Edge select mode just as well if you prefer.</p>
<p>Its helpful to remember that even though <code class="language-plaintext highlighter-rouge">Ctrl LMB</code> to select shortest path is blocked because <code class="language-plaintext highlighter-rouge">Ctrl</code> is used to create strips, you can always do the same thing with <code class="language-plaintext highlighter-rouge">Ctrl Shift LMB</code>. So to easily select a part of a strip, <code class="language-plaintext highlighter-rouge">LMB</code> to select one face and then <code class="language-plaintext highlighter-rouge">Ctrl Shift LMB</code> on another.</p>
<h2 id="transforming">Transforming</h2>
<p>A <code class="language-plaintext highlighter-rouge">LMB Drag</code> on components in PolyPen will perform a tweak action similar to Blenders Tweak tool. The tweaking settings are shared across multiple tools and can be read about on the <a href="general.html">Retopoflow Mode</a> docs page under Common Settings.</p>
<h2 id="limitations">Limitations</h2>
<p>It is not currently possible to adjust segment counts or other properties on existing strips, but that is on our to-do list.</p>
</section>
<footer>
<p><small>Hosted on GitHub Pages. Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
</body>
</html>
@@ -0,0 +1,39 @@
# ![](/images/icons/polystrips-icon.png) PolyStrips
![](images/polystrips.jpg)
The PolyStrips tool provides quick and easy ways to map out key face loops for complex models, as well as adjust existing strips of faces.
## Inserting
To create a strip of quads with PolyStrips, hold down `Ctrl` and `LMB Drag` on the surface of a source object.
The size of the quads corresponds to the size of the brush that you see when you hold down `Ctrl`. To adjust the size, use the hotkey `F`.
Right after you've drawn a strip, you'll be able to adjust some of its properties.
- `Ctrl Scroll` changes the segment count
- `Shift Scroll` changes the width
These options are also available in Blender's Adjust Last Operation panel, along with a **Split Angle** property that adjusts how sharp the curve needs to be in order to be considered a corner.
## Control Points
Any selected strip of quads will show control points and curve handles while you're using PolyStrips. Simply `LMB Drag` on the control points or handles to adjust the strip like a Bezier curve.
PolyStrips handles work great with Blender's proportional editing. If you enable that (hotkey `O`), you can easily adjust sections of existing loops that are already surrounded by geometry.
## Selecting
The default selection mode for PolyStrips is Face so that you can quickly select and tweak parts of strips. However, you can work in just Vertex and / or Edge select mode just as well if you prefer.
It's helpful to remember that even though `Ctrl LMB` to select shortest path is blocked because `Ctrl` is used to create strips, you can always do the same thing with `Ctrl Shift LMB`. So to easily select a part of a strip, `LMB` to select one face and then `Ctrl Shift LMB` on another.
## Transforming
A `LMB Drag` on components in PolyPen will perform a tweak action similar to Blender's Tweak tool. The tweaking settings are shared across multiple tools and can be read about on the [Retopoflow Mode](general.html) docs page under Common Settings.
## Limitations
It is not currently possible to adjust segment counts or other properties on existing strips, but that is on our to-do list.
@@ -0,0 +1,120 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Quick Start Guide | Retopoflow</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="Quick Start Guide" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A suite of retopology tools for Blender" />
<meta property="og:description" content="A suite of retopology tools for Blender" />
<link rel="canonical" href="http://localhost:4000/v4/quick_start.html" />
<meta property="og:url" content="http://localhost:4000/v4/quick_start.html" />
<meta property="og:site_name" content="Retopoflow" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Quick Start Guide" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"A suite of retopology tools for Blender","headline":"Quick Start Guide","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"http://localhost:4000/images/logos/v4.png"}},"url":"http://localhost:4000/v4/quick_start.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/css/style.css?v=fae29b0ecee4f94874e8b5996f55661955b83305">
<link rel="stylesheet" type="text/css" href="/assets/css/main.css">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<span id="logo" class="logo"><img src="/images/logos/v4.png" alt="Logo" /></span>
<h1 class="title" id="title"><a href="/index.html">Retopoflow</a></h1>
<p class="tagline">by <a class="outlink" href="https://orangeturbine.com/" target="_blank">Orange Turbine</a></p>
<select name="version" class="version" id="version_menu" title="version" onchange="switch_versions(event)">
<option value="v3">Version 3</option>
<option value="v4">Version 4</option>
</select>
<div id="navigation"></div>
</header>
<script>
let version = localStorage.getItem("version")
if (version == null) {version = 'v4';}
let path = `/assets/html/${version}.html`;
function switch_versions(event) {
let menu = event.target;
let result = menu.options[menu.selectedIndex].value;
version = result
localStorage.setItem("version", result);
if (result == 'v3') {
location.href = '/v3/index.html'
}
else if (result == 'v4') {
location.href = '/index.html'
}
}
fetch(path)
.then(response => response.text())
.then(data => {document.getElementById('navigation').innerHTML = data;})
.catch(error => console.error('Error loading HTML:', error));
if (location.href.includes('v3')) {
document.getElementById('version_menu').value = 'v3'
document.getElementById('title').innerHTML = `<a href="/v3/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v3.png" alt="Logo" class="logo" />`
localStorage.setItem("version", 'v3');
}
else {
document.getElementById('version_menu').value = 'v4'
document.getElementById('title').innerHTML = `<a href="/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v4.png" alt="Logo" class="logo" />`
}
</script>
<section>
<h1 id="quick-start-guide">Quick Start Guide</h1>
<p>This guide will help you get started with RetopoFlow 4.0.0α.</p>
<h2 id="the-short-short-version">The Short, Short Version</h2>
<p>To start retopologizing in Blender after installing Retopoflow:</p>
<ol>
<li>Have an object you want to draw new topology on top of</li>
<li>Go to Add &gt; Mesh in Object mode</li>
<li>
<p>Either click “Retopology at Cursor” or “Retopology at Active”</p>
<ul>
<li>“at Cursor” will create a new retopology object located at the 3D Cursor and oriented to the world.</li>
<li>“at Active” will create a new retopology object located at and oriented to the active object.</li>
</ul>
</li>
</ol>
<p>All of the Retopoflow tools require some other object in the scene that the new geometry can snap to. You can also create a new retopology object yourself or select an existing retopology object, enter Edit Mode on it, and switch to any of the RetopoFlow tools in the toolbar.</p>
<p>Enjoy!</p>
<p><em>For a more in-depth explanation of how Retopoflow works, read the <a href="/v4/general.html">Retopoflow Mode</a> page.</em></p>
</section>
<footer>
<p><small>Hosted on GitHub Pages. Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
</body>
</html>
@@ -0,0 +1,21 @@
# Quick Start Guide
This guide will help you get started with RetopoFlow {{ site.data.options.rf_version }}.
## The Short, Short Version
To start retopologizing in Blender after installing Retopoflow:
1. Have an object you want to draw new topology on top of
2. Go to Add > Mesh in Object mode
3. Either click "Retopology at Cursor" or "Retopology at Active"
- "at Cursor" will create a new retopology object located at the 3D Cursor and oriented to the world.
- "at Active" will create a new retopology object located at and oriented to the active object.
All of the Retopoflow tools require some other object in the scene that the new geometry can snap to. You can also create a new retopology object yourself or select an existing retopology object, enter Edit Mode on it, and switch to any of the RetopoFlow tools in the toolbar.
Enjoy!
*For a more in-depth explanation of how Retopoflow works, read the [Retopoflow Mode](/v4/general.html) page.*
@@ -0,0 +1,173 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Relax Brush | Retopoflow</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="Relax Brush" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A suite of retopology tools for Blender" />
<meta property="og:description" content="A suite of retopology tools for Blender" />
<link rel="canonical" href="http://localhost:4000/v4/relax.html" />
<meta property="og:url" content="http://localhost:4000/v4/relax.html" />
<meta property="og:site_name" content="Retopoflow" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Relax Brush" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"A suite of retopology tools for Blender","headline":"Relax Brush","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"http://localhost:4000/images/logos/v4.png"}},"url":"http://localhost:4000/v4/relax.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/css/style.css?v=fae29b0ecee4f94874e8b5996f55661955b83305">
<link rel="stylesheet" type="text/css" href="/assets/css/main.css">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<span id="logo" class="logo"><img src="/images/logos/v4.png" alt="Logo" /></span>
<h1 class="title" id="title"><a href="/index.html">Retopoflow</a></h1>
<p class="tagline">by <a class="outlink" href="https://orangeturbine.com/" target="_blank">Orange Turbine</a></p>
<select name="version" class="version" id="version_menu" title="version" onchange="switch_versions(event)">
<option value="v3">Version 3</option>
<option value="v4">Version 4</option>
</select>
<div id="navigation"></div>
</header>
<script>
let version = localStorage.getItem("version")
if (version == null) {version = 'v4';}
let path = `/assets/html/${version}.html`;
function switch_versions(event) {
let menu = event.target;
let result = menu.options[menu.selectedIndex].value;
version = result
localStorage.setItem("version", result);
if (result == 'v3') {
location.href = '/v3/index.html'
}
else if (result == 'v4') {
location.href = '/index.html'
}
}
fetch(path)
.then(response => response.text())
.then(data => {document.getElementById('navigation').innerHTML = data;})
.catch(error => console.error('Error loading HTML:', error));
if (location.href.includes('v3')) {
document.getElementById('version_menu').value = 'v3'
document.getElementById('title').innerHTML = `<a href="/v3/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v3.png" alt="Logo" class="logo" />`
localStorage.setItem("version", 'v3');
}
else {
document.getElementById('version_menu').value = 'v4'
document.getElementById('title').innerHTML = `<a href="/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v4.png" alt="Logo" class="logo" />`
}
</script>
<section>
<h1 id="-relax-brush"><img src="/images/icons/relax-icon.png" alt="" /> Relax Brush</h1>
<p><img src="/v4/images/relax.jpg" alt="" /></p>
<!--
Quick Shortcut: <code>Z</code>
-->
<p>The Relax Brush tool allows you to easily and interactively smooth out vertex positions while keeping them on the surface of the source mesh.</p>
<h2 id="transforming">Transforming</h2>
<p>To use the Relax Brush, simply <code class="language-plaintext highlighter-rouge">LMB Drag</code> on vertices. Which vertices are affected can be controlled in the <strong>Masking</strong> settings.</p>
<h2 id="brush-settings">Brush Settings</h2>
<ul>
<li><strong>Radius</strong> controls the size of the brush and can be adjusted with the hotkey <code class="language-plaintext highlighter-rouge">F</code></li>
<li><strong>Strength</strong> controls how much the brush effects the geometry and can be adjusted with the hotkey <code class="language-plaintext highlighter-rouge">Shift F</code></li>
<li><strong>Falloff</strong> controls how much the strength of the brush is feathered near the edges and can be adjusted with the hotkey <code class="language-plaintext highlighter-rouge">Ctrl F</code></li>
</ul>
<!--
These options can also be stored as presets in the Brush Options panel.
To quickly switch between presets, use the <code>Shift+Q</code>, <code>~</code> pie menu.
-->
<h2 id="masking-settings">Masking Settings</h2>
<p>The Relax Brush has several options to control which vertices are moved and how.</p>
<p><strong>Boundary</strong></p>
<ul>
<li><strong>Exclude</strong> does not affect vertices along the mesh boundary.</li>
<li><strong>Slide</strong> moves vertices along boundary but only by sliding them along the boundary loop.</li>
<li><strong>Include</strong> moves all vertices under the brush including those along the boundary.</li>
</ul>
<!--
### Symmetry
- **Exclude**: Do not affect vertices along the symmetry plane.
- **Slide**: Tweak vertices along boundary but only by sliding them along the symmetry plane.
- **Include**: Tweak all vertices under the brush including those along the symmetry plane.
-->
<p><strong>Selected</strong></p>
<ul>
<li><strong>Exclude</strong> moves only unselected vertices.</li>
<li><strong>Only</strong> moves only selected vertices.</li>
<li><strong>All</strong> moves all vertices within brush regardless of selection.</li>
</ul>
<p><strong>Occluded</strong></p>
<ul>
<li><strong>Exclude</strong> moves only unoccluded vertices.</li>
<li><strong>Include</strong> moves all vertices within brush regardless of occlusion.</li>
</ul>
<h2 id="algorithm-settings">Algorithm Settings</h2>
<p><strong>Iterations</strong> determines how many times the relax algorithm is run per update. A higher value leads to more agressive smoothing. It is recommended to try increasing the brush strength before increasing this setting.</p>
<p><strong>Strength</strong> multiplies how much each iteration affects the result.</p>
<p><strong>Average Edge Lengths</strong> enables adjusting the length of edges to move towards the average edge length under the brush.</p>
<p><strong>Average Face Radius</strong> enables adjusting the length of edges so that each faces radius moves towards the average of all face radii under the brush.</p>
<p><strong>Average Face Angles</strong> enables moving vertices so that the angle of each corner of each face moves towards the same value.</p>
<p><strong>Average Face Lengths</strong> enables adjusting the length of edges to move towards the average length of all edges that share the same face. This option is still experimental and can cause faces to flip.</p>
<p><strong>Straighten Edges</strong> enables moving vertices so that their edge loops straighten out.</p>
<p><strong>Correct Flipped Faces</strong> attempts to make sure the direction of the face normals under the brush are consistent.</p>
<h2 id="selection">Selection</h2>
<p>Even though <code class="language-plaintext highlighter-rouge">LMB</code> to select is not available while using the Tweak Brush, you can still select and deselect by using <code class="language-plaintext highlighter-rouge">Shift LMB</code>. Box Select <code class="language-plaintext highlighter-rouge">B</code> and Lasso Select <code class="language-plaintext highlighter-rouge">Ctrl Right Mouse Drag</code> are always available as well.</p>
</section>
<footer>
<p><small>Hosted on GitHub Pages. Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
</body>
</html>
@@ -0,0 +1,73 @@
# ![](/images/icons/relax-icon.png) Relax Brush
![](images/relax.jpg)
<!--
Quick Shortcut: {{ site.data.keymaps.relax_quick }}
-->
The Relax Brush tool allows you to easily and interactively smooth out vertex positions while keeping them on the surface of the source mesh.
## Transforming
To use the Relax Brush, simply `LMB Drag` on vertices. Which vertices are affected can be controlled in the **Masking** settings.
## Brush Settings
- **Radius** controls the size of the brush and can be adjusted with the hotkey `F`
- **Strength** controls how much the brush effects the geometry and can be adjusted with the hotkey `Shift F`
- **Falloff** controls how much the strength of the brush is feathered near the edges and can be adjusted with the hotkey `Ctrl F`
<!--
These options can also be stored as presets in the Brush Options panel.
To quickly switch between presets, use the {{ site.data.keymaps.pie_menu_alt0 }} pie menu.
-->
## Masking Settings
The Relax Brush has several options to control which vertices are moved and how.
**Boundary**
- **Exclude** does not affect vertices along the mesh boundary.
- **Slide** moves vertices along boundary but only by sliding them along the boundary loop.
- **Include** moves all vertices under the brush including those along the boundary.
<!--
### Symmetry
- **Exclude**: Do not affect vertices along the symmetry plane.
- **Slide**: Tweak vertices along boundary but only by sliding them along the symmetry plane.
- **Include**: Tweak all vertices under the brush including those along the symmetry plane.
-->
**Selected**
- **Exclude** moves only unselected vertices.
- **Only** moves only selected vertices.
- **All** moves all vertices within brush regardless of selection.
**Occluded**
- **Exclude** moves only unoccluded vertices.
- **Include** moves all vertices within brush regardless of occlusion.
## Algorithm Settings
**Iterations** determines how many times the relax algorithm is run per update. A higher value leads to more agressive smoothing. It is recommended to try increasing the brush strength before increasing this setting.
**Strength** multiplies how much each iteration affects the result.
**Average Edge Lengths** enables adjusting the length of edges to move towards the average edge length under the brush.
**Average Face Radius** enables adjusting the length of edges so that each face's radius moves towards the average of all face radii under the brush.
**Average Face Angles** enables moving vertices so that the angle of each corner of each face moves towards the same value.
**Average Face Lengths** enables adjusting the length of edges to move towards the average length of all edges that share the same face. This option is still experimental and can cause faces to flip.
**Straighten Edges** enables moving vertices so that their edge loops straighten out.
**Correct Flipped Faces** attempts to make sure the direction of the face normals under the brush are consistent.
## Selection
Even though `LMB` to select is not available while using the Tweak Brush, you can still select and deselect by using `Shift LMB`. Box Select `B` and Lasso Select `Ctrl Right Mouse Drag` are always available as well.
@@ -0,0 +1,205 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Strokes | Retopoflow</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="Strokes" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A suite of retopology tools for Blender" />
<meta property="og:description" content="A suite of retopology tools for Blender" />
<link rel="canonical" href="http://localhost:4000/v4/strokes.html" />
<meta property="og:url" content="http://localhost:4000/v4/strokes.html" />
<meta property="og:site_name" content="Retopoflow" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Strokes" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"A suite of retopology tools for Blender","headline":"Strokes","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"http://localhost:4000/images/logos/v4.png"}},"url":"http://localhost:4000/v4/strokes.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/css/style.css?v=fae29b0ecee4f94874e8b5996f55661955b83305">
<link rel="stylesheet" type="text/css" href="/assets/css/main.css">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<span id="logo" class="logo"><img src="/images/logos/v4.png" alt="Logo" /></span>
<h1 class="title" id="title"><a href="/index.html">Retopoflow</a></h1>
<p class="tagline">by <a class="outlink" href="https://orangeturbine.com/" target="_blank">Orange Turbine</a></p>
<select name="version" class="version" id="version_menu" title="version" onchange="switch_versions(event)">
<option value="v3">Version 3</option>
<option value="v4">Version 4</option>
</select>
<div id="navigation"></div>
</header>
<script>
let version = localStorage.getItem("version")
if (version == null) {version = 'v4';}
let path = `/assets/html/${version}.html`;
function switch_versions(event) {
let menu = event.target;
let result = menu.options[menu.selectedIndex].value;
version = result
localStorage.setItem("version", result);
if (result == 'v3') {
location.href = '/v3/index.html'
}
else if (result == 'v4') {
location.href = '/index.html'
}
}
fetch(path)
.then(response => response.text())
.then(data => {document.getElementById('navigation').innerHTML = data;})
.catch(error => console.error('Error loading HTML:', error));
if (location.href.includes('v3')) {
document.getElementById('version_menu').value = 'v3'
document.getElementById('title').innerHTML = `<a href="/v3/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v3.png" alt="Logo" class="logo" />`
localStorage.setItem("version", 'v3');
}
else {
document.getElementById('version_menu').value = 'v4'
document.getElementById('title').innerHTML = `<a href="/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v4.png" alt="Logo" class="logo" />`
}
</script>
<section>
<h1 id="-strokes"><img src="/images/icons/strokes-icon.png" alt="" /> Strokes</h1>
<p><img src="/v4/images/strokes.jpg" alt="" /></p>
<p>Strokes is an incredibly versetile tool for quickly sketching out patches of quads and filling holes in the topology.</p>
<h2 id="inserting">Inserting</h2>
<p>To draw a new stroke, deselect everything, hold down <code class="language-plaintext highlighter-rouge">Ctrl</code>, and <code class="language-plaintext highlighter-rouge">LMB Drag</code> on the surface of the source object.</p>
<p>To turn the previous stroke into a patch of quads, keep the newly created geometry selected and draw a new stroke. Strokes will extrude the selection to the new stroke using evenly spaced quads.</p>
<p>After creating a new or extruded stroke, you can scroll with <code class="language-plaintext highlighter-rouge">Ctrl Mouse Wheel</code> to increase or decrease the number of interpolated verts or loops.</p>
<h2 id="stroke-types">Stroke Types</h2>
<p>Strokes is context aware and adapts to the current selection, surrounding geometry, and shape of your stroke. The basic stroke types should feel intuitive right away, but diving into the more advanced stroke types will help you to work significantly faster.</p>
<p>You do not need to remember the names of the strokes while working, but they are listed here for clarity.</p>
<h3 id="edge-strip">Edge Strip</h3>
<p>A basic Edge Strip is created when you draw a new stroke that is not connected to any other geometry.</p>
<h3 id="equals-strip">Equals Strip</h3>
<p>An Equals Strip is created when you extrude a set of selected edges by drawing a stroke that does not connect to any existing vertices. For best results, draw the stroke roughly paralell to the selected edges, or draw far enough away from them for the Smoothing setting to crete a nice blend.</p>
<p><img src="/v4/images/strokes_equals_01.jpg" alt="" /></p>
<p>You can also create an Equals Strip by selecting a set of edges in a loop and drawing from a deselected vertex in that same loop to the corresponding vertex on the other side of the loop. A yellow circle will appear around the cursor while you hold <code class="language-plaintext highlighter-rouge">Ctrl</code> to indicate that the stroke will be snapped to a vertex.</p>
<p><img src="/v4/images/strokes_equals_02.jpg" alt="" /></p>
<h3 id="t-strip">T Strip</h3>
<p>A T Strip is created by starting the stroke over any of the selected vertices and drawing perpendicular to the selected edges. This type of strip has a special <strong>Extrapolation</strong> option that determines whether or not the newly created geometry follows the curve of the selected geometry.</p>
<p><img src="images/strokes_t_01.jpg" alt="" /></p>
<h3 id="i-strip">I Strip</h3>
<p>An I Strip is created by starting a stroke from a vertex in the set of selected edges and ending the stroke on another vertex. This is most commonly used for bridging two pieces of disconnected geometry.</p>
<p><img src="images/strokes_i_01.jpg" alt="" /></p>
<h3 id="l-strip">L Strip</h3>
<p>An L Strip is created when you draw starting from the end of one selected set of vertices, create a corner, and end on a vertex that is connected to the original selection.</p>
<p><img src="images/strokes_L_01.jpg" alt="" /></p>
<h3 id="c-strip">C Strip</h3>
<p>A C Strip is created by starting a stroke from a vertex on one end of the selected edges and ending the stroke at the vertex on the other end. This allows you to explicitly define every side of the resulting patch for maximum control. The two sharpest angles in the stroke will be interpreted as the other two corners of the patch.</p>
<p><img src="images/strokes_c_01.jpg" alt="" /></p>
<h3 id="loop">Loop</h3>
<p>A Loop is created by drawing a stroke that ends in the same place that it starts. The yellow circle that indicates vertex snapping will be highlighted when the end of the stroke is close enough to the start to be considered a loop.</p>
<p><img src="images/strokes_loop.jpg" alt="" /></p>
<h3 id="equals-loop">Equals Loop</h3>
<p>An Equals Loop is created by drawing a second loop inside or outside a selected loop.</p>
<p><img src="images/strokes_loop_equals.jpg" alt="" /></p>
<h3 id="t-loop">T Loop</h3>
<p>A T Loop is created by drawing a stroke that starts at a vertex in a selected loop and moves inwards or outwards. This can also be used to bridge the loop to an outer or inner loop.</p>
<p><img src="images/strokes_loop_t.jpg" alt="" /></p>
<h2 id="settings">Settings</h2>
<p><strong>Count</strong> determines how many vertices or loops are created when inserting a stroke.</p>
<ul>
<li>
<p><strong>Fixed</strong> uses a set number. Setting this to zero is an interesting way of quickly drawing quads that do not need to be evenly spaced.</p>
</li>
<li>
<p><strong>Brush Size</strong> uses the Strokes brush, which can be seen while drawing a stroke. Like any other brush in Blender, you can quickly change the size with the hotkey <code class="language-plaintext highlighter-rouge">F</code>. A smaller brush size will result in more dense geometry and a larger brush size will result in less dense geometry.</p>
</li>
<li>
<p><strong>Average</strong> uses the average width of the selected edges, which automatically gives you as perfectly square quads as possible. When creating a stroke with no edges selected, the brush size is used as a fallback.</p>
</li>
</ul>
<p><strong>Extrapolation</strong> determines whether or not the newly created geometry follows the curve of the selected geometry when creating T Strips. <strong>Flat</strong> will extrude all of the edges in a straight line while <strong>Adapt</strong> will fan out the edges to maintain the original curvature.</p>
<p><img src="images/strokes_adapt.jpg" alt="" /></p>
<p><strong>Smoothing</strong> is the factor for how much smooth blending is applied to the interpolated loops when creating Equals Strips and I Strips. A value of zero creates perfectly straight lines from the starting vertices to the ending vertices.</p>
<p><strong>Spacing</strong> controls how close together the interpolated loops are near the start and end of the newly created geometry.</p>
<h2 id="selecting">Selecting</h2>
<p>The default selection mode for Contours is Vertex + Edge because it is helpful to be able to quickly select edges and loops while also clearly seeing the number and position of the newly creted vertices.</p>
<h2 id="transforming">Transforming</h2>
<p>A <code class="language-plaintext highlighter-rouge">LMB Drag</code> on components in Strokes will perform a tweak action similar to Blenders Tweak tool. The tweaking settings are shared across multiple tools and can be read about on the <a href="general.html">Retopoflow Mode</a> docs page under Common Settings.</p>
<h2 id="limitations">Limitations</h2>
<p>Strokes works in screen space and cannot create geometry past the edge of the source mesh, so drawing a stroke towards the edge of the source mesh can cause some verts to get cut off.</p>
</section>
<footer>
<p><small>Hosted on GitHub Pages. Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
</body>
</html>
@@ -0,0 +1,110 @@
# ![](/images/icons/strokes-icon.png) Strokes
![](images/strokes.jpg)
Strokes is an incredibly versetile tool for quickly sketching out patches of quads and filling holes in the topology.
## Inserting
To draw a new stroke, deselect everything, hold down `Ctrl`, and `LMB Drag` on the surface of the source object.
To turn the previous stroke into a patch of quads, keep the newly created geometry selected and draw a new stroke. Strokes will extrude the selection to the new stroke using evenly spaced quads.
After creating a new or extruded stroke, you can scroll with `Ctrl Mouse Wheel` to increase or decrease the number of interpolated verts or loops.
## Stroke Types
Strokes is context aware and adapts to the current selection, surrounding geometry, and shape of your stroke. The basic stroke types should feel intuitive right away, but diving into the more advanced stroke types will help you to work significantly faster.
You do not need to remember the names of the strokes while working, but they are listed here for clarity.
### Edge Strip
A basic Edge Strip is created when you draw a new stroke that is not connected to any other geometry.
### Equals Strip
An Equals Strip is created when you extrude a set of selected edges by drawing a stroke that does not connect to any existing vertices. For best results, draw the stroke roughly paralell to the selected edges, or draw far enough away from them for the Smoothing setting to crete a nice blend.
![](images/strokes_equals_01.jpg)
You can also create an Equals Strip by selecting a set of edges in a loop and drawing from a deselected vertex in that same loop to the corresponding vertex on the other side of the loop. A yellow circle will appear around the cursor while you hold `Ctrl` to indicate that the stroke will be snapped to a vertex.
![](images/strokes_equals_02.jpg)
### T Strip
A T Strip is created by starting the stroke over any of the selected vertices and drawing perpendicular to the selected edges. This type of strip has a special **Extrapolation** option that determines whether or not the newly created geometry follows the curve of the selected geometry.
![](images/strokes_t_01.jpg)
### I Strip
An I Strip is created by starting a stroke from a vertex in the set of selected edges and ending the stroke on another vertex. This is most commonly used for bridging two pieces of disconnected geometry.
![](images/strokes_i_01.jpg)
### L Strip
An L Strip is created when you draw starting from the end of one selected set of vertices, create a corner, and end on a vertex that is connected to the original selection.
![](images/strokes_L_01.jpg)
### C Strip
A C Strip is created by starting a stroke from a vertex on one end of the selected edges and ending the stroke at the vertex on the other end. This allows you to explicitly define every side of the resulting patch for maximum control. The two sharpest angles in the stroke will be interpreted as the other two corners of the patch.
![](images/strokes_c_01.jpg)
### Loop
A Loop is created by drawing a stroke that ends in the same place that it starts. The yellow circle that indicates vertex snapping will be highlighted when the end of the stroke is close enough to the start to be considered a loop.
![](images/strokes_loop.jpg)
### Equals Loop
An Equals Loop is created by drawing a second loop inside or outside a selected loop.
![](images/strokes_loop_equals.jpg)
### T Loop
A T Loop is created by drawing a stroke that starts at a vertex in a selected loop and moves inwards or outwards. This can also be used to bridge the loop to an outer or inner loop.
![](images/strokes_loop_t.jpg)
## Settings
**Count** determines how many vertices or loops are created when inserting a stroke.
- **Fixed** uses a set number. Setting this to zero is an interesting way of quickly drawing quads that do not need to be evenly spaced.
- **Brush Size** uses the Strokes brush, which can be seen while drawing a stroke. Like any other brush in Blender, you can quickly change the size with the hotkey `F`. A smaller brush size will result in more dense geometry and a larger brush size will result in less dense geometry.
- **Average** uses the average width of the selected edges, which automatically gives you as perfectly square quads as possible. When creating a stroke with no edges selected, the brush size is used as a fallback.
**Extrapolation** determines whether or not the newly created geometry follows the curve of the selected geometry when creating T Strips. **Flat** will extrude all of the edges in a straight line while **Adapt** will fan out the edges to maintain the original curvature.
![](images/strokes_adapt.jpg)
**Smoothing** is the factor for how much smooth blending is applied to the interpolated loops when creating Equals Strips and I Strips. A value of zero creates perfectly straight lines from the starting vertices to the ending vertices.
**Spacing** controls how close together the interpolated loops are near the start and end of the newly created geometry.
## Selecting
The default selection mode for Contours is Vertex + Edge because it is helpful to be able to quickly select edges and loops while also clearly seeing the number and position of the newly creted vertices.
## Transforming
A `LMB Drag` on components in Strokes will perform a tweak action similar to Blender's Tweak tool. The tweaking settings are shared across multiple tools and can be read about on the [Retopoflow Mode](general.html) docs page under Common Settings.
## Limitations
Strokes works in screen space and cannot create geometry past the edge of the source mesh, so drawing a stroke towards the edge of the source mesh can cause some verts to get cut off.
@@ -0,0 +1,103 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Symmetry | Retopoflow</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="Symmetry" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A suite of retopology tools for Blender" />
<meta property="og:description" content="A suite of retopology tools for Blender" />
<link rel="canonical" href="http://localhost:4000/v4/symmetry.html" />
<meta property="og:url" content="http://localhost:4000/v4/symmetry.html" />
<meta property="og:site_name" content="Retopoflow" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Symmetry" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"A suite of retopology tools for Blender","headline":"Symmetry","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"http://localhost:4000/images/logos/v4.png"}},"url":"http://localhost:4000/v4/symmetry.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/css/style.css?v=fae29b0ecee4f94874e8b5996f55661955b83305">
<link rel="stylesheet" type="text/css" href="/assets/css/main.css">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<span id="logo" class="logo"><img src="/images/logos/v4.png" alt="Logo" /></span>
<h1 class="title" id="title"><a href="/index.html">Retopoflow</a></h1>
<p class="tagline">by <a class="outlink" href="https://orangeturbine.com/" target="_blank">Orange Turbine</a></p>
<select name="version" class="version" id="version_menu" title="version" onchange="switch_versions(event)">
<option value="v3">Version 3</option>
<option value="v4">Version 4</option>
</select>
<div id="navigation"></div>
</header>
<script>
let version = localStorage.getItem("version")
if (version == null) {version = 'v4';}
let path = `/assets/html/${version}.html`;
function switch_versions(event) {
let menu = event.target;
let result = menu.options[menu.selectedIndex].value;
version = result
localStorage.setItem("version", result);
if (result == 'v3') {
location.href = '/v3/index.html'
}
else if (result == 'v4') {
location.href = '/index.html'
}
}
fetch(path)
.then(response => response.text())
.then(data => {document.getElementById('navigation').innerHTML = data;})
.catch(error => console.error('Error loading HTML:', error));
if (location.href.includes('v3')) {
document.getElementById('version_menu').value = 'v3'
document.getElementById('title').innerHTML = `<a href="/v3/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v3.png" alt="Logo" class="logo" />`
localStorage.setItem("version", 'v3');
}
else {
document.getElementById('version_menu').value = 'v4'
document.getElementById('title').innerHTML = `<a href="/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v4.png" alt="Logo" class="logo" />`
}
</script>
<section>
<h1 id="symmetry">Symmetry</h1>
<p>Retopoflow 3 had a whole symmetry system that was really just the mirror modifier under the hood.</p>
<p>In Retopoflow 4, you have full access to the mirror modifier directly and do not need to do anything extra for that to work with the Retopoflow tools.</p>
<p>It is important to note that, while the retopology overlay is enabled, Blender only shows the result of modifiers if you enable the On Cage (mesh triangle) option in the modifiers header. In all other cases it is highly recommended to work with this off.</p>
<p>Working with Blenders Edit Mode Symmetry is not yet supported, as unfortunately it is rather broken and many regular operations in Blender are not yet supported. We hope to help improve this for all Blender users in the future.</p>
</section>
<footer>
<p><small>Hosted on GitHub Pages. Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
</body>
</html>
@@ -0,0 +1,9 @@
# Symmetry
Retopoflow 3 had a whole symmetry system that was really just the mirror modifier under the hood.
In Retopoflow 4, you have full access to the mirror modifier directly and do not need to do anything extra for that to work with the Retopoflow tools.
It is important to note that, while the retopology overlay is enabled, Blender only shows the result of modifiers if you enable the On Cage (mesh triangle) option in the modifier's header. In all other cases it is highly recommended to work with this off.
Working with Blender's Edit Mode Symmetry is not yet supported, as unfortunately it is rather broken and many regular operations in Blender are not yet supported. We hope to help improve this for all Blender users in the future.
@@ -0,0 +1,155 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>Tweak Brush | Retopoflow</title>
<meta name="generator" content="Jekyll v3.9.5" />
<meta property="og:title" content="Tweak Brush" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A suite of retopology tools for Blender" />
<meta property="og:description" content="A suite of retopology tools for Blender" />
<link rel="canonical" href="http://localhost:4000/v4/tweak.html" />
<meta property="og:url" content="http://localhost:4000/v4/tweak.html" />
<meta property="og:site_name" content="Retopoflow" />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<meta property="twitter:title" content="Tweak Brush" />
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","description":"A suite of retopology tools for Blender","headline":"Tweak Brush","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"http://localhost:4000/images/logos/v4.png"}},"url":"http://localhost:4000/v4/tweak.html"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/assets/css/style.css?v=fae29b0ecee4f94874e8b5996f55661955b83305">
<link rel="stylesheet" type="text/css" href="/assets/css/main.css">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<span id="logo" class="logo"><img src="/images/logos/v4.png" alt="Logo" /></span>
<h1 class="title" id="title"><a href="/index.html">Retopoflow</a></h1>
<p class="tagline">by <a class="outlink" href="https://orangeturbine.com/" target="_blank">Orange Turbine</a></p>
<select name="version" class="version" id="version_menu" title="version" onchange="switch_versions(event)">
<option value="v3">Version 3</option>
<option value="v4">Version 4</option>
</select>
<div id="navigation"></div>
</header>
<script>
let version = localStorage.getItem("version")
if (version == null) {version = 'v4';}
let path = `/assets/html/${version}.html`;
function switch_versions(event) {
let menu = event.target;
let result = menu.options[menu.selectedIndex].value;
version = result
localStorage.setItem("version", result);
if (result == 'v3') {
location.href = '/v3/index.html'
}
else if (result == 'v4') {
location.href = '/index.html'
}
}
fetch(path)
.then(response => response.text())
.then(data => {document.getElementById('navigation').innerHTML = data;})
.catch(error => console.error('Error loading HTML:', error));
if (location.href.includes('v3')) {
document.getElementById('version_menu').value = 'v3'
document.getElementById('title').innerHTML = `<a href="/v3/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v3.png" alt="Logo" class="logo" />`
localStorage.setItem("version", 'v3');
}
else {
document.getElementById('version_menu').value = 'v4'
document.getElementById('title').innerHTML = `<a href="/index.html">Retopoflow</a>`
document.getElementById('logo').innerHTML = `<img src="/images/logos/v4.png" alt="Logo" class="logo" />`
}
</script>
<section>
<h1 id="-tweak-brush"><img src="/images/icons/tweak-icon.png" alt="" /> Tweak Brush</h1>
<p><img src="/v4/images/tweak.jpg" alt="" /></p>
<!--
Quick Shortcut: <code>C</code>
-->
<p>The Tweak Brush tool allows you to easily and interactively adjust vertex positions across the surface of the source mesh.</p>
<h2 id="transforming">Transforming</h2>
<p>To use the Tweak Brush, simply <code class="language-plaintext highlighter-rouge">LMB Drag</code> on vertices. Which vertices are affected can be controlled in the <strong>Masking</strong> settings.</p>
<h2 id="brush-settings">Brush Settings</h2>
<ul>
<li><strong>Radius</strong> controls the size of the brush and can be adjusted with the hotkey <code class="language-plaintext highlighter-rouge">F</code></li>
<li><strong>Strength</strong> controls how much the brush effects the geometry and can be adjusted with the hotkey <code class="language-plaintext highlighter-rouge">Shift F</code></li>
<li><strong>Falloff</strong> controls how much the strength of the brush is feathered near the edges and can be adjusted with the hotkey <code class="language-plaintext highlighter-rouge">Ctrl F</code></li>
</ul>
<!--
These options can also be stored as presets in the Brush Options panel.
To quickly switch between presets, use the <code>Shift+Q</code>, <code>~</code> pie menu.
-->
<h2 id="masking-settings">Masking Settings</h2>
<p>The Tweak Brush has several options to control which vertices are moved and how.</p>
<p><strong>Boundary</strong></p>
<ul>
<li><strong>Exclude</strong> does not affect vertices along the mesh boundary.</li>
<li><strong>Slide</strong> moves vertices along boundary but only by sliding them along the boundary loop.</li>
<li><strong>Include</strong> moves all vertices under the brush including those along the boundary.</li>
</ul>
<!--
### Symmetry
- **Exclude**: Do not affect vertices along the symmetry plane.
- **Slide**: Tweak vertices along boundary but only by sliding them along the symmetry plane.
- **Include**: Tweak all vertices under the brush including those along the symmetry plane.
-->
<p><strong>Selected</strong></p>
<ul>
<li><strong>Exclude</strong> moves only unselected vertices.</li>
<li><strong>Only</strong> moves only selected vertices.</li>
<li><strong>All</strong> moves all vertices within brush regardless of selection.</li>
</ul>
<p><strong>Occluded</strong></p>
<ul>
<li><strong>Exclude</strong> moves only unoccluded vertices.</li>
<li><strong>Include</strong> moves all vertices within brush regardless of occlusion.</li>
</ul>
<h2 id="selection">Selection</h2>
<p>Even though <code class="language-plaintext highlighter-rouge">LMB</code> to select is not available while using the Tweak Brush, you can still select and deselect by using <code class="language-plaintext highlighter-rouge">Shift LMB</code>. Box Select <code class="language-plaintext highlighter-rouge">B</code> and Lasso Select <code class="language-plaintext highlighter-rouge">Ctrl Right Mouse Drag</code> are always available as well.</p>
</section>
<footer>
<p><small>Hosted on GitHub Pages. Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
</body>
</html>
@@ -0,0 +1,54 @@
# ![](/images/icons/tweak-icon.png) Tweak Brush
![](images/tweak.jpg)
<!--
Quick Shortcut: {{ site.data.keymaps.tweak_quick }}
-->
The Tweak Brush tool allows you to easily and interactively adjust vertex positions across the surface of the source mesh.
## Transforming
To use the Tweak Brush, simply `LMB Drag` on vertices. Which vertices are affected can be controlled in the **Masking** settings.
## Brush Settings
- **Radius** controls the size of the brush and can be adjusted with the hotkey `F`
- **Strength** controls how much the brush effects the geometry and can be adjusted with the hotkey `Shift F`
- **Falloff** controls how much the strength of the brush is feathered near the edges and can be adjusted with the hotkey `Ctrl F`
<!--
These options can also be stored as presets in the Brush Options panel.
To quickly switch between presets, use the {{ site.data.keymaps.pie_menu_alt0 }} pie menu.
-->
## Masking Settings
The Tweak Brush has several options to control which vertices are moved and how.
**Boundary**
- **Exclude** does not affect vertices along the mesh boundary.
- **Slide** moves vertices along boundary but only by sliding them along the boundary loop.
- **Include** moves all vertices under the brush including those along the boundary.
<!--
### Symmetry
- **Exclude**: Do not affect vertices along the symmetry plane.
- **Slide**: Tweak vertices along boundary but only by sliding them along the symmetry plane.
- **Include**: Tweak all vertices under the brush including those along the symmetry plane.
-->
**Selected**
- **Exclude** moves only unselected vertices.
- **Only** moves only selected vertices.
- **All** moves all vertices within brush regardless of selection.
**Occluded**
- **Exclude** moves only unoccluded vertices.
- **Include** moves all vertices within brush regardless of occlusion.
## Selection
Even though `LMB` to select is not available while using the Tweak Brush, you can still select and deselect by using `Shift LMB`. Box Select `B` and Lasso Select `Ctrl Right Mouse Drag` are always available as well.