2025年12月22日月曜日

Blender オブジェクトの部分選択範囲の面積測定

 Measuring the Area of ​​a Selected Part of an Object in Blender


I created a Blender Python script that selects a portion of an object in the Blender 3D viewport and measures the area of ​​that selection.


Blender3Dビューポートにおいてあるオブジェクトの一定部分を選択し、その選択範囲の面積を測定するBlenderPythonスクリプトを作成しました。

1 オブジェクト部分選択範囲の面積測定BlenderPythonスクリプト

import bpy
import bmesh

obj = bpy.context.edit_object
mw = obj.matrix_world

bm = bmesh.from_edit_mesh(obj.data)

# 選択面があるか確認
if not any(f.select for f in bm.faces):
    print("No faces selected. Face Select(3)で面を選択してください。")
    raise SystemExit

# 選択状態を保ったままコピー
bm2 = bm.copy()

# コピー側で「選択面」だけ取得(index対応は使わない)
sel2 = [f for f in bm2.faces if f.select]

# 選択面だけ三角化し、生成された三角形(result['faces'])だけを使う
res = bmesh.ops.triangulate(bm2, faces=sel2)
tri_faces = res.get("faces", [])

area = 0.0
for f in tri_faces:
    if len(f.verts) != 3:
        continue
    v0, v1, v2 = [mw @ v.co for v in f.verts]
    area += 0.5 * (v1 - v0).cross(v2 - v0).length

bm2.free()

print("Selected face area (WORLD, triangulated selection only) =", area)
2 使い方

・BlenderPythonスクリプトをBlenderテキストエディターにコピー

・エディターモードでオブジェクトの部分を選択

・BlenderPythonスクリプトを走らせる。

・システムコンソールに面積が表示される。

(システムコンソールはウィンドウ→システムコンソール切り替えで事前に表示しておきます。なおデフォルトでシステムコンソールは文字化けしていますが、面積は正常に読み取れます。)


立体オブジェクトの一部を選択した様子


システムコンソールに面積測定結果が表示された様子

3 特別な性能

・オブジェクトのスケールが(1,1,1)でなくても、つまり非等方スケール(例 (30、30、1))でも、3Dビューポートにおける正確な面積を測定します。

4 無料アドオン3D Print Toolboxについて

Blenderアドオン3D Print Toolboxで立体オブジェクトの体積と表面積を測定できます。平面メッシュなら、その表面積を測定できます。しかし、立体オブジェクトの部分を選択してその面積を測定することはできません。

11断面幅20㎝スリットの遺物(製品)件数

 Number of artifacts (products) from the 11-section, 20cm-wide slit


The artifacts excavated from the 11-section, 20cm-wide slit were collectively classified as pottery, stone tools, bone-horn-and-tooth artifacts, and shell artifacts, and the number of artifacts was tallied. The results were then analyzed by shell layer. Four layers showed a significant number of artifacts, and I will be focusing on these layers in the future.


11断面幅20㎝スリットから出土した遺物のうち土器、石器、骨角歯牙製品、貝製品を製品として一括し、件数を集計しました。集計結果を貝層分層別に表現して観察しました。4つの分層からの製品出土が顕著であり、今後これらの分層に注目することにします。

1 11断面幅20㎝スリット出土遺物(製品)の分層別集計


11断面幅20㎝スリット出土遺物(製品)の分層別集計

2 11断面幅20㎝スリット出土遺物(製品)件数 分級表示


11断面幅20㎝スリット出土遺物(製品)件数 分級表示

3 メモ

11断面幅20㎝スリットから出土した遺物のうち土器、石器、骨角歯牙製品、貝製品を製品として一括し、件数を集計しました。集計結果を貝層分層別に分級表現して観察しました。製品出土が顕著な分層は斜面成混土貝層のS3、S2、流路性混土貝層のXと黒褐色土のKです。今後、れらの分層に注目することにします。


11断面幅20㎝スリットの貝層分層別遺物密度(件/㎥)

 Artifact density (items/m3) by shell layer stratification in 11 cross-sections of a 20cm-wide slit


The artifact density (items/m3) by shell layer stratification was measured in 11 cross-sections of a 20cm-wide slit. The artifact density was found to be particularly high in the slope shell layer.


11断面幅20㎝スリットの貝層分層別遺物密度(件/㎥)を計測しました。斜面性貝層の遺物密度がとりわけ高いことが判りました。

