DeepMotion, a well-known AI-based character motion solution, has released an open beta of SayMotion, a service that generates 3D motion of a person from text!
SayMotion: Text to 3D Animation | Open Beta Now Available!
Imagine a world where creating amazing 3D animations is as easy as describing your vision. DeepMotion’s SayMotion™ goes beyond other generative 2D AI tools to make this vision a reality. Simple text prompts (video prompts coming soon!) allows complex 3D motion to be easily generated in minutes, allowing creators to sit in the director’s chair and bring their digital actors to life with words.
Full browser control: requires internet connection and web browser Enter text prompts and select characters to generate motion Export formats: .FBX, .GLB, .BVH, or .MP4 Inpainting tools and generative AI to add, enhance, and blend animations
These services keep growing…. Is it time for a domestic one? For more details, please check the official website! Links
SayMotion™ by DeepMotion | Text to 3D Animation Generative AI Screenshot of deepmotion.com
DeepMotion related solutions have been introduced in the past, Animate 3D is still alive and well, but Neuron (Motion Brain) is no more…
Well it’s been a while, elections are coming and I don’t want to be reading bullshit about people I don’t care for, so made this quick TAMPERMONKEY script that will filter anything containing the words on the list and clear the website up for you.
With a little blur:
// ==UserScript== // @name Word Blocker // @namespace http://tampermonkey.net/ // @version 0.3 // @description Block specific words on webpages // @match *://*/* // @grant none // @author Edu Altamirano // @website https://www.cocoalopez.com/blog // @license MIT // ==/UserScript==
(function() { 'use strict';
// List of words to block var blockedWords = ['boluarte', 'milei', 'salinas', 'xochitl', 'netanyahu', 'israel', 'boluarte', 'ecuador', 'noboa', 'piqué', 'sunak' ];
// List of websites to filter var websitesToFilter = ['example.com', 'another-example.com'];
// List of websites to exclude from filtering var excludedWebsites = ['excluded-example.com', 'another-excluded-example.com'];
// User choice: 'all', 'list', or 'none' var userChoice = 'all'; // Change this to your preference
// Function to check if an element contains a blocked word function containsBlockedWord(element) { var text = element.textContent.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase(); for (var i = 0; i < blockedWords.length; i++) { var blockedWord = blockedWords[i].normalize("NFD").replace(/[\u0300-\u036f]/g, ""); if (text.includes(blockedWord)) { return true; } } return false; }
// Function to hide elements containing blocked words function hideBlockedElements() { var elements = document.querySelectorAll('p, h1, h2, h3, h4, h5, h6, a, span'); elements.forEach(function(element) { if (containsBlockedWord(element)) { // Cross out and color red the blocked words element.innerHTML = element.innerHTML.replace(new RegExp(blockedWords.join("|"), "gi"), function(matched){ return '<span style="color: red; text-decoration: line-through;">' + matched + '</span>'; });
// Wait a second, then add a blur effect before hiding the element setTimeout(function() { element.style.transition = 'all 0.5s'; element.style.filter = 'blur(10px)'; setTimeout(function() { element.style.display = 'none'; }, 500); }, 1000);
// Also hide the closest parent div var parent = element.parentElement; while (parent) { if (parent.tagName.toLowerCase() === 'div') { (function(parent) { setTimeout(function() { parent.style.transition = 'all 0.5s'; parent.style.filter = 'blur(10px)'; setTimeout(function() { parent.style.display = 'none'; }, 500); }, 1000); })(parent); break; } parent = parent.parentElement; }
// Also hide any preceding img elements within the same parent element var sibling = element.previousElementSibling; while (sibling) { if (sibling.tagName.toLowerCase() === 'img') { (function(sibling) { setTimeout(function() { sibling.style.transition = 'all 0.5s'; sibling.style.filter = 'blur(10px)'; setTimeout(function() { sibling.style.display = 'none'; }, 500); }, 1000); })(sibling); } sibling = sibling.previousElementSibling; } } });
// Hide img elements with alt text or sibling a element text containing blocked words var images = document.querySelectorAll('img'); images.forEach(function(img) { var altText = img.alt.toLowerCase(); for (var i = 0; i < blockedWords.length; i++) { if (altText.includes(blockedWords[i])) { setTimeout(function() { img.style.transition = 'all 0.5s'; img.style.filter = 'blur(10px)'; setTimeout(function() { img.style.display = 'none'; }, 500); }, 1000); break; } }
// Check if the current website should be filtered function shouldFilterWebsite() { var currentWebsite = window.location.hostname; if (excludedWebsites.includes(currentWebsite)) { return false; } else if (userChoice === 'all' || (userChoice === 'list' && websitesToFilter.includes(currentWebsite))) { return true; } else { return false; } }
// Run the script after the DOM is fully loaded window.addEventListener('load', function() { if (shouldFilterWebsite()) { hideBlockedElements(); } }, false); })();
And if you want a second to see the muted words v0.2
// ==UserScript==
// @name Word Blocker
// @namespace http://tampermonkey.net/
// @version 0.2
// @description Block specific words on webpages
// @match *://*/*
// @grant none
// @author Edu Altamirano
// @website https://www.cocoalopez.com/blog
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// List of words to block
var blockedWords = ['boluarte', 'milei', 'salinas', 'Xochitl', 'Xóchitl', 'Israel', 'Netanyahu', 'israel', 'Xóchitl', 'xochitl', 'Milei', 'Boluarte', 'Israeli', 'Macron', 'macron', 'futbol', 'fútbol', 'Argentina', 'argentina'];
// List of websites to filter
var websitesToFilter = ['example.com', 'another-example.com'];
// List of websites to exclude from filtering
var excludedWebsites = ['excluded-example.com', 'another-excluded-example.com'];
// User choice: 'all', 'list', or 'none'
var userChoice = 'all'; // Change this to your preference
// Function to check if an element contains a blocked word
function containsBlockedWord(element) {
var text = element.textContent.toLowerCase();
for (var i = 0; i < blockedWords.length; i++) {
if (text.includes(blockedWords[i])) {
return true;
}
}
return false;
}
// Function to hide elements containing blocked words
function hideBlockedElements() {
var elements = document.querySelectorAll('p, h1, h2, h3, h4, h5, h6, a, span');
elements.forEach(function(element) {
if (containsBlockedWord(element)) {
// Cross out and color red the blocked words
element.innerHTML = element.innerHTML.replace(new RegExp(blockedWords.join("|"), "gi"), function(matched){
return '<span style="color: red; text-decoration: line-through;">' + matched + '</span>';
});
// Wait a second, then add a blur effect before hiding the element
setTimeout(function() {
element.style.transition = 'all 0.5s';
element.style.filter = 'blur(10px)';
setTimeout(function() {
element.style.display = 'none';
}, 500);
}, 1000);
// Also hide the closest parent div
var parent = element.parentElement;
while (parent) {
if (parent.tagName.toLowerCase() === 'div') {
(function(parent) {
setTimeout(function() {
parent.style.transition = 'all 0.5s';
parent.style.filter = 'blur(10px)';
setTimeout(function() {
parent.style.display = 'none';
}, 500);
}, 1000);
})(parent);
break;
}
parent = parent.parentElement;
}
// Also hide any preceding img elements within the same parent element
var sibling = element.previousElementSibling;
while (sibling) {
if (sibling.tagName.toLowerCase() === 'img') {
(function(sibling) {
setTimeout(function() {
sibling.style.transition = 'all 0.5s';
sibling.style.filter = 'blur(10px)';
setTimeout(function() {
sibling.style.display = 'none';
}, 500);
}, 1000);
})(sibling);
}
sibling = sibling.previousElementSibling;
}
}
});
// Hide img elements with alt text or sibling a element text containing blocked words
var images = document.querySelectorAll('img');
images.forEach(function(img) {
var altText = img.alt.toLowerCase();
for (var i = 0; i < blockedWords.length; i++) {
if (altText.includes(blockedWords[i])) {
setTimeout(function() {
img.style.transition = 'all 0.5s';
img.style.filter = 'blur(10px)';
setTimeout(function() {
img.style.display = 'none';
}, 500);
}, 1000);
break;
}
}
var sibling = img.nextElementSibling;
while (sibling) {
if (sibling.tagName.toLowerCase() === 'a' && containsBlockedWord(sibling)) {
(function(sibling) {
setTimeout(function() {
img.style.transition = 'all 0.5s';
img.style.filter = 'blur(10px)';
setTimeout(function() {
img.style.display = 'none';
}, 500);
}, 1000);
})(sibling);
break;
}
sibling = sibling.nextElementSibling;
}
});
}
// Check if the current website should be filtered
function shouldFilterWebsite() {
var currentWebsite = window.location.hostname;
if (excludedWebsites.includes(currentWebsite)) {
return false;
} else if (userChoice === 'all' || (userChoice === 'list' && websitesToFilter.includes(currentWebsite))) {
return true;
} else {
return false;
}
}
// Run the script after the DOM is fully loaded
window.addEventListener('load', function() {
if (shouldFilterWebsite()) {
hideBlockedElements();
}
}, false);
})();
If you love plasticity and would like to play with CAD visually, there was a time where this app was working and free. Well you can still install it and use it on windows.
123 Design is a visual CAD software, from here you can export to meshmixer and then to prusaslicer and slice 3d print your pieces. Basically is the previous locally run Tinkercad
So if you are used to the fast blazing UI speeds of old 3dsmax 2009, then you’re like me, annoyed when 2016+ MAX versions became extremely laggy. So I’ve found a solution.
Set a Qt Environment variable in Windows
In some instances, 3ds Max UI improvements may occur by setting a Qt (UI) environment variable in Windows:
In Windows (8 or 10), go to the Windows Search bar.
Type: System. (It should bring up the choice of “System (Control Panel).”
Press Enter.
In the System menu, in the bottom-left of the menu, click the Advanced Systems Settings item. A System Properties menu will appear.
Click Environment Variables. The Environment Variables menu will appear.
Under System variables, click New to bring up the New System Variable menu.
Under Variable name, enter: QT_OPENGL
Under Variable value, enter: Angle
Click OK in to save the changes.
Under System variables, click New to bring up the New System Variable menu.
Under Variable name, enter: QT_ANGLE_PLATFORM
Under Variable value, enter any one of these variables: warp, d3d9 or d3d11. (Note: Save only one of these at a time. If you see no improvement, reboot the PC and repeat the process but enter the next variable in this list.)
Click OK in each menu to save the changes.
Reboot the PC and test the performance in 3ds Max.
Finally we are able to publish the short in YouTube, after several years. Enjoy watching a friendship story about living in the friend zone and keeping up with it until you realize that it has been the tool for success all along.
So recently I wanted to block the comments section on a website however the element blocking was not working as they used random strings at the end of the div ID.
In this case the element appeared as:
###comment_iframe_65b14c04e9ff711034703604
Which when blocking will only block that page’s iframe and leave all the others appearing on other pages.
So to block the iframe properly, we have to use a wildcard, which normally would be *, meaning that
###comment_iframe_*
Would be blocked, however that doesn’t work since Adblock, Ublock etc use CSS selectors, so instead we have to use
##[id^="comment_iframe_"]
Which allow us to block everything after “iframe_”.
So my Youtube channel got banned about three years ago, I had that channel for almost 17 years but ever since their automated system for copyright filtering, even uploading the same video split into three parts counts as three strikes and like that my channel was gone, no chance to recover, no appeal process. After uploading tutorials to the community for free, with some of them over 1 hour long and half a million views, the channel was gone.
To my surprise, 17 years of videos is quite a lot and some of these tutorials I did date back to 2008, in a way I used youtube as a tool to teach for free and also to keep a track of my progress along the years. So no backups were made as I changed countries quite frequently.
Finding no option but to contact the copyright owner without response left me in a limbo until a few days ago that I found out this.
You can request a google takeout for your youtube content, even when you cannot login to youtube!!!
The trick if you wanna call it that way is to never cancel your google account, make sure you didn’t request a youtube account removal either. Also this works for those channels where the Google Takeout removed the Youtube option.
Found this great tool to toggle the display for your Cintiq/Intuos in case you don’t have a EK Remote or an available shortcut command for switching your display.
Portable utility for Windows and Wacom. Provides a keyboard hotkey to quickly toggle between display mapping on your Wacom Intuos or Cintiq. For three or more monitors, gesture-based toggling is available.
Change Target Monitor:
Hotkey which toggles tablet mapping between two monitors. For three or more monitors, it will activate the monitor in the direction you’re moving the pen. It also allows you to easily drag windows across screens.
Toggle Full Coverage:
Hotkey which enables and disables Full-mapping, where all monitors are mapped to the tablet at once.
This application is built using Autohotkey. https://www.autohotkey.com/
The download includes the autohotkey-script file, and a compiled .exe-file for portability and does not require any installs to run.
License
Released under Open-Source GNU GPLv3 license. You are free to copy, distribute and modify the application under the condition it remains open-source and you document the modifications.
Configuration
If you wish to use the windows-key in a hotkey, check “WinKey” before assigning the hotkey, or else it will not be registered. You will need to restart the application for the hotkey changes to take effect.
If having more than one Wacom device connected, you may specify separate hotkeys for each device. Otherwise use the “default” hotkey option, which will target the first device listed.
If using more than one Wacom pen, you may specify which pen is affected by the tool. If left blank, it will target first pen listed.
“Ignore vertical mouse movement” disables measuring vertical cursor movement, to avoid the tool accidentally reading an “Up” or “Down” gesture when accidentally gesturing diagonally.
In monitor settings, you write the number-ID of the display you wish to toggle to for each direction of cursor movement registered by the script. The “force”-direction will bypass any movement detection, and toggle to the specified monitor regardless of pen movement. This is best used for setups with only two monitor, or for side-monitors with only a single neighbor.
If your monitors are configured like this: [#3] [#1] [#2] I would suggest the following settings:
Autostart
If you wish to have this application start automatically when you login to Windows, you can make a shortcut and add it to the Startup-folder.
Create a shortcut by right-clicking the exe-file, and click “Create Shortcut”. Open the Windows Run window by pressing WindowsKey + R Type in “shell:startup”. The startup-folder should pop open, copy your shortcut-file into that folder.
Researching for other project stumbled upon this (seemingly) great piece of Management software.
https://rxlaboratory.org/tools/ramses/
▹ Production Planning
Ramses helps you easily plan your production, and estimate how long you’ll need to produce your project.
For each shot and asset of the project, you’ll be able to (automatically) estimate how long it will take to produce, and Ramses will keep track of all estimations for you so you can plan accordingly.
At any time, Ramses can tell you where you are in the production, how late (or not) you are, and warn you if something’s going wrong.
You can always keep a close (or overall) look at the production, and check which assets and shots are longer or shorter to produce, and the state in which they are at any time.
In combination with the Ramses Add-ons which integrate Ramses in your favorite creative software, Ramses is able to automate your pipeline, managing the versionning of the files, the exports, imports and all these manual tasks a robot could do for you.
An example: the Autodesk Maya shelf of the Ramses Maya Add-on.
With a nice and modern nodal view, it’s easy to design your pipeline, connecting each step and setting how the data should go from one step to the other. All this information will be used both by the Ramses production tracking algorithms and the Add-ons to help you focus on your real work: creation.