見出し画像

AIとともに描く、これからの3D空間デザイン

Takramの野見山です。デザインエンジニアとして、テクノロジーと人を繋ぐ仕事をしています。ここ最近Takramでは、生成AIに関するプロジェクトを多数手掛けています。このnoteでは、それらのプロジェクトに共通する技術やアイデアを抽出して、今後も応用できる形で紹介したいと思います。

今回扱うテーマは、画像生成AIを活用した空間デザインの可能性についてです。画像生成AIは、自然言語だけでグラフィックやイメージを作成できる魅力的なツールです。しかし、空間や構図、スタイルなどを自然言語で正確に指定するのは至難の業です。思い通りの結果を得るには、ユーザーの創意工夫と忍耐が求められます。

これまでTakramでも、映像制作や建築デザインのプロジェクトで、思い通りの空間を描写したいシーンが何度かありました。その時チームで試行錯誤して導いたのが、画像生成AIと3Dレンダリングを組み合わせて空間を描く方法です。この方法は、映像制作や建築デザインだけでなく、都市開発/イベント企画/イラスト制作など、幅広い分野での応用が期待できる内容です。


AIは空間や物理法則を認識できない

まず、前提として理解しておきたいのは、画像生成AIには空間や物理法則を正しく認識する能力がないということです。例えば、「机の下の本」というプロンプトで画像を生成してみると、以下のように机の上に本が置かれた画像が頻繁に生成されます。これは、AIが学習データに含まれる一般的なパターンに基づいて画像を生成するためです。

「机の下の本」というプロンプトで生成した画像

一方、動画生成AI「Sora」は、物理法則を認識しているかのような動作を見せることで話題になりました。例えば、人同士がすれ違う時に体を避けたり、奥の物体が手前の物体に隠れたりします。しかし、これも物理法則を本質的に理解しているわけではなく、一般的な動きのパターンを再現しているに過ぎません。実際、物理エンジンのような正確さはなく、不自然な動きが見られることもありました。

では、画像生成AIで意図した通りに空間を描くにはどうしたらいいでしょうか。次の章からは、画像生成AIとしてStable Diffusion(生成モデル:Dream Shaper 8)を使用して具体的に検証を進めます。

画像生成AIで空間を描く

検証1:空間のパターンを反映する

空間認識能力を持たない画像生成AIに対し、言葉だけで詳細な空間を伝えるのは非常に困難な作業です。もし空間の制約がある程度決まっているなら、一から画像生成するのはとても非効率的です。そこで検証1では、事前に3D上で空間のパターンを定義します。

空間のパターン例

空間のパターンを定義すると言っても、精巧に作り込まれた3Dモデルを制作するわけではありません。シンプルな直方体を組み合わせて、大体の形状が把握できる状態まで用意します。

検証1

続いてパターンが決まったら、Stable Diffusionに「パターン画像」と「パターンの説明文」を入力して空間を描きます。パターンの説明文は、ChatGPTにパターン画像を渡して言語化してもらいます。

You are the agent that estimates the Stable Diffusion prompt from the image. Estimate the Stable Diffusion prompt from the images provided. The prompt only includes a description of the space pattern, but not the style, tools, colors and textures.
--
あなたは、画像からStable Diffusionのプロンプトを推定するエージェントです。提供された画像をもとにStable Diffusionのプロンプトを推定してください。プロンプトには空間のパターンの説明のみが含まれ、スタイル・ツール・色・テクスチャの説明は含まれません。

「パターンの説明文」の生成プロンプト

A simple room featuring a bed with a small nightstand beside it, a desk with a chair, a wall-mounted shelf, a rectangular wall frame, a window, and a small bookcase with two shelves. The furniture is arranged against three walls of the room.
--
ベッドとその横に置かれた小さなナイトテーブル、椅子と机、壁に取り付けられた棚、長方形の壁掛けフレーム、窓、2つの棚が付いた小さな本棚が特徴的なシンプルな部屋。家具は部屋の壁3面に配置されている。

「パターンの説明文」の生成結果

説明文の内容は概ね正しそうですね。では実際にStable Diffusionに入力して空間を描いてみましょう。以下の結果1-3は、条件を変えずに同じ入力で3回ランダムに生成した結果です。

検証1の生成結果(失敗)

うーん、失敗です。アイソメトリックなカメラの構図はたまに反映されますが、細かなパターンは無視されます。入力として立体情報が不足しているようです。

検証2:空間のパターンを反映する(奥行きの追加)

検証2

立体情報を補強するため、空間の奥行き画像を追加します。空間の奥行きを3Dで描き、ControlNet(Stable Diffusionの拡張機能)のDepthを利用して入力します。

検証2の生成結果

成功しました!ベッド、机、椅子、棚、絵画、窓が意図したとおりに配置されています。異なる画角でも生成してみましょう。「パターンの説明文」は変えず、3D上でカメラの位置を動かして「パターン画像」と「奥行き画像」を差し替えます。

検証2の生成結果

こちらも概ね成功です。画角から見切れた絵画が本棚に変わったものの、許容範囲です。空間のパターンと奥行きを組み合わせることで、精度高く空間を描けることがわかりました。次に、空間のスタイルを操作する方法を検証します。

検証3:スタイルを追加する

検証3

