Skip to content

lileaLab/Cinema4DPolygonPen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ProjectionPolygonPen (投影ポリゴンペン)

Cinema 4D 2026.2.0 用のツールプラグイン。ネイティブ「ポリゴンペン」の投影モードが 持つ不具合を回避し、どんな視点・スケールでも正しくメッシュ表面に投影しながら ポリゴンを作成できる。

背景・目的

ネイティブのポリゴンペンの「投影モード」は、建物・町並み規模の大きなモデルを扱いつつ、 その中の小さな家具・小物の細部に使うと、正しくメッシュ状に投影されず カメラ手前の空中に頂点が打たれてしまう(昔からある不具合)。

根本原因(推定): 投影モードはビューポートの深度バッファ(Zバッファ)依存。深度値は 1/z の非線形分布のため、巨大シーン(farクリップ面が極端に遠い)では遠〜中景の深度 精度が破綻し、小物表面の深度を取り損ねて手前に点が飛ぶ。

方針: ネイティブのポリゴンペンは C++ 製で、Python から投影ロジックを流用・フックする 公開APIが無いため、最低限の機能を自作する。投影は深度バッファを使わず c4d.utils.GeRayCollider による解析的レイ-ポリゴン交差で行う。レイと三角形の数学的 交差なので near/far・シーンスケールに一切依存せず常に正確。スナップ(吸着探索)ではなく 単発レイ判定なので軽量で、フォトグラメトリモデルの編集でも負荷が高くならない。

インストール

  1. この ProjectionPolygonPen フォルダを丸ごと Cinema 4D の plugins フォルダにコピー (または シンボリックリンク)。res フォルダも必須なので一緒に。
    • プラグインフォルダ: 編集 > 設定 を開き、左下「設定フォルダを開く」→ plugins
  2. Cinema 4D 2026.2.0 を完全に再起動(プラグインは起動時にのみ読み込まれる)。
  3. Shift+C(コマンダ)で 「ProjectionPolygonPen」 を検索 → 選択でツール有効化。
  4. 「機能拡張 > コンソール」にロードエラーが出ていないことを確認。

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 を開き、以下を確認:

  1. 回帰の核心: 建物全体が入る遠景で小物表面をクリック → 手前の空中に点が飛ばないこと
  2. リトポ型: 無選択でクリック → 新規オブジェクトに頂点列が投影され、最初の頂点クリックで面が閉じる
  3. 多角形: 5点以上クリックして最初の頂点で閉じる → N-gon(または三角群)が表面に沿って生成
  4. 同一: 編集可能ポリゴンを選択 → そのメッシュに直接追加、既存頂点共有で重複が増えない
  5. ドラッグ: 頂点を掴んで動かす → 常に表面に張り付き、離した位置に確定
  6. 透視/平行・近接/遠方いずれでも破綻しない
  7. 右クリック/ESCでキャンセル、離脱後に空オブジェクトが残らない

ファイル構成

ProjectionPolygonPen/
├─ ProjectionPolygonPen.pyp   # ToolData 本体(投影・モード切替・頂点ドラッグ・多角作成・UI)
└─ res/                       # ToolData 登録に必須のリソースフォルダ
   ├─ c4d_symbols.h
   └─ strings_us/c4d_strings.str

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors