Repository files navigation

AutoMask - a Blender Add-on for automatic rotoscoping

This repository contains a Blender 2.8x Add-on that can mask an object in the Movie Clip Editor with the help of Machine Learning. AutoMask is the communication between Blender and SiamMask.

Here is an example for the usage of AutoMask. Example

Usage

First select a bounding box of the object. Then hit one of the track buttons. The masks for every frame will be saved in a separate and new Mask Layer. If you are using the single step masking as a starting point for your mask you can also

Parameters

  • Max. Length is the roughly the maximum amount of pixels a mask segment can trace. The lower this value is the closer the final mask will be to the network output. Bear in mind that the network output is by no means a perfect mask. But it can be a great starting point.
  • Directions is the amount of directions (of 8 possible) one mask segment can cover. 2 will produce more controll points but a closer match in the mask, but the S-Curves can also handle 3 different directions.
  • Threshold is the amount of pixels that can go in another direction than the rest of a given segment.

Installation

  1. Download the repository: Download the repository as .zip file and extract it or clone it to your computer.
  2. Python: To use this Add-on, several 3rd party libraries are required (see requirements.txt). You can either install the dependencies to the Blender python or if python is already installed on the system and the python version is compatible with the Blender python version you can also install the dependencies on your system.
  3. Adding the Project to the Python path: Open automask.py in your favorite text editor and replace PYTHON_PATH with the path to you python site-packages if needed and PROJECT_DIR with the path to the directory you downloaded this repository to.
  4. Install Dependencies:
  • PyTorch The neural network that does the heavy lifting is written for PyTorch. A Nvidia GPU is recommended but not necessarily required. However, it does speed up the process significantly. If you have a supported GPU install pytorch with GPU support.
  • Other Requirements Most of the required libraries are standard and easy to install. pip install -r requirements.txt
  1. Model: The model weights for SiamMask can be downloaded from http://www.robots.ox.ac.uk/~qwang/SiamMask_VOT.pth. Save the file to the subfolder trackers/SiamMask under the name model.pth.
  2. Add to Blender: Installation

Acknowledgements

SiamMask, THOR

About

Automatic Rotoscoping/Masking tool powered with Machine Learning for Blender (WIP)

Topics

Resources

Stars

177 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

AutoMask - a Blender Add-on for automatic rotoscoping

This repository contains a Blender 2.8x Add-on that can mask an object in the Movie Clip Editor with the help of Machine Learning. AutoMask is the communication between Blender and SiamMask.

Here is an example for the usage of AutoMask. Example

Usage

First select a bounding box of the object. Then hit one of the track buttons. The masks for every frame will be saved in a separate and new Mask Layer. If you are using the single step masking as a starting point for your mask you can also

Parameters

  • Max. Length is the roughly the maximum amount of pixels a mask segment can trace. The lower this value is the closer the final mask will be to the network output. Bear in mind that the network output is by no means a perfect mask. But it can be a great starting point.
  • Directions is the amount of directions (of 8 possible) one mask segment can cover. 2 will produce more controll points but a closer match in the mask, but the S-Curves can also handle 3 different directions.
  • Threshold is the amount of pixels that can go in another direction than the rest of a given segment.

Installation

  1. Download the repository: Download the repository as .zip file and extract it or clone it to your computer.
  2. Python: To use this Add-on, several 3rd party libraries are required (see requirements.txt). You can either install the dependencies to the Blender python or if python is already installed on the system and the python version is compatible with the Blender python version you can also install the dependencies on your system.
  3. Adding the Project to the Python path: Open automask.py in your favorite text editor and replace PYTHON_PATH with the path to you python site-packages if needed and PROJECT_DIR with the path to the directory you downloaded this repository to.
  4. Install Dependencies:
  • PyTorch The neural network that does the heavy lifting is written for PyTorch. A Nvidia GPU is recommended but not necessarily required. However, it does speed up the process significantly. If you have a supported GPU install pytorch with GPU support.
  • Other Requirements Most of the required libraries are standard and easy to install. pip install -r requirements.txt
  1. Model: The model weights for SiamMask can be downloaded from http://www.robots.ox.ac.uk/~qwang/SiamMask_VOT.pth. Save the file to the subfolder trackers/SiamMask under the name model.pth.
  2. Add to Blender: Installation

Acknowledgements

SiamMask, THOR

About

Automatic Rotoscoping/Masking tool powered with Machine Learning for Blender (WIP)

Topics

Resources

Stars

