Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

RahiTuber

A lightweight yet highly customisable pngtuber app · By rahisaurus

Discussion Sticky

A topic by rahisaurus created Jul 31, 2024 Views: 1,117 Replies: 55
Viewing posts 1 to 20
Developer

General discussion

Developer

Hi folks, i decided to switch to a forum-style comments section to keep things a bit more organised.

What I didn't realise is that it wouldn't give me some way to keep the existing comments.  I'm really sorry i think they got wiped!

Developer (2 edits)

Bit of inspiration for anyone who wants it! Here's me making an animated tomato prop that chat can throw at me.

https://x.com/rahisaurus/status/1823710323758785008

Hey,  I might have missed it but do you have a text tutorial anywhere? 

Developer(+1)

Sorry, not yet. I'll try to make one soon!

Developer

I've added a basic one to the "Tutorials" topic. I'm working on the others now!

Is there a way to set up a pngtuber for someone on discord? I'm new to the pngtuber scene and I've been loving using this for myself, but I'm wondering if it's possible to have it set up so one pngtuber is for me and one pngtuber is for someone i'm talking to on discord (or possibly multiple people on discord)

Developer(+1)

If you can find a way to route discord's audio into a new virtual audio input device, it should be possible. There are a few virtual audio loopback device drivers out there, it might be tricky to set up though.

Right, I'll have to look into that then, thank you!

Developer(+1)

To run two instances of RahiTuber separately, i would suggest copying the program to a new folder. That way the copy can save its own config settings (like the most recent layer set, microphone, screen position etc).

The "name windows separately" option will also be necessary to keep your screen capture software from being confused. 

Hope it works!

Makes sense, thanks again!! ❤️❤️

Is there a system like T.I.T.S that you suggest that works with Rahi the best? I have seen a lot of different types of ones out there like TITS, Kbonk and things like that but there's always work arounds for being a PNGtuber 

Developer(+1)

I haven't personally tried any of them, but if they require specific integrations into RahiTuber then I'm afraid you're out of luck (for now).

So far, the best you can do within RahiTuber is to set up some animated throwable layers and States to trigger them, and have the animation restart each time it's triggered. There's an example of this here: https://www.twitch.tv/rahisaurus/clip/BoxySillyElephantFUNgineer-v64GflXI_DC5BMk-
If the throwing system lets you trigger a keypress or send a web request after something is thrown, then you can set that up to trigger a state within RahiTuber.

(-2)

I dont understand these UI choices at all. Are you unable to choose where things save? Is there a particular reason this program doesnt interface at all with the Windows Explorer or standard elements like a title bar and X button? Why is there no "new" button instead choosing to just type a title in. This program has a lot going for it but is held back by seemingly purposefully choosing to make a UI as difficult as possible for a random user to come in and understand. A program as simple as this should not require a tutorial for basic functions like file navigation.

Developer(+3)

The general idea was that you only need to worry about the layer set name, and it gets saved to the folder where RahiTuber is installed. 

You're welcome to type in a file path before the layer set name if you wish. 

I avoided using windows's file browser to make it consistent with the rest of the UI and across platforms. 


I may add an option to use more traditional file browsing methods, if more people speak up about it.

Developer

Hopefully the new update https://rahisaurus.itch.io/rahituber/devlog/887394/update-2025-02-14-v131 is somewhat helpful.

(+1)

I love your program
I LOVE IT
Thank you so much for updating the pivot points it was the only thing stopping me from switching over.
Thank you for making such a fantastic tool! I'm excited to see any future updates!

Developer

Thank you very much, it's so appreciated!

Heya! Sorry if this is the wrong place to post about this, but I've been trying to dig around & follow the tutorials, but I'm having a bit of a weird problem.

I may have done this wrong, but I'm having an issue where my mouth is in the correct position while idle, but when I talk, the open mouth image is way to the side. The files are the exact same size for both closed and open, and normally line up right on top of each other. 

I've tried messing with the individual motion settings, adjusting the open mouth image file itself to compensate and then updating the layer files, but nothing seems to work, it always goes to the same off-center position. Any suggestions?

