World’s First?! How to Build a VTuber Without Live2D: “SVGTuber”

React × TypeScript × SVG × MediaPipe — build a lightweight, resolution-independent VTuber entirely in code, no Live2D required. This guide walks through the full pipeline: landmarks → features → smoothing → SVG controls → OBS capture, with commented code you can adapt. Demo Video What This Article Covers Why SVG (SVGTuber)? Suitable for: Recommended Tech Stack 👉 Tip: Set refineLandmarks: true for stable iris detection, improving gaze and blinking quality. Example: FaceMesh basic options Overall Data Flow Webcam → FaceMesh (landmarks) → Features (blink/gaze/mouth/yaw-pitch-roll) → Smoothing/Clamping → React State → <Character /> props → SVG transform (translate/rotate/mask/shape) → OBS capture Step 1. Parts Separation & SVG Drawing Consistent stroke…

My 2025 Dev Journey: React Native, Flutter, AI Q-Learning, Supabase, and Beyond

my 2025 dev journey

Yo, listen up—here’s a story about how I’ve been building apps this year, one phase at a time. I’m BLUE Copper (Yuri Saito). Everything here started in this fiscal year, and each project became a stepping stone to the next.I want to write this down not just as a changelog, but as a story of how my tech stack grew and evolved. Phase 1: React Native Expo Garakta This was my very first attempt with React Native Expo. The concept was messy, unclear, and honestly just me trying to make something fun without thinking about App Store guidelines. Unsurprisingly, it kept getting rejected.But still—thanks to Garakta, I got comfortable with…

世界初?! Live2Dなしで作るVTuber「SVGTuber」の作り方

この記事の内容 なぜSVG(SVGTuber)? 向いている人 技術スタック(推奨) ポイント:refineLandmarks: true にすると虹彩(瞳)が安定し、視線・瞬きの品質が上がる。 抜粋:FaceMeshの基本オプション 全体像(データフロー) Webカメラ → FaceMesh(ランドマーク) → 特徴量(瞬き/視線/口/ヨー・ピッチ・ロール) → スムージング/クランプ → React State → <Character /> props → SVG変換(移動/回転/マスク/形状) → OBSでキャプチャ Step 1. パーツ分けとSVG描画 線幅を一定に保つ基本 注意:パス形状そのものをスケールすると「線」は維持できても形は潰れます。厳密に線幅を一定にしたいときは、縮尺で絞るのではなく形状バリエーションを切替えるのがベター。 Step 2. 顔の動きに紐づける(条件→効果がわかる設計) Step 2-1. 瞬き(左右独立・ウィンク対応) 条件:上下まぶたの距離 ÷ 目の横幅(正規化)効果:t=0(開)→1(閉)で上まぶた線を下げる。瞬き中は視線をホールドして黒目が暴れないように。 抜粋:開き具合の正規化 & ヒステリシス Step 2-2. 視線 条件:虹彩中心(瞳)から目の中心比を取り、[-1..1]にクランプ効果:eyeOffsetX/Y で黒目の位置を動かす。瞬きによるYのチラつきを抑えるため、瞬きが深い時は前フレームを保持する 抜粋:瞬き時の視線ホールド Step 2-3. 口の形(真顔/ V字形 / ▽形 /“お”) 条件(例) 効果 抜粋:開き量0..1 Step 2-4. 顔の向き(ヨー/ピッチ/ロール) 条件 効果(2D的な表現を重視) 抜粋:ヨー/ピッチ→顔オフセット Step 3. 髪の擬似物理(バネ・減衰) 設計意図 抜粋:最小のスムージング道具 Step 4. 呼吸(上半身の上下+肩の回転) 条件:周期トライアングル波(吸う/吐く)。フェイストラッキングとは関係なく、常に動き続ける効果: 抜粋:肩回転の下限を保証 Step 5. 上半身の傾き(“画面上の顔位置”ベース) 条件:画面上の顔X位置(ユーザーが画面の端に寄る)+ヨー角(少し影響)効果:最大±8°で上半身を傾け、体重移動の自然さを演出 抜粋:位置→角度 Step 6. 動きの安定化方法(clamp / EMA / dead zone / ヒステリシス) 抜粋:デッドゾーンの典型 Step7. UIとOBS 開発時のおすすめ設定 ブラウザUIにあると便利な機能 抜粋:UIトグル(グリーンバック切り替え) 配信への組み込み 先駆者様:Pose Animator の紹介と、SVGTuber との違い・使い分け 以上、SVGのみでVTuberを作る方法の紹介でした! Appendix(コードのダイジェスト) App.tsx Webカメラから取得した顔の動きを解析し、特徴量をReactの状態に変換してCharacter.tsxへ渡す中枢コンポーネントです。 components/Character.tsx App.tsxから渡された状態値をもとにSVGパーツを動かしてキャラクターの見た目を描画するコンポーネントです。「propsに何を渡すとどこが動くか」が要点です。 変数・状態の一覧 App.tsx(入力→特徴量→状態)…

15 Simple Actions You Can Take to Make the World a More Peaceful Place

15 Simple Actions to Make the World a Peaceful Place

