メモ:Sverchokで面生成時にList Join(合并列表)を使う

公開日

原文言語: 中国語 。 AI翻訳: 英語 日本語


プロシージャルモデリングを学びたい。まずHoudiniを少し触った。公式の学習ルートは『Houdini Fundations』かららしいが、進捗が遅い…
そこでふと思い出したのが Sverchok。ドキュメントを見たらこっちの方が面白そうだった。

注意:本文はプロシージャルモデリングの基礎概念をある程度知っている前提
英語資料:Sverchok: Introduction to geometry
中国語資料:菜鸟学bpy(一)新建网格物体

Sverchokのドキュメントは、まず必要な概念を導入して、そのあとすぐ例題をやらせる。段階的なケースで理解を深める構成。
(最初から基礎概念を全部理解させようとするチュートリアルは退屈すぎるので、この方針は良いと思う。)


前置きはここまで。本文。

第2章の「円を作る」ケースで、たぶんコード変更の影響でいくつかのノードの挙動が微妙に変わっていた。他は大丈夫だったが、获取列表长度,自动生成多边形 のところだけ問題が出た。
ドキュメント通りに list rangeviewer draw に繋ぐとエラーになる。

下の図の通り、4頂点の作成までは問題なし:

でもリストを生成して面に繋ぐとエラー:

ビューアで出力を見ると、手書きリストは [[[0,1,2,3]]] なのに、生成リストは [[0,1,2,3]] になっていて、角括弧が1段足りない:

viewer text で見るとさらに分かりやすく、生成リストが4つに分割されている:

解決策は list join ノードを使って wrap にチェックを入れること。これでリストが1つにまとまり、viewer draw に繋いでも問題がなくなる。

2019/11/09 更新
別案として、list joinjoinlevel lists を3にしても、4つのデータを1つにまとめられる。


ドキュメントの例題も残り1章。終わったら学んだことを整理してメモを書くかもしれない。
(不思議なのは、Sverchokはあまり有名じゃないこと。Animation Nodesはそこそこ知られているのに。)


2019/11/09 更新

Blenderがクラッシュするバグを見つけた。原因は Viewer text mk3 ノード。
このノードに入力があり、かつ自動更新にチェックが入っている状態で、Sverchokが生成したモデルを削除しようとするとBlenderが落ちる。

下の図のキューブを削除するとBlenderがクラッシュする:

Blender v2.82.1 daily build(11/08)
Sverchok 0.6.0.0

GitHubにissue提出済み: Viewer text mk3 node bug


2019/11/13 更新

4k録画をYouTubeに上げた: Sverchok docs case