1 11断面幅20㎝スリット出土遺物の分層別集計


11断面幅20㎝スリット出土遺物の分層別集計

分層別断面積はBlender3Dビューポートで特性BlenderPythonスクリプトで計測しました。分層別体積は断面積(㎡)×0.2mで算出しました。

2 11断面遺物密度(件/㎥)


11断面遺物密度(件/㎥)

斜面性貝層の遺物密度がとりわけ高いことが判ります。


参考 11断面遺物件数


参考 貝層区分と名称

3 分析


遺物件数と遺物密度

遺物件数/密度という観点からみると斜面性混土貝層(S1、S2、S3)グループと斜面性黒褐色混土貝層(R1、R2、R3)グループが最も主要な貝層であることが判ります。

S1、S2と比べてS3の遺物密度が低くなっています。これは遺物数に対して貝殻体積が大きいことを意味しています。つまりS3の時期に貝が豊漁であったことを示していると想定できます。セクション図では、S3層はハマグリ純貝層として記載されています。なおS3が全層位のなかで最上位ですから、北斜面貝層発達史の最終局面でハマグリが豊漁だったことになります。

斜面性混土貝層(S1、S2、S3)グループと斜面性黒褐色混土貝層(R1、R2、R3)グループの違いは遺物件数の違いになります。遺物件数が違うというこが何を意味するか、興味が深まります。もし、集落活動の活性状況を表現しているとすれば、貝層そのものの違い(色、貝殻構成など)と合わせて、環境復元の世界に足を踏み込むことができるかもしれません。

遺物件数/密度という観点から流路性混土(砂)貝層(V、W、X)グループ、黒褐色度(K)、流路性土層(D5)も興味対象になります。

なお、以上のもの以外の貝層分層はHを除き全て遺物を含んでいて、なぜそこから遺物が出土するのかという全く逆の観点からの強い興味対象となります。


2025年12月20日土曜日

11断面幅20㎝スリット出土遺物の貝層分層別集計

 Tabulation of artifacts excavated from 11 cross-section, 20cm-wide slits by shell layer stratification.


Artifacts excavated from 11 cross-section, 20cm-wide slits on the northern slope of the shell layer at the Ariyoshikita Shell Mound were tabulated by shell layer stratification. A tendency for artifacts to increase after the second stage of shell layer development and a tendency for artifacts to be more abundant in the mixed-soil shell layer were observed.


有吉北貝塚北斜面貝層の11断面幅20㎝スリットから出土した遺物について、貝層分層別に集計しました。貝層発達の第2段階以降遺物が増える傾向と混土貝層で遺物が多い傾向が観察できます。

1 11断面幅20㎝スリット出土遺物の貝層分層別集計


11断面幅20㎝スリット出土遺物の貝層分層別集計

2 11断面遺物件数 貝層分層別分級表示


11断面遺物件数 貝層分層別分級表示


11断面 遺物プロットと貝層分層

3 参考 これまでの検討


11断面 貝層区分と名称


11断面 貝層区分と発達段階


11断面 営力検討資料

4 メモ

有吉北貝塚北斜面貝層の11断面幅20㎝スリットから出土した遺物について、貝層分層別に集計しました。貝層発達の第2段階以降の混土貝層で遺物が増える傾向が読み取れます。ただ。K黒褐色土(第1段階)は遺物出土が多くなっていて、K層内の分布が最上部に偏っていて、特異です。今後K層について検討を深めることにします。混土貝層以外の崩落層、土層では遺物出土が少なくなっています。H崩落層は遺物出土が0です。

この集計結果について、遺物密度(件数/分層体積)や遺物種別(製品と食料残滓別)などについてさらに検討を続けます。


2025年12月17日水曜日

技術メモ 断面幅20㎝スリットから出土した遺物の分層別集計方法

 Technical Note: A method for counting artifacts by layer excavated from a 20cm-wide slit.


I developed a method for counting artifacts by layer excavated from a 20cm-wide slit. I used layer lines from Illustrator and Blender Python to count the artifacts.


断面幅20㎝スリットから出土した遺物の分層別集計方法を具現しました。Illustrator由来の分層線を利用してBlenderPythonで集計します。

1 断面幅20㎝スリットから出土した遺物


断面幅20㎝スリットから出土した遺物(11断面)

2025.12.06記事「11断面幅20㎝スリットから出土した遺物抽出」参照

