icon
KOKI

シミュレーションを基にした眼球のテクスチャ生成

2022/01/03

slide 1

脇田研究会 2021 年春学期における私の研究テーマ「シミュレーションを基にした眼球のテクスチャ生成」の実装です。

解説はこちら スライドはこちら


デジタルヒューマン社会

slide 2

昨今ではデジタルヒューマン、メタバースなど、人を CG で表現する機会が増えている。また、blender やゲームエンジンなどの大衆化により、専門家でなくても それもリアルな CG を扱う人たちは爆発的に増えているといえます。


人のテクスチャ生成のむずかしさ

slide 3

そんな人たちがデジタルヒューマンを作りたいと思ったときにはテクスチャが絶対に必要ですが、PBR テクスチャを手に入れるには、特に専門家でない人、設備を持たない人にはとても高いコストがかかります。 しかも 3D モデルの独自性を出すために、テクスチャは ポリゴンと同等もしくはそれ以上重要なのに、編集がポリゴンよりも難しいという特徴があります。

自分だけしか持たないのテクスチャはこれからどんどんと価値が上がっていくと考えます。しかしながら人のテクスチャにはバリエーションがないのが現状です。


概要

slide 4

本研究では、特に目についての研究を行いました。 眼球を結膜と虹彩に分け、リヒテンベルク図形を結膜の表現に、粘菌が最短経路探索に秀でていることを虹彩の表現に用いることでテクスチャを生成します。


前研究、関連研究

slide 5

論文として発表されているものは私が調べた限りでは存在しなかった。 一方、インターネット上にはたくさんのチュートリアル動画やアセットが存在します。この左の物は Substance designer を利用したプロシージャル生成で、右のは Substance designer と Unreal Engine を利用した生成です。


アセットなど

slide 6

アセットなどと本研究との違いは アセットなどはとても様々な関数の組み合わせで表現されている。一方で本手法は非常に簡易である。動きに関するコードの行数は 100 行以下である。 アセットなどはすべてオフラインレンダリングである一方、本手法は WebGL 上で 1ms 以下と非常に高速で、リアルタイムレンダリングにそのまま乗せることが可能である。


生成手法

slide 7

目を結膜と虹彩の二つに分けてシミュレーションを行い、その二つを合成することで表現する 結膜は細部までいきわたるように枝分かれした血管が特徴で、 虹彩は中央に向かって伸びる筋繊維がよくみえ、その中に瞳孔括約筋、瞳孔散大筋という二つの筋肉があるのが特徴です。

では実際にテクスチャを作るにはどうするかというと、


結膜の方法

slide 8

まず結膜では、

血管というのは 細胞に血を送るためによく使われる血管は太くなる=見えやすくなるということです。

つまり、これはリヒテンベルク図形の生成システムと同じになります。 リヒテンベルク図形とは非伝導体に無理やり電気を流すことで浮かび上がる文様です。 この生成システムを応用することで結膜の血管は表現できます。


リヒテンベルク図形の生成

slide 9

実装とわかりやすい参考文献は以下の私のサイトで閲覧できます。 https://koki.one/works/Lichtenberg-figure


虹彩の手法

slide 10

虹彩では、筋繊維が重要なのでまず筋繊維について話さなければなりません。 筋繊維は収縮することで周りのものを引っ張ります。つまり、筋繊維の通る場所は筋繊維の端から端の最短距離を通っているはずです。


slide 11

この最短経路探索は粘菌の得意分野です。粘菌のシミュレーションを応用することで筋繊維の表現が可能です。


粘菌シミュレーション(physarum)

slide 12

粘菌シミュレーションはでは粒子があるルールに従います。 まず、粒子は前3方向における粒子の量を取得することができます。そのご、粒子は量が多い方向へと進みます。これだけです。


虹彩らしくするためには?

slide 13

では、虹彩らしくするためにはどうすればいいか、 観察してみるとこの四つのことがわかります。 まず、ドーナツ状にちりばめる、黒目の部分があるからです。 瞳孔括約筋と瞳孔散大筋に分ける。瞳孔括約筋はこの部分、瞳孔散大筋はそれ以外の中心に向かっている部分です。 そして、瞳孔括約筋では瞳孔散大筋よりも曲がりくねったようにする必要があります。 最後に、あまりきれいに収束させない。これは隙間だらけになってしまうからです。


ドーナツ状

slide 14

動画


瞳孔括約筋と瞳孔散大筋に分ける

slide 15

動画

つぎに二つの筋肉に分けます。ここでは場所によってパラメータを変えることで表現しています。 中心近くが少し太く、空洞が大きくなっているのがわかると思います。


瞳孔散大筋の部分において中央への力を加える

slide 16

動画 WebGL 実装

最後に、外側部分で中央に向かって動くように力を加えます。 するとだいぶ虹彩らしく見えるんじゃないかと思います。


レンダリング

slide 17

以上を踏まえ、虹彩と結膜の二つのテクスチャを組み合わせることで眼球を表現します。 なお、最終的にレンダリングする際には 虹彩部分ではパラメータを調整し、二つを合成することでよりリアルな表現にしました。


slide 18


結果

slide 19

結果としては WebGL での実装では実行時間 1ms ととても高速です。 また、 他の手法と異なる点はアルゴリズムが簡易であること、時間経過による変化があることです。特に時間経過による変化があることについては、大きな特徴です。 テクスチャに焼きこんでしまえばこれまでと同様に扱えます。一方で、NPR にはなっていしまいますがパラメータを変化させることで目による新しい感情表現が可能です。


今後の研究など、

slide 20


画像出典


参考文献

Jeff Jones, "Characteristics of pattern formation and evolution in approximations of physarum transport networks", Artificial Life, Mar 1, 2010, Volume 16, Issue 2, ISSN 1064-5462, https://uwe-repository.worktribe.com/output/980579

目次
© NAGASHIMA Koki 2022