Google、高精度な3Dパラメトリック頭部モデル「GNM Head」を公開!Blender用の無料アドオンも登場

CGソフト

Googleは、高精度な3Dパラメトリック人体モデルのエコシステム「GNM(Generative aNthropometric Model)」をGithubで公開しました。

GNMとは

GNM(Generative aNthropometric Model)は、ヒトゲノムにちなんで「ゲノム」と発音される、オープンな3D人体モデルおよびその認識技術(パーセプションスタック)のエコシステムです。

このプロジェクトは、正確で完全な3Dパラメトリック人体モデルの構築を目的としています。現在、コンピュータビジョンやコンピュータグラフィックス、さらには生成AIの分野において、人間の形状や外見を表現するための基盤として「3D Morphable Models(3DMMs)」が広く利用されています。GNMは、この分野において最新の統計的人体モデル群と、それを解析・認識するための技術を提供するものです。

開発ロードマップの第一歩として、コミュニティでの研究やオープンな開発を促進するため、高忠実度な頭部統計3Dモデルである「GNM Head」が公開されました。

主な特徴

「GNM Head」は、大規模な3Dスキャンデータセットから学習されており、以下のような特徴を備えています。

  • 高精細な3D顔形状の生成: 表面の皮膚だけでなく、眼球、歯、舌を含む、密度の高い3D顔メッシュを生成します。
  • 独立したパラメータ制御: 以下の要素をそれぞれ個別に操作することが可能です。
    • アイデンティティ: 個人特有の顔立ちや特徴を制御します。
    • 表情: 豊富な表情のブレンドシェイプを用いて、顔をアニメーション化します。
    • 頭部のポーズ: 首や眼球の回転角度を制御します。
    • トランスレーション: 3D空間上での全体的な位置を制御します。
  • 直感的な操作(セマンティック・サンプリング): 意味的なラベルからパラメータを自動生成する、事前学習済みのモデルが同梱されています。
    • ExpressionSampler:「喜び(happy)」や「驚き(surprise)」といった表情を生成したり、それらをブレンドしたりすることができます。
    • IdentitySampler:性別や人種・民族的特徴などの属性に基づいて、アイデンティティを生成します。
  • マルチフレームワーク対応: 開発環境に依存しないよう、NumPy、JAX、PyTorch、TensorFlowといった主要なバックエンドを標準でサポートしています。

利用方法

GNM Headを利用するには、大きく分けて以下の2つの方法が用意されています。ご自身の用途やスキルセットに合わせて最適なアプローチを選択してください。

  1. Python環境での利用: プログラム(スクリプト)を用いてモデルを直接制御・自動化したい開発者や研究者向けの方法です。
  2. Blenderアドオンでの利用 3Dソフトウェアの画面上(GUI)で直感的にスライダーを操作し、視覚的に形状を作成したいクリエイター向けの方法です。

Python環境での利用

Pythonの実行環境を構築し、スクリプトから直接APIを呼び出して3Dメッシュを生成する方法です。

プロジェクト構造

gnm/shape パッケージ内の主要なディレクトリおよびファイル構成は以下の通りです。

gnm/shape/
├── data/                   # GNMモデルのアセットとバージョン
│   ├── textures/           # モデルのテクスチャ (.jpg, .png)
│   ├── semantic_sampler/   # 事前学習済みのセマンティックサンプリングモデル (.h5)
│   └── versions/
│       └── v3_0/           # v3 GNMモデルファイル (.npz)
├── demos/                  # インタラクティブなデモノートブック (.ipynb)
├── fitting_utils/          # 共有の最適化ヘルパー関数
├── visualization/          # レンダリングとカメラ投影のユーティリティ
├── gnm_base.py             # 基本となるGNMクラス定義
├── gnm_colab_viewer.py     # Colab用3D顔モデル可視化ツール
├── gnm_data_loader.py      # 動的モデルローダーとチェッカー
├── gnm_data_schema.py      # 入出力データのバリデーションスキーマ
├── gnm_jax.py              # JAX版 GNM実装
├── gnm_numpy.py            # NumPy版 GNM実装(メイン)
├── gnm_pytorch.py          # PyTorch版 GNM実装
├── gnm_tensorflow.py       # TensorFlow版 GNM実装
├── pyproject.toml          # パッケージビルドとオプション依存関係の設定
└── semantic_sampler.py     # セマンティックパラメータサンプリング(特徴/表情)

インストール手順

GNM Shapeは、Python 3.13での動作がテストされています。インストールを行う前に、お使いのツール(mamba/conda、venv、uvなど)を使用して、クリーンな仮想環境を作成し有効化することをお勧めします。

mamba create -n gnm python=3.13
mamba activate gnm

公式リポジトリをクローンし、現在有効な環境に対してpipを使用してパッケージをインストールします。用途に合わせて、必要なバックエンド・フレームワークのみを選択してインストールすることが可能です。

git clone https://github.com/google/gnm.git
cd gnm/gnm/shape

公式リポジトリをクローンし、現在有効な環境に対してpipを使用してパッケージをインストールします。用途に合わせて、必要なバックエンド・フレームワークのみを選択してインストールすることが可能です。

  • コア(NumPy + Tensorflowのみ): pip install -e .
  • JAXサポートを追加する場合: pip install -e ".[jax]"
  • PyTorchサポートを追加する場合: pip install -e ".[pytorch]"
  • 全フレームワークと開発ツール: pip install -e ".[all,dev]"

基本的なコード例

インストール完了後、GNMモデルを利用して顔のメッシュデータを生成する基本的なPythonコードの構成は以下のようになります(リポジトリ内に必要なモデルデータが同梱されています)。

from gnm.shape import gnm_numpy
import numpy as np
import trimesh # 可視化・出力用

# GNM Headモデルの読み込み
gnm = gnm_numpy.GNM.from_local(
    version=gnm_numpy.GNMMajorVersion.V3,
    variant=gnm_numpy.GNMVariant.HEAD,
)

# 全てゼロのパラメータを指定すると、標準的なテンプレート顔になります
identity = np.zeros(gnm.identity_dim)
expression = np.zeros(gnm.expression_dim)
rotations = np.zeros((gnm.num_joints, 3)) # 軸-角度 (Axis-angle)
translation = np.zeros((3,))

# メッシュの頂点データを生成
vertices = gnm(identity, expression, rotations, translation)
faces = gnm.triangles

# 3Dモデルとしてエクスポートまたは表示
mesh = trimesh.Trimesh(vertices=vertices, faces=faces, process=False)
mesh.export("generated_face.obj")
# mesh.show()

独自の特徴や表情、ポーズの設定から頭部メッシュを生成するより具体的な手順や実験については、パッケージに同梱されているJupyter Notebookのデモ(gnm/shape/demos/gnm_head_demo.ipynb)で見ることができます。

Blenderアドオンでの利用

Pythonのコードを記述することなく、GNMの3Dヘッドモデルをより手軽に視覚化・操作するためのサードパーティ製ツールとして、Blender用の無料アドオン「GNM Head Editor」が公開されています(2026年7月15日にv1.1.0がリリース)。

これを利用することで、Blenderの画面上でパラメータの数値を変更し、リアルタイムに形状の更新を確認することが可能になります。キャラクター制作のリファレンスツールとしても非常に役立ちそうです。

アドオンの主な機能

このアドオンは単なる静的メッシュのインポーターではなく、Blenderのビューポート上で3D Morphable Modelの計算をライブで評価し、頂点位置を再生成するインタラクティブな仕組みを持っています。

  • 直感的なスライダー制御: アイデンティティ(253成分)や表情(383成分)のフルベクトルへのアクセスはもちろん、厳選されたパラメータをスライダーで直接操作できます。
  • セマンティック(意味的)サンプリング: 性別、人種・民族、表情カテゴリなどのラベルとシード値を指定するだけで、条件に合致した形状や表情を自動生成します。
  • 自動マテリアル割り当て: モデルに同梱されている頂点グループ情報を読み込み、皮膚、角膜、強膜、虹彩、瞳孔、歯、舌などの各部位へ個別のマテリアルを自動的に設定します。
  • ポーズ制御とプリセット管理: 頭部や首の傾きなどを個別に制御でき、作成したパラメータ構成に名前を付けて保存・出力することが可能です。

インストール方法

 ダウンロードした .zip ファイルを解凍せずにBlenderのアドオン設定からインストールします。

その後、アドオンのメニュー内にある「Install Dependencies(依存関係のインストール)」ボタンをクリックするだけで、必要な環境が自動構築されます。

要件: Blender 5.1以降が必要です。また、依存パッケージ(TensorFlowなど)やモデルデータのダウンロードのため、初回セットアップ時に約5GBの空き容量とインターネット接続が必要となります。

アドオンは以下のGumroadページから無料でダウンロードできます。

ダウンロードとライセンス

GNMのエコシステムは、研究・開発コミュニティへの貢献を重視しており、非商用プロジェクトだけでなく、商用アプリケーションにも適した寛容なライセンスで提供されています。

ソースコードおよびデータはApache License, Version 2.0のもとで公開されています。ファイルのダウンロードや詳細な技術仕様の確認については、公式のGitHubリポジトリからアクセスが可能です。また、バグの修正や機能追加など、外部からの貢献も歓迎されています。

コメント

Translate »
タイトルとURLをコピーしました