2026年8月8日土曜日

UV Transform

UV TransformというModoのプラグインをリリースいたしました。このツールは3Dビュー上で直感的にUV座標値を編集することを目的に開発したツールです。UVの編集はUVビュー上でトランスフォームツールなどを使って行い、その結果を3Dビュー上で確認するというのが一般的です。編集しているビューと結果を確認しているビューが異なるため、UV編集の微調整が難しい場合があります。UV Transformは、3Dビュー上でドラッグしたポリゴンのUVがマウスに追従して移動するので直感的にUVの編集を行うことができます。UVビューでの編集も同時に行うことができますので、3DビューとUVビューを交互に切り替えながら編集を行うことができます。


基本的な使い方は編集したいUVマップを持つポリゴンをLMB(左マウスボタン)でクリックし、そのままドラッグするとマウスの移動方向に選択されているポリゴンのUVが移動します。UVマップは二次元、3Dメッシュのポリゴンは三次元ですのでクリックしたポリゴンを構成する三角形を参照三角形として、UVと3Dメッシュの座標値の位置合わせを行っています。

また、一度ポリゴンをクリックするとお馴染みのトランスフォームで使うようなツールハンドルが表示されますのでこのツールハンドルを使ってUV座標値を編集することも可能です。ツールハンドルは常にスクリーン座標に表示されます。スクリーンに垂直な平面上に表示される2次元のツールハンドル提供されます。

回転とスケールのピボット位置はクリックしたポリゴンの位置が設定されますが、Center of Selection to Pivotを押すと、選択されているUVポリゴンの境界ボックスの中心にピボットが移動します。

RMB(右マウスボタン)には、スケール操作が割り当てられています。RMBでドラッグするとUとVのスケール値が同時に変更されます。Control-RMBではU方向の移動量とV方向の移動量を比較し、移動量が大きい方の軸方向(UまたはV)のみスケールします。

Control-LMBも同様にU方向の移動量とV方向の移動量を比較し、移動量が大きい方の軸方向(UまたはV)のみ移動します。これに対して軸ハンドルの移動はスクリーンのXY方向の移動がUVマップの移動に変換されることにご注意ください。

Twistを有効にするとUVマップ全体ではなく、エレメント移動ツールのようにドラッグしているエレメント(頂点、エッジ、ポリゴン)にマップされているUV値だけが移動されます。


2026年7月9日木曜日

Auto Part By Distance

Auto Part By Distanceは、Modoを使ってアセットを製作するユーザーからのリクエストを受けて開発したツールです。複数のポリゴンパーツをグループ化し、同一グループのポリゴンにポリゴンPartタグをセットします。用途が少し特殊なので一般的なモデリングワークフローでは出番は少ないと思いますが、ゲーム開発のアセット作成での作業効率を上げるためにはこのようなツールが重宝するようです。ソースコードも公開していますので目的に応じてカスタマイズして使うこともできます。

基本的なアルゴリズムは連結されているポリゴンパーツもしくは選択されている連結ポリゴン単位のバウンディングボックスを計算し、指定されたSearch Distance以内にある近傍のポリゴンパーツをグループ化しています。各グループは青色のバウンディングボックスで表示され、Currentで指定したグループに含まれているポリゴンパートの数とポリゴン数が3Dビュー左上にテキストで表示されます。

同一グループのポリゴンには、グループのシーケンス番号がポリゴンのPartタグに文字列としてセットされます。Prefixで文字列を入力するとシーケンス番号の前にその文字列が付加されます。また、Senecaからの要望で、ランダムな文字列でユニークなPartタグを生成するRandom Part Nameオプションを追加しました。これを有効にすると0-9,a-z,A-Zの文字で構成する12文字の文字列がタグにセットされます。



2026年7月3日金曜日

Random Falloff

Random Falloffは、フォールオフウェイトの値をランダムに生成するサブツールです。このフォールオフは、頂点の座標値は使わずに連続するポリゴンのグループやエレメント単位にランダム値をウェイトとして設定します。

フォールウェイトを生成するソースとしては、メッシュのエレメント(頂点、エッジ、ポリゴン)、連続するエレメントのアイランド単位、もしくはポリゴンに設定されている同一Partタグ単位にランダムウェイト値を生成します。

フォールオフウェイトはメッシュの各頂点単位に参照されます。エッジもしくはポリゴン選択モードでソースをエレメントにした場合は、共有する頂点は連結されているいずれかのエッジもしくはポリゴンのウェイト値が設定されます。Random Falloffは、現在選択されているエレメントに対してウェイト値を設定しますので、孤立した選択したポリゴンなどに対してランダムウェイト値を設定したい場合などに使用します。

Selection Islandモードは、選択されている連続したメッシュエレメントをグループ化し、各グループに対してランダムウェイト値を設定します。なにも選択されていない場合は、連結されているポリゴンのグループ単位にウェイトを設定します。



