了解した。
ここまでの 2D/3D 全ユニット解析を踏まえて、次回以降コピペ不要で即復帰できる《継続メモ(完全版)》 をまとめる。
あなたの Delphi → Blender 移植プロジェクトの OS レイヤー構造を正しく保持した、
長期的に使えるスナップショットになっている。
🧱 《継続メモ(完全版)》2026-05-29
=========================================
■ 0. プロジェクト全体の目的(再確認)
Delphi 版 2D/3D 図形編集 OS を Blender 上に再構築する。
- 2D:定規・定規線・図形編集(ShortH/V, Line, Rect, Bezier…)
- 3D:MeshOS(TMesh)を Blender の bmesh に読み替え
- データ保存:combo / combo_sub 単位のフォルダ保存
- 画像はデータに含めず、外部参照(なぞり描き用)
=========================================
■ 1. 2D OS の構造(Delphi → Blender に移植すべき本質)
● 1-1. 2D データ構造(UnitData2)
Blender では Python クラスとして再構築する:
- ShortH / ShortV(定規線)
- Line / Lines
- MyRect / Ellipse / Bezier
- Lake / Path
- MyPoint / MyPointF
- Obj(グループ ID)
- Selected[](選択状態の唯一の記録場所)
- Pallet[](色テーブル)
- Combos[combo][combo_sub](ページ名)
✔ 重要:要素自身は “選択フラグを持たない”
選択は Selected[] に集約される。
● 1-2. 定規(pngs[])の OS 仕様
Delphi 版の最重要ポイント:
- pngs[2] = 水平定規
- pngs[3] = 垂直定規
- 描画ではなく UI 部品(TImage)
- AddShortH / AddShortV モードでのみ表示
- クリックは PngsMouseDown → ImageDownMouse に流れる
- 定規線(ShortH/V)とは完全に別物
✔ Blender でも
- GPU texture で描画する UI 部品 として扱う
- ShortH/V は別のデータ構造
- 選択モードでは定規ではなく 線を選択
● 1-3. 2D マウス処理(UnitImage)
ImageDownMouse の OS 仕様:
- GX,GY = マウスダウン
- X,Y = マウスアップ
- p,q で単点クリック or 範囲選択を判定
- 単点クリック → SelectXXX
- 範囲選択 → SelectRangeXXX
- Add モード → AddMark など
- 最後に DispAll
✔ Blender では
modal operator で完全再現する。
● 1-4. 色パレット(UnitPallet)
- Pallet[] = 最大 180 色
- PalletNow = 現在の色
- 要素は 色番号だけを持つ
- 描画時にパレットから色を取得
- ハッチパターンも同様に外部テーブル参照
✔ Blender でも
Python list でパレットを保持し、要素はインデックス参照。
=========================================
■ 2. 3D OS の構造(UnitData / UnitMesh / Unit3)
● 2-1. 3D 方向体系(Surface / Arrows / Directions)
Delphi 版 MeshOS の根幹。
- Surface = 24 面の識別子
- Arrows = Surface 遷移表
- Directions = (d0,d1,d2) の軸方向セット
✔ Blender でも必ず移植
2D→3D 変換のために必要。
● 2-2. TMesh(UnitMesh)
Delphi 版 3D モデリングの中心。
- Vertices: TList<TVertex>
- Faces: TList<TFace>
- Translate / Rotate / Subdivide / Fuse / Integrate
- ComputeNormal / ComputeCenter
- RemoveSelectedFacesAndUnusedVertices
- SubdivideFacesByCentroid / EdgeMidpoints
- CreateHexahedronFromRectangles
- etc…
✔ Blender では
- bmesh を使うため、コード移植は不要
- ただし 処理思想(OS)だけ読み替える
● 2-3. 3D ディスパッチャー(Unit3)
- OpenGL
- カーソル移動
- 選択
- 形状生成ダイアログ
- メッシュ操作のルーティング
✔ Blender では
- UI / Operator / bmesh に置換
- Delphi のコードは不要
- 思想だけ保持
=========================================
■ 3. 画像(なぞり描き)OS(UnitImage)
- 画像はデータに含めない
- Combos[i,j] に「x,y,filename」を記録
- Image0 に貼り付ける
- これは なぞり描き用の背景画像
✔ Blender では
- bpy.data.images.load()
- draw handler で GPU texture 描画
- データには含めない(Delphi と同じ)
=========================================
■ 4. Blender 移植のロードマップ(確定版)
● Step 1:2D データ構造(UnitData2)を Python クラス化
- ShortH/V
- Line / Lines
- MyRect / Ellipse / Bezier
- Path / Lake
- Obj
- Selected[]
- Pallet[]
- Combos[]
● Step 2:2D 描画(draw handler)
- 背景画像
- 定規 PNG
- ShortH/V
- Line / Rect / Bezier
- Mark / Path
● Step 3:2D マウス処理(modal operator)
- ImageDownMouse の完全移植
- 単点クリック / 範囲選択
- Add / Select / Unselect
● Step 4:色パレット UI
- Python Panel
- パレット描画
- 色選択
● Step 5:3D 方向体系の移植
- Surface / Arrows / Directions を Python dict に
● Step 6:3D 形状生成(台形シートなど)
- すでに台形シートは完成
- 他の形状も必要に応じて移植
=========================================
■ 5. 現在の到達点(2026-05-29)
- 2D OS の 80% を完全解析済み
- 定規 PNG の OS 仕様を正しく理解
- 2D データ構造の全体像を把握
- 3D OS(UnitMesh)の読み替え方も確定
- Blender 側での再構築方針が完全に固まった
=========================================
■ 6. 次回の開始地点(選択肢)
- Blender 版 UnitData2(Python クラス化)を開始
- Blender 版 定規 PNG(GPU texture)を実装
- Blender 版 ShortH/V の描画を実装
- Blender 版 ImageDownMouse(modal operator)を実装
- Blender 版 色パレット UI を作る
どこからでも即再開できる。
この継続メモは あなたの Delphi → Blender 移植 OS の“完全な地図” になっている。
次はどこに進める?