Catmull–Clark subdivision surfaceとは
Catmull–Clark subdivision surfaceとは、2024年現在使われているOpenSubdivの元になったアルゴリズムです。
BlenderもShade3DもOpenSubdivに対応しているようです。
Catmull-Clark Subdivisionに解説していくので、最新のSubdivision surfaceについて解説していくわけではないので、予めご了承ください。
アルゴリズム
多面体メッシュが引数です。(三角形でなくてもOKです。N角形群とお考え下さい)
1. 面の平均の点を求めます。これを面の新しい点と呼ぶことにします。
2. 辺の含む面の平均の点と辺の端点の平均を求めます。
辺の含む面の新しい点がA,F、辺の端点をM,Eとすると、以下です。
これを辺の新しい点と呼ぶことにします。
3. 新しい点の座標を作成します。
イメージとしては、点の値を更新する感じです。
元の点をP、Pを含む面の新しい点の平均をF、Pに接続する辺の中点の平均をRとすると、新しい点の座標は以下です。
nはPを含む面の数とします。(nはPに接続する辺の数でもあります。)
4. 面の新しい点とその面に接続する辺の新しい点を接続します。
5. 元の点に属するすべての辺の新しい点に接続します。
6. 4と5で作成した辺で閉じたのが新しい面です。
以上です。お疲れさまでした。
なんかややこしく見えますが、単純です。
本アルゴリズムのJavaScriptで書かれたソースを見つけたので解説予定です。<=書きました。参考リンク参照。
最後に
Catmull–Clark subdivision surfaceを読んだ方が分かりやすいと思います。