空間のパターンが決まったら、次はその空間にスタイルを追加してみたくなります。「パターンの説明文」にスタイルの要素を加えることで、どのように変化するかを検証してみましょう。スタイルの指示を手動で加えるのは大変なので、再びChatGPTを活用します。

You are the agent that updates the Stable Diffusion prompt based on the request.

Original prompt:
A simple room featuring a bed with a small nightstand beside it, a desk with a chair, a wall-mounted shelf, a rectangular wall frame, a window, and a small bookcase with two shelves. The furniture is arranged against three walls of the room.

Request:
The rooms are antique and each piece of furniture has a detailed decorative pattern. The wood is dark brown, giving a chic and calm impression. The floor is covered with a dark red carpet. The wall frames are gold.
--
あなたはリクエストに基づいてStable Diffusionのプロンプトを更新するエージェントです。

元のプロンプト:
ベッドとその横に置かれた小さなナイトテーブル、椅子と机、壁に取り付けられた棚、長方形の壁掛けフレーム、窓、2つの棚が付いた小さな本棚が特徴的なシンプルな部屋。家具は部屋の壁3面に配置されている。

リクエスト:
部屋はアンティークで、それぞれの家具には細かい装飾模様が施されている。木部はダークブラウンで、シックで落ち着いた印象。床にはえんじ色のカーペットが敷かれている。壁掛けのフレームはゴールド。

「スタイル」の追加プロンプト

An antique room featuring a bed with a small nightstand beside it, a desk with a chair, a wall-mounted shelf, a rectangular wall frame, a window, and a small bookcase with two shelves. Each piece of furniture has a detailed decorative pattern and is made of dark brown wood, giving a chic and calm impression. The floor is covered with a dark red monochrome carpet. The wall frames are gold. The furniture is arranged against three walls of the room.
--
ベッドとその横に置かれた小さなナイトテーブル、椅子の置かれたデスク、壁に取り付けられた棚、長方形の壁掛けフレーム、窓、2つの棚が付いた小さな本棚が特徴的なアンティーク調の部屋。どの家具にも細かな装飾模様が施され、ダークブラウンの木製で、シックで落ち着いた印象を与える。床にはえんじ色の単色のカーペットが敷かれている。壁掛けフレームはゴールド。家具は部屋の壁3面に配置されている。

「スタイル」の追加結果

スタイルに関する文言がパターンの説明文に追加されました。これを元に「パターン画像」「奥行き画像」「(スタイルが追加された)パターンの説明文」をStable Diffusionに入力して、画像生成を行います。

アンティーク風、細かい装飾模様、ダークブラウンの木材、シックで落ち着いた印象、えんじ色のカーペット、ゴールドのアートフレーム

概ね成功です。えんじ色のカーペットがたまに反映されないなど、生成モデルが不得意とするスタイルもありますが、ほぼ意図した通りに生成されています。他のスタイルも試してみましょう。

遊び心のある子供部屋、カラフルなおもちゃ、多色で明るいインテリア、角の丸い机
ファンタジーをテーマにした部屋、角から生えた魔法の木、星の光る壁、不思議な要素、幻想的な照明、夜のような雰囲気

これらも概ね成功です!同じ空間のパターンでも、スタイルが変わると印象が大きく変わります。形状や奥行きまで変わるようなスタイルの指示は難しい場合もありますが、質感やテクスチャを変えるのには効果的です。

検証4:描いた空間を3Dで再現する

検証4

生成した画像を3Dモデルのテクスチャーに利用することで、描いた空間を3Dで再現できます。これにより、カメラを動かして空間の中を少しだけ移動できるようになります。

「少しだけ」と言うのは、生成した画像で描かれなかった部分(例:ベッドの裏側など)はテクスチャーとして成立しないためです。しかし、少し移動できるだけでも空間の立体感や身体感覚を想起することができます。ちょっとしたアニメーションの演出にも利用できるでしょう。

生成した画像を3Dで再現すると、リライティング(再照明)することも可能です。様々な照明環境を用意することで、同じ空間でも異なる印象のシーンを描くことができます。映画やゲームの演出、建築デザインのプレゼンテーションなど、空間の表現を変えたいときに応用できるでしょう。

リライティング(再照明)

追記:最近話題の動画生成AI「Luma Dream Machine」を用いて生成した画像を動かしてみました。前述した3Dの手法と比べ、カメラワーク操作の自由度は低い一方、生成した時に映っていなかった画角をうまく補完くれています。用途や目的に応じて、アニメーションの手法を選ぶとよいでしょう。

まとめ

今回の記事では、画像生成AIと3Dレンダリングを組み合わせて空間を描く方法を紹介しました。画像生成AIに対して、自然言語だけで空間の構成を指示するのはとても難しい作業です。しかし、3Dレンダリングと併用することで、人と生成AIの協調できる可能性が広がります。

「いい雰囲気の空間を作って!」と何も考えずに、全てを生成AIに任せることは簡単にできます。しかし、人自身が考える楽しさや面白さは、これからも大切にしたい要素です。人の役割をただ奪うのではなく、人の想像力やアイデアを膨らませるようなAIこそが、今後も求められるでしょう。生成AIによって人の能力が拡張された時どのような未来が拓かれるか、これからも考えていきたいと思います。

テクノロジーとデザインに関する情報は今後も定期的に発信していきます。もし興味のある方はnoteやXでのフォローをお願いします。

AIとともに描く、これからの3D空間デザイン

この記事が気に入ったらサポートをしてみませんか?