Advanced 2D VTuber framework powered by SAMMI!
Current Version: 0.20.0
Please keep in mind this is a beta release, and is not expected to work correctly under certain circumstances. You can really help out by reporting these bugs via
Direct Discord DM: Landie#0038
Email at firstname.lastname@example.org
Help! I'm new to SAMMI, and I want to use this! What do I do?
Please check out this quick video I made to help newcomers get SAMMI set up with the bare minimum they need to use this extension!
What is this?
"LandiTube" Is an advanced, easy to use PNGTuber engine built from the ground up using SAMMI over the course of a half year of constant development. PNGTuber software seems sparse, while other Vtubing related softwares seem to be targetting the 3D audience.
I'm here to change that.
What does this offer that other engines don't?
- Infinite Models ♾️
- Infinite Random Talking Poses ♾️
- Infinite Random Idle Poses ♾️
- (WIP ⚠ ) Infinite Random Yelling Poses ♾️
- Squishiness 200% 💚
- Special filters set so only your voice comes through! No more keyboard-activated tubers... 🎤
- Hotkeys, or no hotkeys! You can set up a command to change an emotion directly! 🔧
- Built using OBS Image Sources, so your PNGs will look crisp and have no artifacts! 📸
- Not a separate window. No silly green screenies 🔪
- Easy to use, dynamic folder structure designed to be responsive, and intuitive 💡
- Drag n' Drop files, hit refresh, and everything just works! 💡
- Use any OBS Image Source supported Image Format you want! .PNG, .GIF, .APNG, and more.
- Use ANY OBS Source as a component in your PNGTuber (More on this further down). 🤯 <-- thats u
- Dynamic web interface for development and config purposes, indepth yet easy to understand and navigate. 💡
- Blinking for every type of pose (that's expected :3) 🙄
- (WIP ⚠) Set custom blinking intervals per emotion
- (WIP ⚠) Custom transitions between emotions
- Actively being updated to add new features out of passion and respect for those who love this engine just as much as I do 🔧💚
- Its Free. No commitments, nothin!! This was commissioned a long time ago by the wonderful and generous Jessyabeb! Without her, I would've never had the motivation or courage to set out and code something this massive to share with the world. 💚
And now for the Big 2 Features. First up...
Full SAMMI Integration and Public API
A vast amount of engine data is available to you in the form of "Pull Data" from "Extension Triggers", such as:
||boolean||Current blinking state|
||string||The current set expression of the active model|
||string||the current image path compiled together using
||Array||An Array of the current model's idle poses (not including blinks)|
||Array||An Array of the current model's talking poses (not including blinks)|
||string||The current state's file extension to be used in conjunction with
||string||The current active model|
||string||The current active state of the model. This the result of various impacting factors such as yelling, blinking, talking, and randomly drawn poses|
||boolean||Current talking state|
||boolean||Current yelling state|
All of data is sent to you in the form of these extension triggers:
||triggers a button when the character starts talking|
||triggers a button when the character is finished talking|
||triggers a button when the character blinks|
||triggers a button when the character is done blinking|
||triggers a button when the character yells|
||triggers a button when the character is done yelling|
||triggers a button when the model is changed from the current active model|
||triggers a button when the model is changed and matches a specific model|
||triggers a button when the emotion is changed from the current active emotion|
||triggers a button when the emotion is changed and matches a specific emotion|
_Woah woah woah Landie slow down!! I don't know how to use this!_
That's alright! No SAMMI knowledge is required to get up and running with this engine. however, if you want to capitalize on this amount of freedom and take your PNGTuber to the next level; SAMMI is an incredible, easy, and fun software to use to build your dream stream projects (no coding knowledge needed at all! thats how i started!). You can get started by reading the documentation Here! if you want to learn more about whats coming up next...
What are you supposed to do with this info? Well, thats where the second huge feature comes in...
Full OBS Source Layering System
Are you a TV Head PNGTuber and want your tv head to display twitch alert info?
Are you a furry PNGTuber and want your tails to move a random direction everytime you talk?
Maybe you want to add sunglasses to your character, but don't want to have to export every image again, or have it only work on one emotion?
Maybe you want your model to have a gamepad display that accurately displays your controller's inputs?
Have you ever wanted your PNGTuber to actually interact with your OBS Setup a bit more? Thanks to the foundation of this engine that is SAMMI, you can do just that, and so much more.
This data can be used to create your own rendering engine, ontop of the default one shipped with this extension (to be changed in 1.0.0)!
"Landie thats a big word..", All it means is that you get to decide how certain OBS Sources behave, and interact with the PNGTuber Engine!
Here are some examples i quickly whipped up:
- Rotate an animated image source of my character's tails everytime my talking state changes!
- Have this live-updating image source of chat's emote, move a specific way based on what pose I have!
- Move this text source slightly when I talk!
- Gamepad overlay that matches my real inputs!
Those are just some examples of what is possible with LandiTube! All of this is possible, and so, so, so much more! The possibilities (and I truly mean it, not some overhyped thing) are endless!
Oh yeah, and two new SAMMI commands:
- LandiTube: Change Model
- LandiTube: Change Emotion
but i'm sure you suspected as much :3c
What are you waiting for? Check out the Setup page for prerequisites, and download!
💚IT'S HERE!!!! Lights, Layers... Transitions!— Landie (@Landie__) July 9, 2023
LandiTube 0.20, my 2D VTubing framework built with @sammisolutions, is OUT!!!
150+ HOURS put into this update, all for free! Easier installation, .veadomini importing, and SO MUCH MORE.
FULL PATCH NOTES AND DOWNLOAD BELOW 🔽 pic.twitter.com/wVzgeTLgmL
💚PNGTUBER ENGINE UPDATE (LandiTube)— Landie (@Landie__) February 12, 2023
Yelling Poses, Native OBS Source Layering, rendering rework, and so much more!!
Tutorials for some things going up tomorrow hopefully!!
Thank you all for making this project something I cherish a lot!
Links below! 🔽 pic.twitter.com/1HeQ0APbQG
💚 I Made an advanced PNGTuber Engine usong SAMMI!!— Landie (@Landie__) January 11, 2023
- Infinite RANDOM talking poses
- Infinite RANDOM idle pose
- OBS Source layering system
- FULL SAMMI INTEGREATION AAA
-more on the product page!
half a year in the making, thx for 700 follows!
Download below!!!! pic.twitter.com/KEI5HAIiDL
Here is a video demonstrating the entire installation process, including prerequisites, and SAMMI install. This is an updated video for 0.20!
⏬ Prerequisites (Get these first!)
These are Required for this extension to work, Prior to installation.
- Make sure you have the prerequisites installed first
- Download "LandiTube" .sef file from the download button above
- Connect OBS (refer to help video in overview if unsure)
- Connect the SAMMI Bridge (refer to help video in overview if unsure)
- Install the .sef file via the left hand side menu of the "SAMMI Core" via clicking the bridge button, then clicking "Install an Extension".
- Follow the installation steps provided on-screen!
- Afterwards, you should be all set for installation! To set up your first model, please go to the Tutorials tab!
Install the .sef as you would normally, and allow the deck to be replaced. Easy as pie! (why is pie easy? who tf came up with that term is baking ever actually easy??? im going to pop a vein)
Setup + Installation
Making A Model
Import veadotube mini Model
Welcome to the helpdesk!
Sorry you had to come here, I'm trying my best! Check out the sidebar to see if there is anything related to the issue you're experiencing!
I Keep getting yellow messages telling me that I need OBS scenes, what?
Please refer to the setup tab to install your OBS scenes using the Source Copy OBS plugin.
Whenever I startup SAMMI with LandiTube installed, it takes FOREVER to load and sometimes crashes
Make sure you have your Local API enabled in the SAMMI settings, as per instructions from installing the "Folder Reader" extension.
Do not set a password!
I made a model folder, but i can't find it in the bridge!
Make sure your model folder is located in
Make sure to select it in the bridge afterwards!
I added my emotions inside my models folder but when i refresh nothing happens!
You need to make an "emotions" folder inside your unique model's folder first, and make your emotion folders within there. Common mistake!
Make sure to select at least one emotion once you set them up.
One of my model's poses is huge, and not aligned properly!
0.14.6^ use a dynamic source creation process to add your poses, and sometimes things happen during that process and don't get created properly!
Thankfully, this is an easy fix!
- Head over to the
[LandiTube] Default Rendererscene
- Locate the problematic source (to locate, look for the problematic source that has the model name at the beginning emotion name in middle, and pose name at the end for easy finding.
- Delete the source!
- In the bridge under the LandiTube tab, click "Refresh Models"
- Give it a moment to regenerate the missing source, and see if it fixed your issue!
If the issue persists even when deleting the source, try it again, as it's a rare bug! once its fixed, you should never have to touch it again unless you remove the model!
I can't change the settings, I already have OBS Connected!
Try restarting SAMMI. This is common on first installations, and I'm still tracking it down! Restarting SAMMI should fix this no problem c:
My voice isn't being picked up!
There might be four things causing this:
Input device not set
- Head on over to the bridge, click the "LandiTube" tab.
- Click the "Input Source" dropdown button to select your input device!
If you don't see your device there, or, you select it and nothing changes, check the below issue!
Move Transition OBS Plugin not installed
- Head on over to the Move Transition Download Page
- Make sure you are downloading 2.8.1 or higher!
- Close OBS, install, and re-open OBS.
- Reinstall LandiTube if nothing fixes right away
Voice Threshold is too high
- Head on over to the bridge, click the "LandiTube" tab.
- adjust the "Voice Threshold"
Weird SAMMI issue
Sometimes, SAMMI breaks when reading an OBS source and is unable to get the visbility state that is being constantly changed. Heres what to do:
- Head over to SAMMI's "OBS Connection" settings and Disconnect, then reconnect OBS.
- This should fix your issue, if not, try one more time, then let me know you're still struggling. It works eventually, and once it starts working after install, i've never had a problem with it happening again :3c
Delete OBS Scenes, reinstall Scenes
Rarely, upon installation move transition will fail to pick up any input (discovered thanks to PixelGourmet) and the solution is to reinstall the scenes a specific way!
- Delete all scenes with the prefix "[LandiTube]"
- Disconnect SAMMI from OBS in SAMMI's "OBS Connections" menu temporarily
- Reinstall scenes from "LandiTube Scenes.json"
- Reconnect SAMMI to OBS from "OBS Connections" within SAMMI
- Change the input device of "LandiTube Voice" located in the scene "[LandiTube] Model Movement"
- Hopefully everything is good?
If you don't see your device there, or, you select it and nothing changes, check the below issue!
I cant select my input device, or, I selected my device and nothing is happening!
Unfortunately it looks like i suck, and the interface i made for selecting your input source doesn't work right.
There is a way to fix this, but its a bit more manual! follow these steps:
- Head over to OBS, and check out the "
[LandiTube] Model Movement" scene.
- Click on the source "LandiTube Voice", hit properties, and change it to your input device.
- Afterwards, if nothing happens when you speak, enable and disable the LandiTube Voice source. This should work!
NOTE: This is an insurmountably VAST update that essentially makes this an entirely different extension. The patch notes were mades based off of memory, as I wasn't making it during the patch process and only after it was complete.
🔊 NEW MODULES:
- ✨Transitions, allows certain modules of LandiTube to have transitions. Currently only supports transitions between emotions. Read more about it in the documentation!
- ✨Dynamic Transitions, allows certain modules of LandiTube to have transitions based on module factors. Currently only supports dynamic transition "outros" and "intros" between emotions. read more about it in the documentation!
- ✨Dynamic Lighting, set a scene to be referenced to enable global lighting of certain modules such as models, transitions, layers, and custom sources in the
- ✨Dynamic Rim Lighting, set a scene to be referenced to enable global rim lighting of certain modules such as models, transitions, layers, and custom sources in the
[LandiTube] Customizescene. change the direction of rim lighting aswell!
- ✨Model Importing (veadomini), Import a model from veadotube mini (not associated with LandiTube) and get started with LandiTube sooner if this isn't your first time with a 2D Vtuber!
- ✨OBS Source Layering v3, putting this here because nobody used layering due to lack of tutorials and tedium, so here is a way more polished version of obs source layering! comes with a front and back layer, set the layer's scene reference in the Bridge, manipulate auto-generated layer poses within OBS! check documentation and tutorials for more.
- ✨Backups, yay! Currently only supports backing up but no restoration yet. Dedicated Backups tab exists in bridge where you can manually backup if you wish, or, landitube will back up automatically after every full day and stores up to a max of 5. Stores all models and their graphics, configs, etc
- ✨Twitch Integration, currently only asks to add the "LandiTube" tag to your stream and how to link twitch to SAMMI, more will be done with this in the future.
- ✨Logger, reworked the entire codebase to log out at certain points to
landitube.log, located in
(SAMMI INSTALL)\Landies_Extensions\LandiTuber\landitube.log. Will be extremely useful for troubleshooting on my side and the end user side.
- ✨Automatic OBS Plugin Installer/Checker, detects missing or out of date obs plugins which then are automatically installed for you. failsafe of opening download link for you to download and place .zip in a special folder to auto install aswell
- ✨Automatic Bridge version checker, checks bridge version to ensure up to date version.
- ✨Automatic SAMMI Extension version checker, checks required SAMMI Extensions to ensure versions are up to date.
- ✨.fenc Config Files, used to tweak individual poses/emotions/models to interact with LandiTube modules independantly instead of globally. Current instances of usage:
- Global Transitions
- Dynamic Transitions
- ✨Custom WPF/WinForms Windows, finally LandiTube looks more like your other programs when prompted with windows! Enjoy pretty, informative, and efficient popups whenever the time arises!
- Twitch account checker, asks to link twitch on startup
- "OBS Source Layers" tab
- OBS Source Layers configuration
- moved "Poses" into OBS tab, renamed to "Pose Selector" for OBS Source Layer editing
- QOL: Progress bar to indicate where you are in the refresh/validation process
- Version check in Bridge thanks to SAMMI Bridge's version 7.20 changes that have built-in version checking
- QOL: OBS Progress bar to indicate where you are in the refresh/validation process
- anti-tamper to
[LandiTube] Layers *, deleting any user-made sources and pointing to tutorial
- auto-refresh scenes in layers tab upon scene rename, creation, and deletion
- trying to go to the
[LandiTube]scene sends to
[LandiTube] Customizescene to point in right direction for custom assets
- Added more movement scenes for future integrations (shhH!)
[LandiTube] Transitionsscene, this is where all future transitions will be generated!
[LandiTube] Render + Layersscene, to accomodate for new modules such as transitions and dynamic transitions.
- OBS Scenes version updated sv1.0.0 -> 0.20.0
- Added new required obs plugin "Source Clone" by exeldro
- Added new required obs plugin "obs-shaderfilter fork" by exeldro
- Added new required obs plugin version "Move Transition 2.9.1" by exeldro
- Added new required obs plugin version "blur" by prgmitchell
- Added new LandiTube Globals for internal use:
- Added corruption checks to OBS auto lua script installer
- Added a placeholder question mark when validating install/refreshing models
- License is now embedded into .sef
- layer scene references are stored in a
- Moved input device to the top of the settings tab/area
- Added a check to "Refresh Models" to wait for validation to complete, preventing overlap
- Cleaned up unused functions in bridge
- Buttons have recieved icons
- Buttons have revised colors for better clarity
- Some sliders swapped to "oninput" instead of "onchange" for easier tweaking
- OBS Source Layering has been changed to make layer data automatically generate, so user just has to align to their liking, as well as revamp pose selector
- OBS Auto lua script installer changed to make use of buffer positions, and accomodate for OBS 29.1's new prettified scene collection json. Changed detection method for default/portable installs, making it 100% reliable in every use case
- Asset generation, now downloads from a dropbox link to prevent deck bloat, slowing down SAMMI editing drastically. installCheck now waits for assets to be generated via checking
- Command Line integrations, using SAMMI 2023.2.1's new Command Line command to make LandiTube more snappy and efficient
- freeze/unfreeze engine reworked to be slightly more reliable to not have to click twice, edited to synergize with obs source layering, locks layer sources for easy manipulation
- OBS path fetcher now uses Sando command to handle fetching path, much better
- Changed renderer to solely rely on Source Toggler lua
- OBS Plugins/Lua install pushed to separate button, triggered via extension trigger
- Changed the way actions are read with the
DevLandiTuber settingsinternal extension trigger, opting for an array split
- Scene collection json file detection method, no longer based off filename but rather the scene collection name stored inside the files themselves to determine proper file
- Changed the string for installing lua scripts due to obs 29.1.1 messing with it
- No longer reruns entire validation process when closing obs for auto lua script installer
- Install validation and "Refresh Models" button triggers a queue chain instead of running each funtion at the end of each function, for easy rearrangement + stability
- Ensure obs plugins are installed before attempting to install scenes/sources
- Scene packer installation now runs twice
OBS now auto-reopens properly and doesn't get stuck in system tray
Fixed unable to find scene collection json path
Fixed unable to add lua script, causing an install loop
Fixed OBS missing the "squish down" filter on obs sources and scenes installation
Fixed being unable to use multiple file formats together on one model
Fixed setting a new model or emotion causing an entire validation check each time
Fixed unable to find OBS path
Fixed install button interrupting validation checks
Fixed obs path not escaping linebreaks when loading from
settings.ini, causing a broken obs path
Fixed not waiting for OBS to be fully closed, uses
tasklistto check obs close status
Fixed a niche cache involving deleting an active emotion
Fixed an infinite refresh loop
Fixed landie not getting their proper amount of sleep
Fixed issue with bridge being disconnected mid install
Fixed model loading without any visuals at random times
Fixed flickers present with layers
Fixed layer references sometimes being forgotten (thanks layers.ini!)
NEW: Added .mp4 support
NEW: Added .ts support
NEW: Added .mov support
NEW: Added .flv support
NEW: Added .mkv support
NEW: Added .avi support
NEW: Added .webm (VP8) support, allowing efficient, high quality, alpha supported (semi-transparent, transparent) video to be used as poses! basically the better .gif!
REWORK: Changed the auto lua-script installer for a new one that is far more stable
REWORK: Changed the way an input source is changed via bridge
NEW: Added SAMMI Command "LandiTube: Change Vertical Smoothing"
NEW: Added SAMMI Command "LandiTube: Change Vertical Squish"
NEW: Added SAMMI Command "LandiTube: Change Horizontal Smoothing"
NEW: Added SAMMI Command "LandiTube: Change Horizontal Squish"
BUG FIX: fixed input source never changing properly
BUG FIX: fixed lua installer infinite loop
BUG FIX: fixed OBS installer infinite loop
REWORK: Filter settings saved differently, updates no longer overwrite custom settings
REWORK: OBS Source Layers have been Entirely Reworked, natively built into LandiTube, no need to touch SAMMI! tutorial in the coming days!
REWORK: Rendering has been Entirely Reworked, dynamically generating image sources for every pose that exists in the models folder.
NEW: Yelling poses! add "_yell" at the end of your pose file's names (before _blink) to set a yelling pose!
NEW: Yelling threshold slider in config to display yelling varient of a pose!
NEW: Yelling delay slider to determine how long the yell pose is displayed on stream after falling below yell threshold
NEW: Automatic LandiTube Scene and Source installer
NEW: Automatic LandiTube lua script installer
NEW: Automatic Scene Collection backup on lua install
NEW: bundled tool: gifdiff
NEW: bundled tool: gifsicle
NEW: bundled tool: ffprobe
BUG FIX: pose debugger sometimes not freezing on the correct pose
BUG FIX: active emotion being reset on update
BUG FIX: active model being reset on update
BUG FIX: setting input device in settings not taking effect
BUG FIX: fixed long model names looking awkward in bridge
QOL: Model icons size significantly decreased
QOL: Model icons formatted differently to not stretch across screen
BUG FIX: Fixed the command
LandiTube: Pause Enginenot properly working after backend rewrite
BUG FIX: Fixed the helper "Poses" list in bridge not properly working after backend rewrite
BUG FIX: Fixed .gif files not properly working after backend rewrite (devnote: might need extra edits)
BUG FIX: Model no longer squishes if there is no blink frame for current state
BUG FIX: Model no longer squishes during blink while talking
NEW: LandiTube Data addition
current_state_has_blink! with every extension trigger, get a boolean (true/false) if your character can blink!
QUALITY OF LIFE: Refresh time significantly reduced
QUALITY OF LIFE: Model swapping is now instant!
BUG FIX: "Input Device" being reset on reload
BUG FIX: "Input Device" devices sometimes not showing up in bridge
BUG FIX: Prevent invalid emotions or models to be loaded via
LandiTube: Model Change, and
LandiTube: Emotion Change.
BUG FIX: Fixed certain devices causing a crash due to special characters
BUG FIX: Fixed crash for certain common special characters being in the name of Models, Emotions, and Poses
NEW: Rewrote entire backend. my head hurts.
NEW: Fixed clipping of buttons on small bridge sizes
NEW: Added Dropdown: Voice Meter Type
NEW: Added Slider: Voice Delay
NEW: Added Slider: Vertical Easing
NEW: Added Slider: Vertical Squish
NEW: Added Slider: Horizontal Easing
NEW: Added Slider: Horizontal Squish
NEW: Added input boxes to all sliders for precision
BUG FIX (MAYBE): Attempt to fix "Input Device" dropdown. If this still doesn't work, refer to the troubleshooting section to select your input device manually c:
BUG FIX: Fixed documentation link in the bridge being literally blank
BUG FIX: Fixed clipping of buttons on small bridge sizes
BUG FIX: Update banner takes you to patch notes screen with download button now and not the same place...
BUG FIX: Now the deck is ACTUALLY fixed my bad :3
NEW: Poses section dividers: separated between idle, and talking poses
NEW: Poses section button: "Resume Engine", resumes the rendering engine from a frozen state for use after clicking a pose button to restore function
NEW: Poses section button: "Toggle Blink Frames", allows you to freeze blink frames in time aswell (displays nothing if a pose has no blink counterpart
NEW: Poses section button: "Open Emotion's Folder", to go to where poses are stored for the current model's emotion!
NEW: Poses section: click a pose to freeze in time to align your layers!
NEW: Revamped emotion list layout, uses full width rows for easier clicking
NEW: Added "LandiTube: Pause Engine", stop the rendering engine in it's tracks!
NEW: Added "LandiTube: Resume Engine"
BUG FIX: Fixed crash on SAMMI deck load, your deck is alive again!
TYPO FIX: Changed command names from "LandiTuber" to "LandiTube"
BUG FIX: ok i didn't actually fix it last update so get bamboozled its fixed now
BUG FIX: Update link was brokie oops my bad
Initial Beta Release 🎉