2 断面幅20㎝スリットから出土した遺物の分層別集計方法

2-1 分層別集計用メッシュオブジェクト作成


分層と遺物分布

分層線はIllustrator由来のカーブ

遺物は点群で2つの属性(id,bunruicode)を具備しています。


S3混土貝層の集計用メッシュオブジェクト

分層線(カーブ)から押し出しと面貼りを利用して、遺物を完全に内包するメッシュオブジェクトを作成します。

2-2 BlenderPythonによる分層内遺物集計

集計用BlenderPythonをChatGPT支援で作成しました。集計は分層毎に行い、遺物リストと分類コード別集計(統計)の2つのcsvファイルを生成します。


集計と統計のcsvファイル

3 メモ

少し前まで、手にカウンターを持って、画面を見ながら数えるようなこともあったのですが、そうした活動はようやく過去のものとなりました。


2025年12月16日火曜日

技術メモ Illustratorで描いたパスをBlenderにプロットする方法

 Technical Note: How to Plot Paths Drawn in Illustrator to Blender


I plotted the shell boundary lines of a section drawing drawn in Illustrator to Blender as an SVG file. This eliminated the need to draw the same boundary lines twice in Blender.


Illustratorで描いたセクション図の貝層界線をSVGファイルでBlenderにプロットしました。これにより、Blenderで同じ界線を描く二度手間が解消されました。

1 Illustratorで描いたパスのBlenderプロット


Illustratorで描いたパスのBlenderプロット

Illustratorで描いた貝層界線(パス)をSVGファイル出力し、Blenderにインポートするとカーブになります。カーブの位置、大きさを正確に調整してからメッシュオブジェクトにすることにより、遺物点群集計などに使うことができます。


Illustratorで貝層界線(パス)を描いている様子


Illustratorで描いたパス

2 メモ

界線カーブをメッシュオブジェクトに変換し、押し出しにより厚みを持たせ、両側に面を貼ることで、貝層分層の姿に対応した3次元メッシュオブジェクトをつくることができます。このメッシュオブジェクトを利用して、スリットに分布する遺物を貝層分層毎に把握、集計できるようになります。


スリット分布遺物の貝層分層別集計用のメッシュオブジェクト

技術メモ セクション図を正確にBlenderにプロットする方法

 Technical Note: How to Accurately Plot Sectional Drawings in Blender


I've written a note on how to accurately plot sectional drawings in Blender. You can accurately plot them by calculating the image's center of gravity and size in the same units as the Blender3D viewport.


セクション図を正確にBlenderにプロットする方法をメモしました。Blender3Dビューポートと同じ単位で画像の重心位置と画像大きさを求めれば、正確にプロットできます。

1 セクション図を正確にBlenderにプロットする方法


セクション図を正確にBlenderにプロットする方法

1-1 画像重心位置、画像寸法を求める

画像ソフト(Illustratorなど)で画像の重心位置と寸法をBlender3Dビューポートと同じ単位で求めます。

画像ソフトによる計測値(例 pixel)を画像内スケール(例 Blender3Dビューポートで1mに該当する距離のpixel値)で換算してBlender3Dビューポート単位とします。

1-2 Blenderプロット

1-2-1 画像追加

Blenderに画像をメッシュオブジェクトで追加します(追加→画像→平面メッシュ)。次に画像の向きを回転で正しく調整します。

1-2-2 位置と寸法の記入

画像重心位置の数値をBlender→アイテム→トランスフォーム→位置の欄に記入します。

画像寸法の数値をBlender→アイテム→トランスフォーム→寸法の欄に記入します。

これで画像は正確にプロットされます。

2 メモ

発掘調査報告書掲載断面図は縮図略記トレースの過程で誤差が入り込んでいますが、セクション図原本から作成した図面はそれより誤差が少ないので、今後作成したセクション図のプロットを進めることにします。

3 参考

Blenderに画像をメッシュオブジェクトで追加する手順は追加→画像→平面メッシュです。この平面メッシュの説明が「画像ファイルからメッシュ平面を適切なアスペクト比で作成します」となっています。

この説明を読んで、「適切なアスペクト比に直されてしまう(縦横比を変更されてしまう)」可能性を心配したのですが、調べると、「画像ファイルからメッシュ平面を画像ファイル通りの正確なアスペクト比で作成します」という意味であることが判りました。


2025年12月15日月曜日

崩落層形成モデル

 Collapse Layer Formation Model