*Note: This article is a slightly edited version of content originally published on my previous blog (which has since been deleted) in 2023. Since then, I feel the situation in the world has become even more dangerous. I still continue to wish for peace. Educate Yourself: Learn about the history of nuclear weapons and disarmament efforts. Understand the risks associated with nuclear weapons. Websites, books, and documentaries are great resources. Understand Your Country’s Laws and Procedures: Familiarize yourself with your country’s laws, especially those related to peace, disarmament, and nuclear weapons. Understand the procedures that your government must follow to change these laws. Spread Awareness: Share what you’ve learned with your…

Reflecting on Hiroshima and Nagasaki Days: Understanding Nuclear Weapons and Spreading the Wish for Peace

End the Nuclear Era!!

*Note: This article is a slightly edited version of a post originally published on my previous blog (which has since been deleted) on August 6, 2023. Since then, I feel the situation in the world has become even more dangerous. I still continue to wish for peace. Introduction Recently, a certain movie has been associated with memes and jokes that satirically incorporate the image of the atomic bomb. What’s more, even the official accounts have shown a positive response to these representations. As someone who has been educated about the atomic bomb, I find it hard to comprehend this casual attitude towards such a serious matter. Honestly, it’s 2023, and…

Array Mbira Guide: iPhone App Now Available!

Array Mbira Guide is out now!

— A simple practice app for Array Mbira learners So… I made a little app! 🎉 It’s called Array Mbira Guide, and it’s a simple tool for anyone who wants to practice or learn the Array Mbira (or similar kalimba layouts). 💡 What’s in the app? 📱 Available on the App Store: 👉 https://apps.apple.com/app/array-mbira-guide/id6748903837 (*Note: The app is currently only in Japanese, but the core features are language-independent. Feel free to give it a try!) 🎵 Why I made this app Because my mom bought an Array Mbira, and she wanted to practice. The thing is, it’s a pretty resonant instrument, so practicing at night can be tricky. With an…

BLUE Copper’s Updated 20-Minute Makeup Routine!!

BLUE Copper’s Updated 20-Minute Makeup Routine!!

The other day, I went to the cosmetics section of a department store and ended up getting a full-face makeover from a beauty advisor. Originally, I just wanted them to help with eye makeup, but since I was already there, I figured, “Why not go all in?” So I asked for the full treatment from start to finish. And you know what? I actually learned quite a lot. So today, based on that experience, I’m going to share my updated 20-minute makeup routine! The 1-minute makeup routine I wrote before was all about speed. This 20-minute routine is for when I actually want to look kind of decent—it’s a totally…

My Solo 1-Hour Karaoke Routine!!

My Solo 1-Hour Karaoke Routine!!

Just like how the word karaoke itself comes from Japanese, Japan is full of karaoke chain stores—like, literally everywhere. And if you’re like me, living in a tiny apartment, you can’t exactly scream your lungs out without getting a neighbor complaint. But sometimes, you just need to scream, right? That’s when I go for HitoKara—solo karaoke! You rent this tiny little 3-tatami-sized room all to yourself and go absolutely wild. The beauty of solo karaoke? No waiting time between songs, no one watching, and you can sing whatever the heck you want. It’s refreshing as hell! Honestly, it’s luxury. (Okay, sometimes they put you in a giant room meant for…

Why I Blog in English (Even Though I’m a Native Japanese Speaker)

Why I Blog in English (Even Though I'm a Native Japanese Speaker)

I’m a native Japanese speaker living in Tokyo. But if you’ve seen my blog or social media, you’ll notice that almost everything I post is in English. No, I’m not fluent. The truth is: writing in English is easier for me—emotionally. Back in high school (when I was only thinking about posting in Japanese), I took a class on digital literacy. It made me hyper-aware of how my words might be interpreted online. After that, I found it almost impossible to post anything publicly—especially in Japanese. I overanalyzed every sentence. I was a very serious student. But once I started writing in English—after I became a university student—that mental block…

Parties Solve Everything Theme – Dance Won’t Fix It All (Lyrics Only)

Parties Solve Everything Theme – Dance Won’t Fix It All (Lyrics Only)

Here’s a set of lyrics I wrote back in January 2024. I haven’t made the track yet (and I don’t know when I will!), but I wanted to share the words anyway. This one’s written in Japanese, and what makes it unique is that it’s sung in parts by two characters: Riley and her partner-in-chaos, Jamie. ↓ Check out their character profiles and pilot episode here! ↓ “Dance Won’t Fix It All” (Working Title): [Rap – Verse 1] Riley: 煩悩 動揺 心配性には緊張する状況山積みタスクに迫る期限焦っちゃってどうしましょう! Jamie: 大丈夫? Riley: もち大丈夫!でもほんとはやっぱりダメかもね!人生シンプルなのに 誰が難しくしたの?! (私だよ…) [Verse – Pre-Chorus 1] Riley:たとえ踊る身体が 自分だなんて思えないでも人生が最高ならいいよねきっと大丈夫って思いたいだけでも絶望の底で方法がないなら舞台を変えて試したいさあ!Let’s Go Party [Chorus] Riley & Jamie:Dance, Dance, Dance!全て忘れて音と光でかき消して朝に壊されるまではダメな自分でいたいDance is fun, but it doesn’t fix it all…