3Dモデルをいろいろ作ってみたい

3Dモデルをいろいろ作ろうとがんばっています。苦労した点、役に立ちそうな情報を発信していきます。

ロボットの頭部をAIでデザインできないかと試してみたい ーまだ始めたばかりですがー

以前に3Dモデルをプログラムで生成するツールを試作していましたが、今年はFusion 360でのモデリング作業が主となっていてなかなか手をつけることができませんでした。1年以上の間、こっちのアプローチの作業はしていない...

ichidaya.hatenablog.jp

ichidaya.hatenablog.jp

 で、最近読んだのがこの本。与えられた画像や音声のパターンを認識するだけではなくて画像やテキストをニューラルネットワークで生成することができるんですね。

 O'Reilly Japan - 生成 Deep Learning

f:id:ichidaya:20201231185910g:plain

生成 Deep Learning

 

 生成される画像データは3次元の配列(縦×横×RGB)なんですが、じゃあ3次元の形状も大きさも定まった配列で表現できれば(そして十分な学習データが用意できれば)センスの有無に関係なくロボットの顔をデザインできる!

そう考えてまず、OBJ形式の3次元データを大きさ固定の配列で表すPythonプログラムを作ってみました。

  1. OBJデータに含まれる点の座標を極座標形式(r, θ,Φ)に変換
  2. 2π/配列サイズの単位でθとΦを離散化、該当するrの値を持つ2次元配列に格納
  3. RGBの値の代わりにθ、Φで決まるベクトル上で最初の点、2番目の点、3番目の点のrを格納していく

Thingiverseで見つけてきた3Dモデルはこんな感じ。

f:id:ichidaya:20201231205638j:plain

ロボットの顔のOBJデータ

64×64×3の配列データに変換して、3Dグラフにプロットしてると以下のようになります。解像度64だとディテールまでは表現できないものの、大雑把な輪郭や特徴的な額のアンテナは再現できそうです。

f:id:ichidaya:20201231210543j:plain

極座標形式に変換してから離散化

学習用のデータを集めるのがたいへんそうだしそもそもニューラルネットの構成をまだ決めていないのですが、来年(2021年)はこの方向の試行も進めていきたいと思っています。