A model (schematic diagram) of the formation of the H Collapse Layer and I Collapse Sand Layer, deposited below the cliff at cross section 11 of Shell Layer on the northern slope of the Ariyoshikita Shell Mound, was created. It is believed to be caused by a collapse of the upper part of the steep slope.


有吉北貝塚北斜面貝層11断面の急崖下に堆積しているH崩落層、I崩落砂層の形成モデル(模式図)を作成しました。急斜面上部の崩落に因るものと考えます。

1 H崩落層、I崩落砂層の形成モデル(模式図)


H崩落層、I崩落砂層の形成モデル(模式図)

H崩落層、I崩落砂層の形成は急斜面上部の崩落に因るものと考えます。

11断面以外の断面における崩落層の形成も全てこのモデルを基本に考えることができそうです。

2 メモ

崩落層にHという符号を、崩落砂層にIという符号を付与しただけで、これまで思考のピントが合わなかった崩落層形成モデルが浮かび上がってきたのですから、不思議です。思考対象物に名前を与えることはその対象物理解促進に直結します。


全貝層区分に名称(符号)を付与

 All shell layer sections have been given names (codes).


All shell layer sections in the representative cross sections (11 cross sections) of the shell layer on the northern slope of the Ariyoshikita Shell Mound have been given names (codes). This will allow for a deeper understanding of the individual shell layers.


有吉北貝塚北斜面貝層の代表断面(11断面)の全貝層区分に名称(符号)を付与しました。これで貝層の個別認識が深まります。

1 有吉北貝塚北斜面貝層11断面の貝層区分名称


有吉北貝塚北斜面貝層11断面の貝層区分名称

G:基底砂層(貝を含む→11断面ガリー侵食地形形成時に貝殻投棄があった証拠)

V:混砂貝層(G当時のガリー流路堆積物)

D2:土層(Vに対応する土層)

D1:崩落砂層(D2の下位にある崩落砂層)

H:崩落層(大きなロームブロックを含む。この場に投棄され形成した貝層がある)

I:崩落砂層

K:黒褐色土(静水堆積物の層相)

W:混砂貝層(kと漸移するガリー流路堆積物)

D3:土層(Wに対応する土層)

Q:混砂貝層(上部は斜面性貝層)

R1:黒褐色混土貝層

S1:混土貝層

R2:黒褐色混土貝層

S2:混土貝層

R3:黒褐色混土貝層

X:混土貝層(R3に対応)

D4:土層(Xに対応)

S3:混土貝層

D5:土層(S3に対応)

2 貝層区分と営力との関係


貝層区分と営力との関係


貝層区分と営力との関係

G:基底砂層(11断面ガリー侵食地形形成時の水流)

V:混砂貝層(ガリー流路水流)

D2:土層(ガリー流路水流)

D1:崩落砂層(重力)

H:崩落層(重力)

I:崩落砂層(重力)

K:黒褐色土(ガリー流路水流)

W:混砂貝層(ガリー流路水流)

D3:土層(ガリー流路水流)

Q:混砂貝層(重力・葡行)

R1:黒褐色混土貝層(重力・葡行)

S1:混土貝層(重力・葡行)

R2:黒褐色混土貝層(重力・葡行)

S2:混土貝層(重力・葡行)

R3:黒褐色混土貝層(重力・葡行)

X:混土貝層(ガリー流路水流)

D4:土層(ガリー流路水流)

S3:混土貝層(重力・葡行)

D5:土層(ガリー流路水流)

3 メモ

全貝層区分に名称(符号)を付与することにより、それだけで貝層個別認識が深まりました。早速、H(崩落層)の由来(崩落システムの合理的イメージ)が脳裏に浮かんできました。


有吉北貝塚北斜面貝層 堆積順番による貝層区分

 Shell Layers on the North Slope of the Ariyoshikita Shell Mound: Shell Layer Classification by Depositional Sequence


The shell layer classification of the north slope of the Ariyoshikita Shell Mound (pure shell layer → shell-rich layer → shell-poor layer) is based on the volume ratio of shell content. This classification is only valid at a specific cross-section. Expanding the cross-section or crossing cross-sections makes it impossible to trace the continuity of the shell layers. Therefore, I decided to change the shell layer classification to one based on depositional sequence. This opens up the possibility of tracing the shell layer classification across the entire surface.


有吉北貝塚北斜面貝層の貝層区分(純貝層→混土貝層→混貝土層)は貝殻分量の体積比に基づいています。この区分は特定断面ポイントだけで通用します。断面を拡げたり、断面をまたぐと貝層連続性を追跡できなくなります。そこで、貝層区分を堆積順番に基づく区分に変更することにしました。これにより貝層区分を面的に追跡できる可能性が生まれます。

1 発掘調査報告書における貝層区分


発掘調査報告書における貝層区分

発掘調査報告書における有吉北貝塚北斜面貝層の貝層区分(純貝層→混土貝層→混貝土層)は貝殻分量の体積比に基づいています。この区分は観察した特定断面ポイントだけで通用します。断面を拡げたり、断面をまたぐと貝層連続性を追跡できなくなります。これは斜面に投棄された全ての貝層が重力と葡行により貝殻分量の体積比が上から下に向けて大きく変化するためです。

セクション図には次のような記載がみられ、貝層が上部では貝混入率が低く(混土率が高く)、下部で高い(純貝層になる)という現実の姿が表現されています。

「高い方の部分には混土率が高く、下方にしたがい純貝層に近い」(S1について)

2 堆積順番に基づく貝層区分


堆積順番に基づく貝層区分

発掘調査セクション図では、貝層堆積順番が分層されています。この分層を現場写真の様子と対応させることができます。現場写真から貝層層相の様子(白い貝層か、黒い貝層かなど)を読み取ることができます。これらの情報、つまりセクション図分層区分と現場写真の対応から、堆積順番を示す貝層区分が可能であると考え、11断面でその試案を作成しました。

なお、貝殻が土と混ざりあっているのか(混土貝層、混貝土層)、砂と混ざりあっているのか(混砂貝層、混貝砂層)という区分が結果として、貝層形成の時期と関係していることを指摘できます。つまり、11断面で言えば、混砂貝層、混貝砂層は11断面附近ガリー侵食中から後の一定期間に、混土貝層、混貝土層はその後のガリー侵食の影響が収まった時期に対応しています。

3 貝層発達段階


貝層発達段階

3-1 第1段階

・11断面附近におけるガリー侵食の進行→基底砂層形成、崩落層形成、崩落砂層形成(貝混入、貝投棄あり)、混貝砂層形成(斜面性貝層)、混砂貝層形成(ガリー流路最下部)

・ガリー流路(断面垂直方向)のダムアップ→崩落層前面にK層(黒褐色土)形成

・ガリー流路ダムアップの解消→K層(黒褐色土)の上部侵食、混砂貝層形成(ガリー流路)

3-2 第2段階

・R1層(黒褐色混土貝層)、S1層(混土貝層)、R2層(黒褐色混土貝層)、S2層(混土貝層)形成

(R1層、S1層、R2層、S3層に対応するガリー流路堆積層がない。上流でのガリー侵食が虚弱で、堆積物材料の供給が無かったことを示唆する。)

3-3 第3段階

・R3層(黒褐色混土貝層)、混土貝層(ガリー流路堆積層)形成

(ガリー流路堆積が急速に進み、その時期がR3層に対応する。急激なガリー流路堆積は上流でのガリー侵食活発化による堆積物材料の多量供給を示唆する。)

3-4 第4段階

・S3層(混土貝層)形成

(混土貝層の量が多く、S3層形成期間が長かったか、貝採取量が多かったかなどの検討が課題となる。)

(ガリー流路堆積がほとんどない。上流におけるガリー侵食が虚弱で堆積物材料の供給がほとんどなかったと想定される。)

4 貝層形成に関わる主な営力


貝層形成に関わる主な営力

5 メモ

・R1層、S1層、R2層、S2層、R3層、S3層、K層の命名だけでは説明が困難なので、他の貝層も今後全て命名することにします。

・第1段階前半の事象つまり11断面附近でのガリー侵食進行にともない崩落層が生じた機構について検討を深めることにします。崩落層には貝や土器が含まれています。崩落層中に「ブロックではない貝層」も報告されていますから、崩落層形成中にも貝層投棄が行われた可能性があります。

・第1段階後半の地象つまりK層の形成やその上部侵食などの地学事象はとてもダイナミックであるので、検討を深めることとします。

・11断面貝層の検討からガリー流路上部の侵食の様子を推定することができそうです。

・貝層検討の次のステップは、11断面の検討を前後の断面(10断面、剥ぎ取り断面、12断面)に敷衍していくことです。