トップ > ウニの3Dアバター制作日記です!
更新日 2023/3/7

ウニの3Dアバター制作日記です!

ウニのリアルタイム3Dアバターを制作する過程を書き残していきたいと思います。


最新の状況

時代はAIだ!!!

・・・ということで、今流行のChatGPTのような対話型AIをUnityを用いてリアルタイムコンテンツで運用するフレームワークを試作しています。

UnixoAI_Framework

ユーザーの音声とリアルタイム映像からAIが最適の結果を予測するシステムになります。AI部分にはML.NETを利用した独自AIを搭載しています。ユーザーとAIによる音声のやりとりにはJuliusとVOICEVOXを利用しています。これらのコンポーネントは非常に優秀で無料かつ商用利用可能なものでUnityを使ってリアルタイムAIコンテンツを制作するのに敷居が低い環境になります。ML.NETをUnityで扱う方法は後ほどまとめようと思っています。

具体的な利用方法ですが、例えばゲーム画面をAIが状況分析してアドバイスを貰ったりナビゲーションしてもらったり。別の例ではサッカーの試合で背番号で選手を特定したり、オフサイドを即座に判定したり、音声で個人や試合のスタッツを教えてもらったりと考えれば考えるだけたくさんの利用方法があると思います。

AIを利用したリアルタイムコンテンツ開発にはしばらく時間がかかると思いますが少しずつ見える形で公開していこうと考えています。


VOICEVOXエンジンの使い方は以下にまとめてあります。

【Unity】VOICEVOXエンジンでリアルタイム音声合成する方法を紹介します!2023/4/17

Juliusの使い方は以下にまとめてあります。

julius
【Unity】Juliusでリアルタイム音声認識する方法を紹介します!2023/3/5

過去の日記

ここより下は過去の日記になります。


上下左右の回転を実装しました

Unixo_FaceRotation

左右の顔の面積比率で左右に回転させています。上下方向も同じロジックです。

Unixo_FaceRotationY

若干ピクピクするのを改善したいですね。


左右へ転がるようにしてみました

UnixoRoll

左右の目を繋いだ線分の角度をトランスフォームにアサインしています。

UnixoRollLogic

Z軸回転と左右(X軸方向)に少し移動させて転がしています。

UnixoRollTransform


まばたきさせてみました

OpenCVで顔認識してまばたきを実装してみました。

unixo_blink

2つのベクトルの内積で求めた角度で瞼を動かしています。

unixo_blink_dot

UnityでOpenCVを使う方法はこちらにまとめてあります。

opencv
【Unity】OpenCVで顔認識をする方法を紹介します!2022/9/12

目と口を付けてみた

unixo20220809

目玉は球で瞼は半球を2つ用意して上瞼(青)と下瞼(赤)にわけて作りました。

unixo20220809_eyelid

口は複雑な変形をしたいのでブレンドシェイプを使って作りたいです。


細分化して追加した頂点のみ伸ばしてみた

computesubdivision
【Unity】コンピュートシェーダーでメッシュを細分化する方法を紹介します!2022/8/2

上記記事で紹介した方法で三角形に中点xを追加して伸ばすことにしました。

ComputeSubdivisionMethod

この方法だと伸ばした頂点xに隣接する頂点は伸ばされることがないのでキレイなトゲの表現ができます。

Unixo3d_Needles


頂点数を増やすべく細分化してみました

続いて試したのはメッシュを細分化して頂点を増やしてトゲをキレイに表現しようとしました。 ランダムで伸ばす頂点を選択すると隣接する頂点を伸ばしてしまう場合もあるので見た目的によくありません。 ランダムでトゲを伸ばすのは諦めました。

ComputeSubdivisionUni


ウニのトゲを作ろうとするも

球の頂点をランダムで法線方向に伸ばしてみました。
隣接する頂点も一緒に伸ばしてしまったりしてうまく調整できず。

ComputeParam

果てしなく続く・・・。

関連ページ


Copyright ©2022 - 2024 うにぉらぼ