Random Falloffは、ダイレクトモデリングツールのための汎用的なフォールオフサブツールですので、トランスフォームツールの他、フォールオフをサポートするベベルなどのモデリングツールなどとも使用することができます。



2026年6月23日火曜日

YT-Tools for Blender (Selection Island)

YT-Tools for Blender v1.8.7を公開いたしました。このバージョンはマイナーチェンジで、リニアトランスフォームにSelection Islandというオプションを追加しています。

通常リニアトランスフォームは、リニアフォールオフギズモに対する各頂点の座標値を基準にして減衰率を計算しています。リニアフォールオフギズモがZ軸に沿って置かれている場合、座標値のZ値の大きさに基づいてフォールオフウェイトが拡大縮小します。

Selection Islandは、Faceが連続して選択されている塊をアイランドとしてグループ化し、そのアイランドに所属する頂点は各頂点の座標値の代わりに、アイランドの中心位置で減衰率が計算されます。これによりアイランドに所属する頂点は各頂点は同じフォールオフウェイトを持つことになります。なにも選択がされてない場合は、Faceのトポロジー情報から連結されているFaceのグループがアイランドになります。

例えば下記のように複数の直方体を直方体単位に徐々にスケールをかけたい場合などに便利です。



2026年6月18日木曜日

Select Edges By Polygon Angle

Select Edges By Polygon Angleは、凸エッジ、凹エッジ、平面上エッジをインタラクティブに選択するためのModoの選択ツールです。平面上エッジ(Coplanar)は、Statisticsパネルで選択可能ですが、角度を指定して凸エッジ、凹エッジを選択する機能はありませんでした。条件を変更しながらこれらのエッジの選択を用意にするためにツールとして実装しています。

ConvexConcaveはそれぞれ凸エッジ、凹エッジの選択を有効にするオプションで、AngleとOperatorで指定した条件を満たすエッジを選択します。例えばConvexを有効にし、Angleに5.0°、Operatorを指定すると、共有する2つのポリゴンの法線ベクトルの角度が5.0°を超えるエッジが選択されます。

Angleに0.0°、Operator=を指定すれば、平面上エッジ(Coplanar)を選択することができますが、このツールではCoplanarという平面上エッジ(Coplanar)を選択するオプションを明示的に用意しています。このツールのCoplanarの選択はModoのStatisticsで使用している平面率を指定した平面上エッジ(Coplanar)の選択と同じアルゴリズムを使用しています。



2026年6月16日火曜日

Select Colinear Vertices

Select Colinear Verticesを公開いたしました。しばらくはBlenderのアドオンの開発をお休みしてリクエストを頂いているModoのプラグインを開発していく予定です。FoundryでModoの開発をしている最中は、担当するキーフューチャーをメインに実装していたため、ユーザーからの比較的小さな機能リクエストは開発のプライオリティが低くなっていました。Foundryから離れてようやく自由に作りたいものが作れるようになった気がします🙂

Select Colinear Verticesは、同一直線上にある頂点を選択するツールです。これは比較的簡単なツールで、同じような機能のスクリプトなどはありますが、頂点に連結されている2つのエッジの許容角度を指定してインタラクティブに操作したいというリクエストがありましたので、ツール版のSelect Colinear Verticesを作りました。

同一直線上の頂点とは、2つのエッジが連結されている頂点で連結する3つの頂点の座標値が同一直線上にある頂点です。面ポリゴンのエッジの他、ポリラインの頂点も選択対象になります。



2026年6月11日木曜日

Curve To Polyline

Curve To Polylineを公開しました。これはModoのカーブをポリラインに変換するModoのキットで、macOSとWindowsのModo 16.1, Modo 17.1で動作します。

この機能もModoのユーザーの方からのリクエストに基づいて開発したもので、Modoのカーブをゲームのアセットとして使いやすいように最適化されたポリラインに変換するのが目的です。通常Modoでカーブをポリラインに変換する場合は、Freezeコマンドを使用します。Curve Refinement Angleを指定すれば曲率を考慮した変換を行うことができますが、Curve To Polylineではもう少し変換の方法を細かく指定することができます。

Uniform Lengthは、Countで指定した数でカーブのセグメントを同じ長さになるように変換します。これはCatmull-Romカーブだけでなく、ポリラインに対しても動作しますので、カーブのリサンプリングを行う目的にも使うことができます。



Maximum Angleは、カーブの接線の傾きが指定した値を超えた場合にポイントを追加するアルゴリズムです。曲率が大きい場所ではより細かく分割され、なだらかな場所では平坦になります。



Minumum Edge Lengthは、微細なエッジが作られるのを防止するための値で、出力されるエッジの長さがこの値よりも小さくなってしまう場合は、角度が大きくても長さを優先して分割を行います。

Angle Adjustmentは、より繊細なコントロールを行うためのオプションで、最も長い分割エッジの長さを基準に判定する角度を調整する機能です。Minumum Edge Lengthが短いエッジをクランプしてしまうのに対し、Angle Adjustmentは分割エッジの長さに応じて求めたウェイトで判定角度を調整しています。