タグ

Unityに関するhecomiのブックマーク (273)

  • uLipSync のバグ修正・更新についての解説 - 凹みTips

    はじめに uLipSync 周りの不具合修正を行いましたので報告となります。1 つ目の issue では WebGL ビルド時に次の 2 点が問題として報告されていました。 WebGL ビルドでリップシンクが遅れる WebGL ビルドで AudioClip 再生後に口が開いたままになる github.com また、別の issue では BlendShape の値についての報告がされていました。 現在 0 ~ 100 の値で BlendShape が計算されるが、0 ~ 1 の値で設計されたアバターにも適用したい github.com 上記 3 点について解説します。 ダウンロード 最新版は以下になります。 github.com WebGL ビルドでリップシンクが遅れる こちらはリリース記事の「タイミング調整」の項でサラッ書きましたが、Audio Sync Offset Time を利用す

    uLipSync のバグ修正・更新についての解説 - 凹みTips
    hecomi
    hecomi 2024/03/30
    ブログ書いた
  • uLipSync x WebGL における再生方法の制限について - 凹みTips

    はじめに 先日、uLipSync の WebGL ビルドでランタイム生成した際、音声は再生されるもののリップシンクしない、という報告を受けて調査をしてみました。 tips.hecomi.com 原因解説 原因としては AudioSource.PlayOneShot() の利用でした。こちらを詳しく解説していきます。 非 WebGL 向けビルドでは、MonoBehaviour.OnAudioFilterRead() や AudioSource.GetOutputData() といった API を通じて、そのタイミングで再生している音のバッファを取得することが出来ます。しかしながら、これらは一つ前の記事で触れましたが Unity のサウンド周りの仕組み及び WebGL の制約により使用することが出来ません。代わりに、WebGL ビルドでは、データから直接バッファ取得可能な AudioClip.

    uLipSync x WebGL における再生方法の制限について - 凹みTips
    hecomi
    hecomi 2024/02/18
    罠でした
  • Unity の WebGL ビルドでマイク入力を扱えるライブラリを作ってみた - 凹みTips

    はじめに Unity には Microphone というクラスがあり、これを通じてマイクの情報や入力を取得できます。しかしながら Microphone は WebGL では利用することが出来ません。 docs.unity3d.com Unity では FMOD をオーディオ周りとして利用しているようで、基的にスレッド上で動くためスレッドが(部分的にしか)利用できない WebGL とは相性がよくなく、結果的に Web Audio API をベースに自前で実装する、という選択をしたようです。その上で多くのオーディオ系 API は再実装されたものの、幾つか Web Audio API との相性が良くないものは利用不可、となっているようです。そして Microphone はごっそり「不対応」となったようですね。 私は uLipSync というリップシンクのためのライブラリを作っていまして、この中

    Unity の WebGL ビルドでマイク入力を扱えるライブラリを作ってみた - 凹みTips
  • https://forum.unity.com/threads/return-a-float-double-array-from-jslib-to-unity.1115686/

    hecomi
    hecomi 2023/12/31
  • uLipSync の WebGL 対応をしてみた - 凹みTips

    はじめに 前回調査記事を書きました。 tips.hecomi.com 今回は続きで、調査を元に実際に WebGL のサポートを行いました(マイクサポートのみまた後日)。実装しながら気づいたことや、問題に対してどのように対応したかなどについてまとめましたのでご紹介します。 ダウンロード github.com 実験と問題解決 前回は WebGL では解析の入口となっていたオーディオバッファを取得できる OnAudioFilterRead() が動作しないことから、代替手段として Web Audio API からバッファをもらってくる方式と AudioClip.GetData() によって取ってくる方式のメリット・デメリットを比較しました。前回の記事の結論としては、汎用性とコード変更性の少なさから AudioClip.GetData() を選択することにした、というものでした。 それではまずはシ

    uLipSync の WebGL 対応をしてみた - 凹みTips
    hecomi
    hecomi 2023/12/30
    思ったより大変でした
  • uLipSync の WebGL 対応を調査してみた - 凹みTips

    はじめに 過去に何度かリクエストを頂いているのですが、まだ uLipSync で対応していないことの一つに WebGL 対応があります。WebGL ではいくつかの機能が制限されており、そのまま使えない機能が多々あります。例えば現在解析に用いている OnAudioFilterRead コールバックは WebGL では利用できませんし、他にもマイクも同様に使用できません。 tips.hecomi.com こういった制約の関係で uLipSync は WebGL では現在動作しない形になっています。ただ、うえぞうさんがオーディオ再生側に関しては動作するような仕組みを作成して下さっています(ちょうど Unity 2021 以降でも動作する v0.3 がリリースされました)。 github.com 今回はマイク含め包括的にサポートを行うために、現状の問題点と使用できそうな技術調査を行います。 公式ド

    uLipSync の WebGL 対応を調査してみた - 凹みTips
  • uLipSync の VRM モデル向けリップシンクアニメーションベイクについて - 凹みTips

    はじめに id:bibinbaleo さんのブログで uLipSync を試してみていただいており、その中で VRM モデルのアニメーション書き出しについての記述がありましたので補足解説させていただきます。 bibinbaleo.hatenablog.com uLipSync についてはこちら。 github.com アニメーション書き出しについて トマシープさんの記事では uLipSyncBlendShapeVRM を試されていらっしゃいましたが、現状、uLipSync のアニメーション書き出しは残念ながら uLipSyncBlendShape のみとなっています。VRM 0.X では VRMBlendShapeProxy というコンポーネントを介して、VRM 1.0 では Expression という仕組みを介してブレンドシェイプを扱っています。uLipSync ではこれらの仕組みを利

    uLipSync の VRM モデル向けリップシンクアニメーションベイクについて - 凹みTips
    hecomi
    hecomi 2023/10/30
  • uLipSync で解析結果を使ったカスタム挙動を作るためのチュートリアル - 凹みTips

    はじめに uLipSync では AudioClip やマイクから得た音声を解析するモジュールと、その解析結果を受け取りリップシンクを動作させるためのコンポーネントが分かれています。 github.com この解析結果を受け取る部分を自作することで色々と遊ぶことができるので、記事ではそのやり方をご紹介します。 導入 いくつか方法はありますが、Package Manager から次の URL を Add package from git URL... するのが簡単だと思います。 https://github.com/hecomi/uLipSync.git#upm 直接 .unitypackage を導入する場合は Package Manager から Unity.Mathematics や Unity.Burst の導入を忘れずにおこなって下さい。その他基的な概念や機能説明は、必要に応じ

    uLipSync で解析結果を使ったカスタム挙動を作るためのチュートリアル - 凹みTips
  • Unity の Version Defines と.unitypackage インポートについて - 凹みTips

    はじめに 先日、uLipSync v3.0.2 をリリースし、asmdef の Version Defines を利用した VRM 0.X / 1.0 のパッケージのインポート状況に応じた VRM 向けコンポーネントのエラー抑制を行いました。 tips.hecomi.com ただこちら、.unitypackage 経由でインポートした際にうまく動かない、という報告をいただき調査してみました。 原因 Version Defines はパッケージのインポート状況に応じてシンボルを定義できる仕組みです。パッケージはバージョン指定も可能で、またパッケージだけではなく Unity のバージョン指定も出来ます。 docs.unity3d.com ただ、.unitypackage 経由でインストールした際、Version Defines で指定する Resource がインポートされた状態として扱われず

    Unity の Version Defines と.unitypackage インポートについて - 凹みTips
    hecomi
    hecomi 2023/07/30
  • Unity でエディタ拡張向けの重い画像生成の改善をしてみた - 凹みTips

    はじめに 大分ニッチな話だと思うのですが、現在メンテしているプロジェクトで音声の解析結果を示すために画像生成を行い、それをエディタ拡張で表示して見せています。 これは Burst と Job を使って生成しているのですが、エディタ拡張の UI の体系は同期処理となるため、現状では Job を即時実行・回収することで、同期処理系となってしまっています。 tips.hecomi.com 今回はここを何とかしようと試みたお話を共有します。内容はテクスチャ生成ですが、それ以外にも重い処理を行うようなエディタ拡張のヒントになるかと思います。 コードと問題点 具体的に以下のようなコードを想定してみましょう。 AsyncTextureCreator.cs using UnityEngine; public class AsyncTextureCreator : MonoBehaviour { publi

    Unity でエディタ拡張向けの重い画像生成の改善をしてみた - 凹みTips
    hecomi
    hecomi 2023/06/29
  • uLipSync の不具合修正(VRM / .NET Standard 2.0 関連)をしました - 凹みTips

    はじめに 先日 v3.0.0 をリリースした uLipSync ですが、いくつか不具合修正が来ていたため修正しました。 tips.hecomi.com VRM パッケージを読み込んでいない際にエラーが出る VRM パッケージを両方(VRM 0.X / VRM 1.0)読み込まないとならない Unity 2019 でエラーが出る 古い Timeline アセットを読み込んでいる際にエラーが出る エントリでは修正についてのメモと、ついでなので改めて VRM でのセットアップ方法について解説を行いたいと思います。 最新リリース github.com VRM のセットアップ方法 uLipSync のインポート uLipSync のインポートの方法は 3 種類ありますが、お手軽なのは git URL かな?と思います(個人的なオススメは Scoped Registry 登録ですが)。VRM 関連の

    uLipSync の不具合修正(VRM / .NET Standard 2.0 関連)をしました - 凹みTips
  • uLipSync のアルゴリズム改善を行ってみた - 凹みTips

    はじめに ずっとやろうと思っていた Unity でリップシンクを実現するアセットである uLipSync のアルゴリズムの改善を行いました。 github.com uLipSyncでは、MFCC(Mel Frequency Cepstral Coefficients)と呼ばれる特徴量を計算しています。MFCC を利用することで音声信号から音素の違い(母音や子音など)や楽器の音色の違いを区別することができ、音声認識音楽情報検索など、様々な音声・音楽処理タスクで広く利用されています。Python 環境では Librosa などのライブラリを使って MFCC は簡単に計算することが出来ます。 一方 uLipSync では、Unity 内でネイティブプラグインなどに頼らず JobSystem + Burst コンパイラの助けを借りて高速に処理したいコンセプトがある関係上、こういったライブラリに頼

    uLipSync のアルゴリズム改善を行ってみた - 凹みTips
  • HLSLToolsForVisualStudioConfigGenerator v1.1.0 をリリースしました - 凹みTips

    はじめに HLSL Tools / HLSL Tools for Visual Studio を使うと、VS Code または Visual Studio でシェーダを書く際に補完が効くようになります。 marketplace.visualstudio.com marketplace.visualstudio.com これらを Unityプロジェクトで使用する際は lshadertoolsconfig.json という設定ファイルを作成し、Unity がシェーダ内で暗黙的にパス解決してくれている部分を補助してあげる記述をする必要があります(どのディレクトリを Include するか記述するなど)。この設定ファイルの作成及びパス解決の補助を簡単にするためのエディタ拡張として、以前 HLSLToolsForVisualStudioConfigGenerator というものを作成しました。

    HLSLToolsForVisualStudioConfigGenerator v1.1.0 をリリースしました - 凹みTips
    hecomi
    hecomi 2023/02/25
    ShaderLab の補完も効くと嬉しいのですが...
  • uLipSync の新機能解説(実行時のセットアップ / タイムライン上の自動クリップ追加機能) - 凹みTips

    はじめに リリース 実行時のセットアップ SkinnedMeshRenderer 経由で指定 VRM の場合 所感 タイムライン上への自動クリップ追加 uLipSync おわりに はじめに uLipSync は Unity 上で音声データ / 音声入力をもとにリップシンクを実現するアセットです。 tips.hecomi.com 今回は要望を頂いていた以下の 2 つの機能追加・サンプル更新をしましたので解説します。 実行時にセットアップしたい Timeline でのリップシンククリップ配置を簡単にしたい リリース v2.6.0 をリリースしました。 github.com 実行時のセットアップ 例えば VRM をロードしてそこにコンポーネントをセットアップしたい場合、これまでは API が足りておらず自前で頑張る必要がありました。これを解決するために、いくつか API を生やし、それらを使うサ

    uLipSync の新機能解説(実行時のセットアップ / タイムライン上の自動クリップ追加機能) - 凹みTips
    hecomi
    hecomi 2023/01/06
    久しぶりに月末以外に書きました
  • uLipSync で Animator を使ったリップシンクができるように更新してみた - 凹みTips

    はじめに uLipSync v2.5.1 をリリースしました。 github.com 以下の 2 点のアップデートが含まれています。 Animator の BlendTree を使ったリップシンクのサポート これまでは BlendShape 指定でしたが Animator のステートでリップシンクさせることが可能になります VRM の Expression 指定によるリップシンクのサポート VRM の BlendShape ではなく Expression で指定できるコンポーネントが追加されました それぞれ PR を頂きました、ありがとうございます。 github.com github.com 記事では、これらのうち、ちょっと解説が必要な Animator 利用についてセットアップの方法やユースケースについての解説を行おうと思います。uLipSync そのものの使い方については以下の記事

    uLipSync で Animator を使ったリップシンクができるように更新してみた - 凹みTips
    hecomi
    hecomi 2022/12/28
    PRありがとうございました!
  • https://forum.unity.com/threads/after-saving-the-scene-animator-is-not-playing-an-animatorcontroller.532718/

    hecomi
    hecomi 2022/12/28
  • 解説: Just a Pool

    VRChat world "Just a Pool" has been released! 少し前に Just a Pool という VRChat のワールドを公開しました。この記事では裏の色々な話や技術解説などを書いていこうと思います。 ワールド探索系の話でなくて恐縮なんですが、この記事は VRChatワールド探索部 Advent Calendar 2022 の20日目の記事になっています。 ワールドについて 名前の通りプールが置いてあるだけの小さなワールドなんですが、水がリアルに動きます。そして触れます。 ただ「リアルな水とVRで触れ合いたい!」という欲望のために作られたようなワールドで、心ゆくまで水遊びを楽しむことができます。水鉄砲やポータルといった遊び道具も置いてあるので、多人数でわいわいするのにも向いているかと思います。よくみんなで遊んでいる様子が Twitter に流れてくるの

    解説: Just a Pool
    hecomi
    hecomi 2022/12/21
    すごすぎ
  • UnityのTimelineを使ってMV製作した話 - kugi's notebook

    はじめに こちらの記事はUnityゲーム開発者ギルド Advent Calendar 2022の11日目の記事です。 adventar.org 今回はUnityのTimelineを用いてMV制作を行った話について書こうと思います。 はじめに NaTsu Beats TimelineでのMV制作 全体の流れ 場面の転換 背景スクロールについて 背景スクロール用のTimeline拡張 Timeline再生時のスクロール Timeline停止時のスクロール 背景スプライトの切り替え 地面のつながりを表現するシェーダー 曲のリズムに合わせたキャラクター、小物の動き 時間変化に合わせた空と色調補正について 空の表現について 色調補正について まとめ NaTsu Beats 今年の1月ごろから趣味で楽曲制作を始めました。 www.youtube.com 是非チャンネル登録をお願いします!! 制作を

    UnityのTimelineを使ってMV製作した話 - kugi's notebook
    hecomi
    hecomi 2022/12/11
    知見が詰まってる
  • 結婚式のプロフィールムービーを Unity で作ってみた - 凹みTips

    はじめに 私事で恐縮ですが、先日、コロナ禍で 2 年半ほど延期していた結婚式をしました。そこでのプロフィールムービー制作を Unity でやってみましたので、記事ではそのお話をしようと思います。 過去に友人結婚式のムービー制作を任された時は After Effects か Premiere で作っていたのですが、それぞれ 1 冊読んだ程度なので、自分の能力的にはスライドショー的に画像や文字を配置する程度が限界でした。自分たちのものはスプラトゥーン風のムービーにしたいなぁと思い、もう少し色々やれるかも & 勉強にもなるかもと思って Unity でやってみることにした次第です。プライバシーの関係でムービーの共有はできないのですが...、部分部分を簡単にご紹介したいと思います。 概要 基方針は次のような感じです。 全体は Timeline を使って作成 出力は Unity Recorde

    結婚式のプロフィールムービーを Unity で作ってみた - 凹みTips
    hecomi
    hecomi 2022/11/30
  • uLipSync 内の AudioClip をトリミング・再生するスクリプトの解説 - 凹みTips

    はじめに 今回は小ネタです。uLipSync のキャリブレーション用にオーディオデータの選択した範囲のループ再生機能を作ったのですが、その内容をまとめておきます。元記事はこちら: tips.hecomi.com 機能について こんな感じでドラッグして再生したい箇所を選択、クロスフェード具合を調整して、Play を押すと選択範囲がループ再生されるというものです。uLipSync のキャリブレーションでは現在再生されている音を解析するため、このような仕組みが必要でした。 解説 選択された音をトリミングした AudioClip を生成するランタイムコード部と、どこをトリミングするか選択する UI の部分のエディタコード部があります。コード全文はリポジトリからご参照ください。 github.com ランタイムコード まずはランタイムコード部からですが、それほど長くは無いので全文を貼ってみます。 u

    uLipSync 内の AudioClip をトリミング・再生するスクリプトの解説 - 凹みTips
    hecomi
    hecomi 2022/10/31
    来月の記事はがんばります...