立体を滑らかに細分化する

 今回もブログを読んで頂いてありがとうございます。

 今回から紹介していく私が作ったBlenderアドオンは、COM3D2のボディーモデルの改造に目的を絞って作ったアドオンです。

 モデリングをする上であらゆる場面で気を遣うのが、滑らかな曲面に見えるように頂点を配置する作業ではないかと思います。
 そして、私のような絵心のない人間には難しい作業であると同時に、「これでいいのか?」「これで大丈夫なのか?」と自分のやっていることに今一自信を持てない悩ましい作業でもあります。
 もっと言えば、ドラッグ・アンド・ドロップのフリーハンドのモデリングでは、思い通りの位置に頂点を持っていくことさえ思うようにはいきません。

 ということで、私のような人間でも簡単に滑らかで美しい曲面に見えるように頂点を配置できるツールを作ってみました。
 その名も『Rounder』です。
 丸めるという意味と、言葉の響きが何となくBlenderに似ていることからそう名付けました。

Rounderの主なツール

 では、Rounderにはどんなツールがあるのかということで、スペシャルメニューに予め追加しておいた「Rounder」というメニューを開きますとザっとこんな感じです。

 COM3D2のボディーを改造するために色々追加していったらこんな増えていました。(ちなみに、Blenderのバージョンは2.79を使っています)
 しかし、よくよく見るとスペシャルメニューのほうと同じような名前のものもちらほらと……

 ぶっちゃけ、既にあったツールを知らずに作ってしまったわけですが(汗)

 ただ、ちょうど今回のテーマに関するツールでもありますので、 スペシャルメニューの「細分化(スムーズ)」とRounderの「スムーズ細分化」がそれぞれどんな感じに細分化するのかを比較しながら、私が作ったツールについて説明させて頂けたらと思います。

スムーズ細分化

 では、細分化した画像をお見せする前に、Rounderの「スムーズ細分化」がどのようなツールなのかを簡単に説明させて頂きたいと思います。

 まず、上の図のように辺を選択して「スムーズ細分化」を実行します。(面でも複数でも選択可)

 すると、 選択した辺を構成する各頂点(左図の赤い点)から左図の白い矢印のような反対側の頂点へ向かうベクトルが作られます。
 次に、 選択した辺を構成する頂点とつながっている辺(左図の黄色い線)を、その頂点へ向かうベクトル(左図の黄色い矢印)に変換し、その中から、白い矢印に最も近い向きの黄色い矢印の辺が選び出されます。反対側の頂点でも同じことが行われます。

 こうして選び出された2つの辺から4つの頂点(右図の赤い点)が選び出されていますので、 細分化によって新たに生成された頂点(右図の白丸の中)をその4つの頂点の軌道上に来るようにいい塩梅に配置してくれるというのが「スムーズ細分化」というツールです。

球とトーラスの細分化と細分化方式の違い

 それでは、球とトーラスを細分化したものから見比べて頂きたいと思います。

トーラス

双方の違い

 遠目からでは大差ないように見えますが、近くに寄るとると若干違いがあるのがお分かりでしょうか。
 スペシャルメニューの「細分化(スムーズ)」の方は、球の経線をよく見ると下の図の赤線ように経線が若干波打っているのが分かりますでしょうか?(赤線ないほうがわかりやすかった…)

 この波模様は、法線を利用して、細分化で生成された頂点の位置を決める方式の特徴です。

 私も当初は、法線を使う方法で開発していたので、この経線の波模様には随分頭を抱えました。
 COM3D2のボディーにもどことは言いませんがこれと同じ問題が発生する部分が2か所ほどあったので「これは何とかしなければ!」ということで血眼になって解決方法を探したものです。

 結局、Rounderでは、法線という辺ではなく、モデルを構成する辺そのものを使って、細分化で生成された頂点の位置を決めるやり方にしましたが、もしかしたら、法線方式のこの問題は、回転行列とかの知識があれば解消できるのかなという心当たりもいくつかありましたが、付け焼刃の数学的知識をつなぎ合わせて何とかやっている私には回転行列にまで首を突っ込む余裕はなかったので今は頓挫しています。

他のプリミティブの細分化と開発コンセプト

 他のプリミティブもどんな感じに細分化されるかさらっと見て頂きたいと思います。

ICO球

 ICO球は、1回の細分化では大した違いはないですが、Rounderの方は、細分化を繰り返すとポリゴンフローがどんどん歪んでいってしまいます。
 このICO球は、辺同士がまっすぐつながっている部分とそうでない部分があったり、三角ポリゴンの場合、単純に向きが近い辺を選ばせても、人の目から見て美しい点の並びになるとは限らないケースが多かったりと、軌道計算そのものではなく、そのもととなる辺の選び出しの部分でなかなか上手くいっていません。

 続いて、円柱、円錐、立方体は、ダイジェストでご覧ください。

円柱

円錐

立方体

 スペシャルメニューの方は、はっちゃけた感じになっています。

グリッド

 Rounderは、平面を細分化することは想定していないので細かい部分はほったらかしになっています。

モンキー

 最後はお約束のモンキーということで。
 尚、円と平面は、大して面白くなかったので割愛させて頂きました。

 まだ、一番肝心のCOM3D2のボディーを細分化していませんが、それを今回に盛り込むとさすがに時間が掛かり過ぎるので、それは、次回ということで。

コンセプトの違い

 スペシャルメニューの「細分化(スムーズ)」とRounderの「スムーズ細分化」の方式の違いは先ほども述べた通りですが、それ以上に大事な違いがコンセプトではないかなと思います。

 円柱、円錐、立方体に双方の違いが顕著に表れていたわけですが(グリッドは論外)、スペシャルメニューの方は、いかなるケースで実行されても一様に同じ処理を実行することで、より汎用的に使えるツールとして作られているのに対し、Rounderの方はCOM3D2のボディーを改造するという限られた目的と用途に合わせたツールとして作っています。
 そのために不都合な結果になってしまうケースでは、 汎用性や体裁などはお構いなしに、違う処理を実行するなどの制御を行っていますので、そういったコンセプトの違いが円柱やグリッドには表れたわけです。

 このように、自分の目的や都合に合わせて、一般に出回っている汎用的なツールがしてくれないようなことをさせられるのが自分でツールを作る醍醐味であり、このブログでは、そういったBlenderツールの紹介を通して、自ら作るという究極のカスタマイズの魅力をこんな感じで今後も発信していけたらと思っていますので、興味がありましたら是非また読んで頂けたら思います。

 それでは、今回も最後まで読んで頂き、ありがとうございました。