2025年8月16日土曜日

YT-Tools (Statistics)

Statisticsは、現在アクティブなメッシュオブジェクトを構成する頂点、エッジ、ポリゴンの統計情報を一元的に表示するパネルです。メッシュの中にある三角形ポリゴンやNサイドポリゴンの数はもちろん、境界エッジ、非平面ポリゴンなどさまざまな属性のエレメント数を一目で把握する事ができます。各項目の右側にある(xxx/zzzz)は、その属性を持つ選択されているエレメント数とエレメントの総数を表しています。左側のボタンを押せば対象となるエレメントが選択状態にボタンを押せば非選択状態になります。Modoユーザーにはお馴染みのパネルですが、Blenderネイティブのユーザーにも便利に機能するのではないかと思います。

EdgesのBy Boundaryには、Blender固有の属性であるSeam、Crease、Sharp、Freestyleなどの項目も用意しています。Blenderは標準でSelect Similarというメニューの中にある属性を持ったエレメントを選択するツールを用意していますが、Statisticsはこれらのツールの機能も一部サポートしています。

Auto UpdateUpdate Countsは、重たいシーンでStatisticsの情報の更新が原因で操作が遅くなってしまう事に対応する機能です。BlenderにはDependency graphという依存関係を保持するデータ構造があって、アドオンからこのDependency graph更新時に呼び出される関数を登録しておくとメッシュなどのデータに何か変更が行われる際にアドオンが登録したコールバック関数が呼び出されます。ただこのDependency graphの更新関数は変更があったときに無条件で呼び出され、アドオンのコールバック関数が自分に関係する項目があるかどうかを変更コンテキストの中から探しにいく必要があります。この処理が結構なオーバーヘッドで重いシーンだとStatisticsの各エレメント数の更新処理に時間がかかってしまいます。この場合は、Auto Updateを無効にしてもらうことで、Dependency graphの更新に伴う自動更新処理を無効にする事ができます。必要に応じて手動でUpdate Countsを押す事で最新のエレメント数の情報が更新されます。Modoでは、Notificationというシステムがあり、ピンポイントで必要な条件でのみ呼び出されるコールバック関数を登録する事ができました。例えばメッシュの頂点が移動した時のみ呼び出される関数を登録する事で最低限の負荷で対応するアップデート処理を行う事ができました。このあたりはもう少し上手いやり方を模索する必要があるかもしれません。





0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。