177 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

AutoMask - a Blender Add-on for automatic rotoscoping

This repository contains a Blender 2.8x Add-on that can mask an object in the Movie Clip Editor with the help of Machine Learning. AutoMask is the communication between Blender and SiamMask.

Here is an example for the usage of AutoMask. Example

Usage

First select a bounding box of the object. Then hit one of the track buttons. The masks for every frame will be saved in a separate and new Mask Layer. If you are using the single step masking as a starting point for your mask you can also

Parameters

  • Max. Length is the roughly the maximum amount of pixels a mask segment can trace. The lower this value is the closer the final mask will be to the network output. Bear in mind that the network output is by no means a perfect mask. But it can be a great starting point.
  • Directions is the amount of directions (of 8 possible) one mask segment can cover. 2 will produce more controll points but a closer match in the mask, but the S-Curves can also handle 3 different directions.
  • Threshold is the amount of pixels that can go in another direction than the rest of a given segment.

Installation

  1. Download the repository: Download the repository as .zip file and extract it or clone it to your computer.
  2. Python: To use this Add-on, several 3rd party libraries are required (see requirements.txt). You can either install the dependencies to the Blender python or if python is already installed on the system and the python version is compatible with the Blender python version you can also install the dependencies on your system.
  3. Adding the Project to the Python path: Open automask.py in your favorite text editor and replace PYTHON_PATH with the path to you python site-packages if needed and PROJECT_DIR with the path to the directory you downloaded this repository to.
  4. Install Dependencies:
  • PyTorch The neural network that does the heavy lifting is written for PyTorch. A Nvidia GPU is recommended but not necessarily required. However, it does speed up the process significantly. If you have a supported GPU install pytorch with GPU support.
  • Other Requirements Most of the required libraries are standard and easy to install. pip install -r requirements.txt
  1. Model: The model weights for SiamMask can be downloaded from http://www.robots.ox.ac.uk/~qwang/SiamMask_VOT.pth. Save the file to the subfolder trackers/SiamMask under the name model.pth.
  2. Add to Blender: Installation

Acknowledgements

SiamMask, THOR

About

Automatic Rotoscoping/Masking tool powered with Machine Learning for Blender (WIP)

Topics

Resources

Stars

177 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

AutoMask - a Blender Add-on for automatic rotoscoping

This repository contains a Blender 2.8x Add-on that can mask an object in the Movie Clip Editor with the help of Machine Learning. AutoMask is the communication between Blender and SiamMask.

Here is an example for the usage of AutoMask. Example

Usage

First select a bounding box of the object. Then hit one of the track buttons. The masks for every frame will be saved in a separate and new Mask Layer. If you are using the single step masking as a starting point for your mask you can also

Parameters

  • Max. Length is the roughly the maximum amount of pixels a mask segment can trace. The lower this value is the closer the final mask will be to the network output. Bear in mind that the network output is by no means a perfect mask. But it can be a great starting point.
  • Directions is the amount of directions (of 8 possible) one mask segment can cover. 2 will produce more controll points but a closer match in the mask, but the S-Curves can also handle 3 different directions.
  • Threshold is the amount of pixels that can go in another direction than the rest of a given segment.

Installation

  1. Download the repository: Download the repository as .zip file and extract it or clone it to your computer.
  2. Python: To use this Add-on, several 3rd party libraries are required (see requirements.txt). You can either install the dependencies to the Blender python or if python is already installed on the system and the python version is compatible with the Blender python version you can also install the dependencies on your system.
  3. Adding the Project to the Python path: Open automask.py in your favorite text editor and replace PYTHON_PATH with the path to you python site-packages if needed and PROJECT_DIR with the path to the directory you downloaded this repository to.
  4. Install Dependencies:
  • PyTorch The neural network that does the heavy lifting is written for PyTorch. A Nvidia GPU is recommended but not necessarily required. However, it does speed up the process significantly. If you have a supported GPU install pytorch with GPU support.
  • Other Requirements Most of the required libraries are standard and easy to install. pip install -r requirements.txt
  1. Model: The model weights for SiamMask can be downloaded from http://www.robots.ox.ac.uk/~qwang/SiamMask_VOT.pth. Save the file to the subfolder trackers/SiamMask under the name model.pth.
  2. Add to Blender: Installation

Acknowledgements

SiamMask, THOR

About

Automatic Rotoscoping/Masking tool powered with Machine Learning for Blender (WIP)

Topics

Resources

Stars