(I tried to attach screenshots but the post wouldn't let me so lmk if you need any to see what I mean)

Developer

Things to check: 

  • Does talking motion have any X movement value? 
  • If you click the animation settings for the idle & talk sprites (the small film clip icon), do they both have a the same frame size, and a number of frames that make sense?
  • Is this a new layer that you've created since the last update, or is it carried over from an older setup?

If you like, you can send me your layer set.xml file on discord (@rahisaurus) and I'll take a look.

Thank you so much!!

  • I did try to mess with the Talking tab in the Individual Motion section, as there is a value in movement, but it didn't seem to change anything so I reset it
  • Since this isn't on an animation loop, just a swap between two images, I didn't mess with that BUT I did check and yes they do have the same values between Idle and Talk
  • It was happening on the original layer I made, so I deleted that and made a new one, but it has the same issue, I assume because I didn't fix whatever was actually causing it in the first place but I ran out of places to think to look haha

I sent a friend request on discord (same name as here) if you don't mind taking a peek! I really really appreciate your help in all this, thank you so much again! ♥

Developer(+1)

To anyone finding this thread - the issue was that the two sprites  for Idle and Talk were not exactly the same size. Because the pivot point for each sprite defaults to the middle (and is aligned with the size of the Idle sprite), they didn't line up in RahiTuber.

I should probably add to the documentation that the Idle/Talk/Blink/Scream sprites must all be the same size if you want them to align.

(1 edit)

Hello! I was recently introduced to your program and was curious because I heard there was mouse tracking! I've been trying to poke around the program, and look for tutorials on this, but I might be blind.  What should I  be looking at to set up mouse tracking? 

Developer

Hi, welcome! You can find the mouse tracking settings under each layer's Transforms section, and there's an overall toggle for it in the advanced menu. 

A friend of mine (cringedevil on various platforms) is working on some very nice in-depth video tutorials so I'll post those here when they're done!

Thank you! I'll keep an eye out for the tutorial!

I've been playing around with this program and I love it! my weak laptop appreciates this, lol

I noticed that you can't put folder inside another folder, I wonder if there's a workaround for this? While it doesn't bother me (yet, because I am using simpler model), some organization would be nice xd

Developer(+1)

Hi, the ability to put a folder inside another folder severely complexifies the folder positioning logic in the menu, and I haven't had time to get that working yet. For now, it's intentional.

You can probably force a folder to be inside another folder by editing the XML file for your layer set, but that's completely untested, so meddle at your own risk! 😅

Hai! First of all, love this software and you've done an excellent job with it! How hard would it be to add a delay so that when sound ceases, there's a small window before it snaps back to idle? My png swings it's big ole head around to talk, and staying "forward" facing (aka, talk position) is optimal between short pauses/breathes even if no sound is being transmitted during that short period before I start talking again. Sorry if this already exists and I missed it! 

I think "Soft Fall" (in Audio Input settings, right below the layer manager) is what you're looking for 😉


(+1)

it is!!! I'm still new to 'tubing, I didn't realize that's what that term did. Thank you!!!! 

Hi hi! Love this program so far!  There so much you can do here. My mind was blown when I really got into it. I've been messing around with it a bit in OBS and I noticed the mouse tracking no longer works if you're playing a game. Is there a way around this? Or not yet? ^^ Thank you for your awesome amazing work♥ 

Developer

Hi, if RahiTuber can't see your mouse position then one of two things is happening: it doesn't have permission to see it (running it as administrator might help), or the game is taking control of the mouse movement and modifying it before RahiTuber gets to see it. Unfortunately, as far as I know, there's nothing else I can do from my end

I already run it in administrator mode but I'll try a third party software to see if I can get multiple programs to register my mouse.
But I ran into another problem. I opened it today it was sized waaay too big and when I tried to make it smaller it got bigger. And every time I try and make it smaller it gets even bigger to the point I can't even see the end points to resize it T^T I couldn't even use the program anymore because of it. I couldn't even click on the help menu because it pops up somewhere I can't see or access and I have to alt F4 the program just to close it. Then I found out it was because was on a monitor that messing with the size. I got back down but it glitched and I guess it got too small? and wont open at all anymore. It says its open but I can't see it on my screen anywhere. Nor am I able to click it.  I don't know what I did but I broke it I'm so sorry T^T Would an uninstall and reinstall fix it?

Developer (2 edits)

Is this in the latest version? I did fix a similar bug in 13.5.

 I've been trying to get it to handle monitors with custom scaling (i.e. in your system display settings, each monitor has a scale option) but it's a bit tricky since i can only test with what I've got.  I have been testing it with different monitor scales but mine only go up to 175%. 

You don't need to reinstall to fix it, if you delete config.xml it will get recreated with the default values, including window size.

YOU. ARE. AWESOME. Thank you it is fixed! and Yes I had updated program (but will be doing the next one now ^^) I think the problem with sizing was my third monitor is a 55in TV ^^;; Thank you again!

(+1)

Hello! I was playing around with RahiTuber earlier and really love the functionality, you've made a really fantastic program. I have a potentially niche case where my eye layers are rigged in a kind of silly, complicated way, and wanted to see if there was an existing solution I hadn't puzzled out before merging layers and losing some motion.

The short question: is there a way to link the blink states/frequencies of separate layers without setting the Variation to 0?

The longer explanation: I have my avatar's eyes set up in several individual layers for eye whites, irises, and outlines. In my current program, the irises are clipped to the whites and in order to enable a smooth, idle back-and-forth motion on the X axis without the irises sliding out of bounds. The outlines are also clipped to the whites, layered on top, and they all disappear on blink, showing just the closed-eye state as you'd expect. When I tried to replicate this in RahiTuber, the layers decided they all wanted to party on their own individual blink cycles, which was not quite what  I intended.

If the solution is to set the Variation to 0, then reload the model so the animation syncs, that makes sense! I just wanted to check if I'd missed anything super evident. Side note, is there a way to mask child layers to parent layers? If not, no big deal.

Hopefully that all made sense. If you need further info or anything, please let me know. Thank you for all your hard work!

Developer(+2)

Hi, there are a few ways to make sure things sync up. For both,  you need to set up a State which has a schedule, and this will serve as your new "blink" timer. You'll need to put your blink sprites on separate layers to the open eyes. 

Then you can do one of the following:

  • Use the state to hide each open eye layer and show the blink ones individually.
  • Add all the blinks to a "blink" folder and add all the open eyes to an "open" folder, then use the state to hide/show the folders.
  • Create two empty layers instead of folders, and add them as motion parents to the blinks/opens, then use the state to hide the parent layers.

Unfortunately there's no way to clip to a specific layer yet, but I'm brainstorming ideas for that right now :)

