Cinema 4D 2026.2.0 用のツールプラグイン。ネイティブ「ポリゴンペン」の投影モードが 持つ不具合を回避し、どんな視点・スケールでも正しくメッシュ表面に投影しながら ポリゴンを作成できる。
ネイティブのポリゴンペンの「投影モード」は、建物・町並み規模の大きなモデルを扱いつつ、 その中の小さな家具・小物の細部に使うと、正しくメッシュ状に投影されず カメラ手前の空中に頂点が打たれてしまう(昔からある不具合)。
根本原因(推定): 投影モードはビューポートの深度バッファ(Zバッファ)依存。深度値は
1/z の非線形分布のため、巨大シーン(farクリップ面が極端に遠い)では遠〜中景の深度
精度が破綻し、小物表面の深度を取り損ねて手前に点が飛ぶ。
方針: ネイティブのポリゴンペンは C++ 製で、Python から投影ロジックを流用・フックする
公開APIが無いため、最低限の機能を自作する。投影は深度バッファを使わず
c4d.utils.GeRayCollider による解析的レイ-ポリゴン交差で行う。レイと三角形の数学的
交差なので near/far・シーンスケールに一切依存せず常に正確。スナップ(吸着探索)ではなく
単発レイ判定なので軽量で、フォトグラメトリモデルの編集でも負荷が高くならない。
- この
ProjectionPolygonPenフォルダを丸ごと Cinema 4D のpluginsフォルダにコピー (または シンボリックリンク)。resフォルダも必須なので一緒に。- プラグインフォルダ:
編集 > 設定を開き、左下「設定フォルダを開く」→plugins。
- プラグインフォルダ:
- Cinema 4D 2026.2.0 を完全に再起動(プラグインは起動時にのみ読み込まれる)。
Shift+C(コマンダ)で 「ProjectionPolygonPen」 を検索 → 選択でツール有効化。- 「機能拡張 > コンソール」にロードエラーが出ていないことを確認。
ProjectionPolygonPen.pyp冒頭のPLUGIN_IDは暫定値です。配布する場合は plugincafe.maxon.net で取得した一意IDに差し替えてください。
| 操作 | 動作 |
|---|---|
| 左クリック | 下地メッシュ表面に投影して頂点を打つ(連続クリックで頂点列を作成) |
| 最初の頂点をクリック | 3頂点以上たまっていれば多角形(N-gon)を閉じて作成・確定 |
| 既存頂点をドラッグ | メッシュ表面に投影しながら移動、離した位置の表面に確定 |
| 既存頂点をクリック(動かさず) | その頂点を共有(継ぎ足し) |
| 右クリック / ESC | 作成中の頂点列を破棄 |
頂点数の上限はなく、三角・四角・任意の多角形(N-gon)を作成できます。5頂点以上は内部で
三角ファン分割したうえで UNTRIANGULATE により1枚のN-gonへ統合します。
- 何も選択なし / 編集不可オブジェクト選択 → リトポ型:下地にレイを当て、新規 PolygonObject(名前
ProjectionPolygonPen)に作成 - 編集可能ポリゴン選択 → 同一オブジェクト:その選択メッシュに直接描き足し
- 投影対象: 全シーン / 選択のみ(巨大シーンで重い場合は「選択のみ」で軽量化)
- 頂点掴み許容 (px): 既存頂点を掴む/閉じる/共有を判定するスクリーン距離のしきい値(既定 8px)
頂点削除・エッジ分割・スナップ機能は対象外(削除/分割は既存ツールで実施)。
- 5頂点以上の N-gon 化(
UNTRIANGULATE)が効かない場合、三角ファン分割のまま残る (形状は同じ。単一N-gonにならないだけ) bd.SWの深度スケール(2点法で吸収するが、平行投影での z0/z1 安定性)- パラメトリック/サブディビ下地のキャッシュ行列(
GetMg()が仮想オブジェクトで期待どおりか。 ズレる場合はGetMl()の親からの合成に切替が必要) - 全シーン投影かつオブジェクト多数の場合のホバー時負荷(「選択のみ」で緩和)
- 編集可能ポリゴンが巨大(フォトグラメトリ等)な場合、それを選択して直接描き足すと 1クリックごとの Undo 記録が重くなる(C4D は変更をオブジェクト単位で記録するため)。 巨大メッシュは「無選択(リトポ型・別オブジェクトに作成)」での使用を推奨
SampleData/EirakuKan_Test_PolygonPen.c4d を開き、以下を確認:
- 回帰の核心: 建物全体が入る遠景で小物表面をクリック → 手前の空中に点が飛ばないこと
- リトポ型: 無選択でクリック → 新規オブジェクトに頂点列が投影され、最初の頂点クリックで面が閉じる
- 多角形: 5点以上クリックして最初の頂点で閉じる → N-gon(または三角群)が表面に沿って生成
- 同一: 編集可能ポリゴンを選択 → そのメッシュに直接追加、既存頂点共有で重複が増えない
- ドラッグ: 頂点を掴んで動かす → 常に表面に張り付き、離した位置に確定
- 透視/平行・近接/遠方いずれでも破綻しない
- 右クリック/ESCでキャンセル、離脱後に空オブジェクトが残らない
ProjectionPolygonPen/
├─ ProjectionPolygonPen.pyp # ToolData 本体(投影・モード切替・頂点ドラッグ・多角作成・UI)
└─ res/ # ToolData 登録に必須のリソースフォルダ
├─ c4d_symbols.h
└─ strings_us/c4d_strings.str