177 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

AutoMask - a Blender Add-on for automatic rotoscoping

This repository contains a Blender 2.8x Add-on that can mask an object in the Movie Clip Editor with the help of Machine Learning. AutoMask is the communication between Blender and SiamMask.

Here is an example for the usage of AutoMask. Example

Usage

First select a bounding box of the object. Then hit one of the track buttons. The masks for every frame will be saved in a separate and new Mask Layer. If you are using the single step masking as a starting point for your mask you can also

Parameters

  • Max. Length is the roughly the maximum amount of pixels a mask segment can trace. The lower this value is the closer the final mask will be to the network output. Bear in mind that the network output is by no means a perfect mask. But it can be a great starting point.
  • Directions is the amount of directions (of 8 possible) one mask segment can cover. 2 will produce more controll points but a closer match in the mask, but the S-Curves can also handle 3 different directions.
  • Threshold is the amount of pixels that can go in another direction than the rest of a given segment.

Installation

  1. Download the repository: Download the repository as .zip file and extract it or clone it to your computer.
  2. Python: To use this Add-on, several 3rd party libraries are required (see requirements.txt). You can either install the dependencies to the Blender python or if python is already installed on the system and the python version is compatible with the Blender python version you can also install the dependencies on your system.
  3. Adding the Project to the Python path: Open automask.py in your favorite text editor and replace PYTHON_PATH with the path to you python site-packages if needed and PROJECT_DIR with the path to the directory you downloaded this repository to.
  4. Install Dependencies:
  • PyTorch The neural network that does the heavy lifting is written for PyTorch. A Nvidia GPU is recommended but not necessarily required. However, it does speed up the process significantly. If you have a supported GPU install pytorch with GPU support.
  • Other Requirements Most of the required libraries are standard and easy to install. pip install -r requirements.txt
  1. Model: The model weights for SiamMask can be downloaded from http://www.robots.ox.ac.uk/~qwang/SiamMask_VOT.pth. Save the file to the subfolder trackers/SiamMask under the name model.pth.
  2. Add to Blender: Installation

Acknowledgements

SiamMask, THOR

About

Automatic Rotoscoping/Masking tool powered with Machine Learning for Blender (WIP)

Topics

Resources

Stars

177 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

AutoMask - a Blender Add-on for automatic rotoscoping

This repository contains a Blender 2.8x Add-on that can mask an object in the Movie Clip Editor with the help of Machine Learning. AutoMask is the communication between Blender and SiamMask.

Here is an example for the usage of AutoMask. Example

Usage

First select a bounding box of the object. Then hit one of the track buttons. The masks for every frame will be saved in a separate and new Mask Layer. If you are using the single step masking as a starting point for your mask you can also

Parameters

  • Max. Length is the roughly the maximum amount of pixels a mask segment can trace. The lower this value is the closer the final mask will be to the network output. Bear in mind that the network output is by no means a perfect mask. But it can be a great starting point.
  • Directions is the amount of directions (of 8 possible) one mask segment can cover. 2 will produce more controll points but a closer match in the mask, but the S-Curves can also handle 3 different directions.
  • Threshold is the amount of pixels that can go in another direction than the rest of a given segment.

Installation

  1. Download the repository: Download the repository as .zip file and extract it or clone it to your computer.
  2. Python: To use this Add-on, several 3rd party libraries are required (see requirements.txt). You can either install the dependencies to the Blender python or if python is already installed on the system and the python version is compatible with the Blender python version you can also install the dependencies on your system.
  3. Adding the Project to the Python path: Open automask.py in your favorite text editor and replace PYTHON_PATH with the path to you python site-packages if needed and PROJECT_DIR with the path to the directory you downloaded this repository to.
  4. Install Dependencies:
  • PyTorch The neural network that does the heavy lifting is written for PyTorch. A Nvidia GPU is recommended but not necessarily required. However, it does speed up the process significantly. If you have a supported GPU install pytorch with GPU support.
  • Other Requirements Most of the required libraries are standard and easy to install. pip install -r requirements.txt
  1. Model: The model weights for SiamMask can be downloaded from http://www.robots.ox.ac.uk/~qwang/SiamMask_VOT.pth. Save the file to the subfolder trackers/SiamMask under the name model.pth.
  2. Add to Blender: Installation

Acknowledgements

SiamMask, THOR

About

Automatic Rotoscoping/Masking tool powered with Machine Learning for Blender (WIP)

Topics

Resources

Stars

177 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