(+1)

Oh that's such a clever list of  solutions, thanks so much! I'll test those out next time and see which works best for me.

And really no worries about the clipping, I wish you luck in implementing it! :)

(+2)

I made this "Powered by Rahituber" Twitch Panel. Feel free to use and share 😉

Rahituber_Twitch_Panel.png

Developer(+1)

Ooh, that's cool! Thanks!

this is awesome! May I use this name (NoTaMu)  to credit you for this panel? Or is there another name you'd like me to use ^^

There's no need for credit! 😄 But if you really want to, either NoTaMu or NotamuVic are fine!

Hey! I added you on discord as well. Currently the software doesn't launch (Ver 13.5 as there is no linux build for 13.51),
Getting some linux troubles software requires sfml-2.6 but my system uses 3.0.0.
I tried doing a symbolic link with the included lib files to no avail getting the following errors:

./RahiTuber: Symbol `_ZTVN2sf5ShapeE' has different size in shared object, consider re-linking
./RahiTuber: Symbol `_ZTVN2sf11CircleShapeE' has different size in shared object, consider re-linking
./RahiTuber: Symbol `_ZTVN2sf14RectangleShapeE' has different size in shared object, consider re-linking
./RahiTuber: symbol lookup error: ./RahiTuber: undefined symbol: _ZN2sf5Color5WhiteE
If you could lmk, (if anything) what im doing wrong or if this is a bug or what have you. If you need any further logs im willing to provide! Much thanks!
Developer

Hi, the lib folder included with the Linux build should include the necessary sfml-2.6 libraries. I'll message you on discord and we can figure this out, thanks!

Might not be the right place for this, but I am fiddling with Rahituber and it looks to me like you can interact with states using http requests. Does anybody have a guide, or a link to one to how to use that function? I want to avoid using keybinds, cause I use Synergy to share a mouse and keyboard between my OBS PC and my gaming PC, and that passes all keys.

Developer (1 edit) (+1)

https://rahisaurus.itch.io/rahituber/devlog/861702/update-2025-01-03-v120-http-s...

It got slightly buried. I should move this to the tutorials page. 

The example shown is MixItUp but you can do the same thing with a "fetch request" in many automation tools. In addition to that guide, there are now buttons to help you copy the correct request in the states menu.

That is perfect, told me everything I needed to know to get it working! 


I am using Streamer.bot, and it works with the simple fetch URL command.


Your program is amazing by the way, thank you so much for making it and putting it out there!

Developer(+1)

Happy to help! ^^

getting set up, loving the app so far! there's a few things i'm having trouble figuring out if they're possible though.

  • mouse tracking seems to be based on the first monitor; is there a way to change which monitor it uses?
  • is there a way to make certain states exclusive? i'm using some states for expressions and i don't want multiple active at the same time (overlapping mouths get shown)
  • also is there a way to control other variables than visibility via states? i was hoping i could change head position slightly depending on expression without having to put in a bunch of duplicate layers

if any of these are out of scope that's fine, just wasn't sure if they're possible or not since the app has so many options.

Developer
  1. Mouse tracking co-ordinates are set to the center and extent of your main monitor by default, but you can move them outside of that. Co-ordinates are still relative to the main monitor to make it consistent in case you want to spread it over all of them. If you have "show layer bounds" on, move your RahiTuber window into the desired monitor and you'll see a little crosshair appear at whatever "neutral position" you've set.
  2. To make states exclusive like that, the only real way is to tell the state to hide all the other mouth positions you don't want showing up. You can either hide the specific layers, or hide a folder containing them. You can also make use of the "hide with parent" option in the motion parent setting. As long as you use "Toggle" or "while held", this will still be reverted when you deactivate the state. 
  3. I have been thinking of adding more than visibility to the states for a while, but it'll require an extensive rework. Sorry, i haven't got there yet!

I know we can map key combinations for states, but is there a way to do that with a controller?

Developer(+1)

If you mean controller button combinations, currently there isn't. I can look into adding that in future!

So I have Breathing animation that is tied to a blink so that the animation happens plays every 4 seconds. But when I talk, it can result in a stutter motion where I think it flits back and forth from my single frame Idle, to my blink. Is there a way to pause the blink while talking? Here is a demo of what I mean, hopefully it's clear enough.

Developer

Ohh, interesting setup! I think this is because i never anticipated anyone using the blink animation for anything long enough to persist either side of speech.

It's because if you have "blink while talking" disabled, then it will hide that blink sprite while your volume is above the threshold, even if it's still supposed to be blinking. 

If you don't mind the breathing happening during speech, an easy way around it would be to enable "blink whilst talking" and set that sprite to the same animation, and use the "sync" option in the spritesheet menu.

If you want to avoid that animation being played while talking completely, but still complete a "breath" that's already started, you can do it with a state:

  1. Place your breathing animation in a separate layer as the idle sprite. Motion parent to the original layer.
  2. Set the breathing animation to not loop, but then enable "restart animations on becoming visible".
  3. Set up a state to show the breathing layer. Set the timeout to be just a bit longer than the animation, and set the schedule to your desired blinking frequency. 
  4. Set the "trigger" mode on the state to be "while idle" and set your talking threshold there.
  5. Now the state will automatically trigger itself while you're not talking, showing the breath animation which will continue and finish without interrupting itself.

Thanks! Your directions and suggestion worked for me!