AutoMask - a Blender Add-on for automatic rotoscoping

This repository contains a Blender 2.8x Add-on that can mask an object in the Movie Clip Editor with the help of Machine Learning. AutoMask is the communication between Blender and SiamMask.

Here is an example for the usage of AutoMask. Example

Usage

First select a bounding box of the object. Then hit one of the track buttons. The masks for every frame will be saved in a separate and new Mask Layer. If you are using the single step masking as a starting point for your mask you can also

Parameters

  • Max. Length is the roughly the maximum amount of pixels a mask segment can trace. The lower this value is the closer the final mask will be to the network output. Bear in mind that the network output is by no means a perfect mask. But it can be a great starting point.
  • Directions is the amount of directions (of 8 possible) one mask segment can cover. 2 will produce more controll points but a closer match in the mask, but the S-Curves can also handle 3 different directions.
  • Threshold is the amount of pixels that can go in another direction than the rest of a given segment.

Installation

  1. Download the repository: Download the repository as .zip file and extract it or clone it to your computer.
  2. Python: To use this Add-on, several 3rd party libraries are required (see requirements.txt). You can either install the dependencies to the Blender python or if python is already installed on the system and the python version is compatible with the Blender python version you can also install the dependencies on your system.
  3. Adding the Project to the Python path: Open automask.py in your favorite text editor and replace PYTHON_PATH with the path to you python site-packages if needed and PROJECT_DIR with the path to the directory you downloaded this repository to.
  4. Install Dependencies:
  • PyTorch The neural network that does the heavy lifting is written for PyTorch. A Nvidia GPU is recommended but not necessarily required. However, it does speed up the process significantly. If you have a supported GPU install pytorch with GPU support.
  • Other Requirements Most of the required libraries are standard and easy to install. pip install -r requirements.txt
  1. Model: The model weights for SiamMask can be downloaded from http://www.robots.ox.ac.uk/~qwang/SiamMask_VOT.pth. Save the file to the subfolder trackers/SiamMask under the name model.pth.
  2. Add to Blender: Installation

Acknowledgements

SiamMask, THOR

About

Automatic Rotoscoping/Masking tool powered with Machine Learning for Blender (WIP)

Topics

Resources

Stars

177 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

AutoMask - a Blender Add-on for automatic rotoscoping

This repository contains a Blender 2.8x Add-on that can mask an object in the Movie Clip Editor with the help of Machine Learning. AutoMask is the communication between Blender and SiamMask.

Here is an example for the usage of AutoMask. Example

Usage

First select a bounding box of the object. Then hit one of the track buttons. The masks for every frame will be saved in a separate and new Mask Layer. If you are using the single step masking as a starting point for your mask you can also

Parameters

  • Max. Length is the roughly the maximum amount of pixels a mask segment can trace. The lower this value is the closer the final mask will be to the network output. Bear in mind that the network output is by no means a perfect mask. But it can be a great starting point.
  • Directions is the amount of directions (of 8 possible) one mask segment can cover. 2 will produce more controll points but a closer match in the mask, but the S-Curves can also handle 3 different directions.
  • Threshold is the amount of pixels that can go in another direction than the rest of a given segment.

Installation

  1. Download the repository: Download the repository as .zip file and extract it or clone it to your computer.
  2. Python: To use this Add-on, several 3rd party libraries are required (see requirements.txt). You can either install the dependencies to the Blender python or if python is already installed on the system and the python version is compatible with the Blender python version you can also install the dependencies on your system.
  3. Adding the Project to the Python path: Open automask.py in your favorite text editor and replace PYTHON_PATH with the path to you python site-packages if needed and PROJECT_DIR with the path to the directory you downloaded this repository to.
  4. Install Dependencies:
  • PyTorch The neural network that does the heavy lifting is written for PyTorch. A Nvidia GPU is recommended but not necessarily required. However, it does speed up the process significantly. If you have a supported GPU install pytorch with GPU support.
  • Other Requirements Most of the required libraries are standard and easy to install. pip install -r requirements.txt
  1. Model: The model weights for SiamMask can be downloaded from http://www.robots.ox.ac.uk/~qwang/SiamMask_VOT.pth. Save the file to the subfolder trackers/SiamMask under the name model.pth.
  2. Add to Blender: Installation

Acknowledgements

SiamMask, THOR

About

Automatic Rotoscoping/Masking tool powered with Machine Learning for Blender (WIP)

Topics

Resources

Stars

177 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages