2025年11月4日火曜日

技術メモ Blenderにプロットした遺物(頂点)の属性確認方法

 Technical Note: How to Check the Attributes of Artifacts (Vertices) Plotted in Blender


The artifact database (55,892 records, 39 attributes) for the shell layer on the northern slope of the Ariyoshikita Shell Mound was plotted directly as vertices in Blender. I discovered a way to check the attribute data for a single vertex in Blender, so I've written this note.


有吉北貝塚北斜面貝層の遺物データベース(55892レコード、39属性)はそのままBlenderに頂点でプロットしてあります。Blender画面で頂点1つのある属性のデータを確認する方法を知りましたので、メモしました。

1 遺物データベースのBlender取り込み

有吉北貝塚北斜面貝層の遺物データベース(55892レコード、39属性)はそのままBlenderに頂点でプロットしてあります。


55892レコード、39属性がそのままBlenderにプロットされている様子

2 Blender画面で特定頂点の特定属性データを知る方法


Blender画面で特定頂点の特定属性データを知る方法

・編集モードで特定頂点を表示します。

・オブジェクトデータプロパティ→属性→(知りたい)属性を選択

・メッシュ→属性を設定

この操作で画面にその属性のデータが表示されます。

なお、属性のデータに日本語を使うと不都合が発生する可能性があるので、自分は使っていません。自分は属性の値はすべて類型区分の結果である整数値にしています。

3 メモ

Blender3Dビューポートでは頂点分布を観察しますが、上記属性データを知る方法は「この頂点は何を意味するのか」という疑問に即座に答えを出してくれるので、とても有用です。

4 参考

統計分析(例 全遺物の最近隣距離計測)はBlenderの外でPythonで行い、その結果をBlenderにプロットしています。

Blenderは主に種別、属性区分別などの表示ツールとして使っています。

Blenderで幾つかのデータを複合表示して、それを新たなデータとしてcsvファイルに書き出し、そのcsvファイルをPythonで分析することもあります。


石器の最近隣距離分布観察

 Observing the Distribution of Nearest Neighbor Distances for Stone Tools


I observed the 3D distribution of nearest neighbor distances for 2,045 stone tools excavated from the shell layer on the northern slope of the Ariyoshikita Shell Mound. The significant concentration seen with pottery is not observed with stone tools. Dividing the nearest neighbor distance into four levels from short to long reveals a gradual, three-dimensional zone with the sparsely distributed stone tools at the core and the space between them gradually filling in.


有吉北貝塚北斜面貝層の出土石器2045件の最近隣距離3D分布を観察しました。土器に見られるような顕著な集積は石器では観察できません。最近隣距離を短→長に4段階に分けると、まばらに展開する最短の最近隣距離石器を核に、その間の空間を次々に埋めるように展開する緩やかな立体ゾーンが観察できます。

1 石器 最近隣距離3D分布

1-1 石器 最近隣距離0.036~0.133m


石器 最近隣距離0.036~0.133m


斜め表示

1-2 石器 最近隣距離0.036~0.133m、0.133~0.356m


石器 最近隣距離0.036~0.133m、0.133~0.356m


斜め表示

1-3 石器 最近隣距離0.036~0.133m、0.133~0.356m、0.356~0.579m


石器 最近隣距離0.036~0.133m、0.133~0.356m、0.356~0.579m


斜め表示

1-4 石器 最近隣距離0.036~0.133m、0.133~0.356m、0.356~0.579m、0.579~2.743m


石器 最近隣距離0.036~0.133m、0.133~0.356m、0.356~0.579m、0.579~2.743m


斜め表示

2 メモ

・有吉北貝塚北斜面貝層の出土石器2045件の最近隣距離3D分布を観察しました。

・土器や人骨に見られるような顕著な石器集積は観察できません。

・最近隣距離を短→長に4段階に分けると、最短(最近隣距離0.036~0.133m)がまばらに分布していて、まるで石器分布全体の核のような存在のように感じられます。

・最短の分布図を拡大すると2つとか3つの石器が連なっている場合が多くなっています。試しに幾つかの最短で連なる石器種類をみてみると次のようになりました。


石器種類をみた最短(最近隣距離0.036~0.133m)石器の場所


石器種類

・同一石器が割れて2になり、それが最短の距離で分布している事例があるかもしれないという考えからこの作業を始めたのですが、そのような事例は無いようです。発掘調査報告書の石器実測図を調べると、2つの石器(別遺物番号)が接合するものが北斜面貝層で10程度あるのですが、いずれも距離が離れているようです。(土器や骨角歯牙製品では接合する複数の遺物が直ぐ近くから出土する事例があります。)

・まばらに展開する最短最近隣距離の石器の間の空間を埋めるように、それより長い最近隣距離の石器が次々に展開する緩やかな立体ゾーンが観察できます。


2025年11月3日月曜日

石器3D分布の平均最近隣距離計測

 Measuring the average nearest neighbor distance of stone tool 3D distributions


I will use the average nearest neighbor distance as an index for comparing differences in the 3D distribution of artifact types in terms of density. First, I experimentally measured the average nearest neighbor distance using stone tools.


遺物種別3D分布の違いを密集性という観点から比較するための一つの指標として、平均最近隣距離を使ってみることにします。最初に、石器を材料にして、平均最近隣距離を試行的に計測してみました。

1 平均最近隣距離について

1-1 平均最近隣距離(Average Nearest Neighbor ANN) ANN1

遺物Aが3D空間に分布していて、遺物Aの全てについて、最近隣にある別の遺物Aとの距離を計測し、その平均値を求めたものが遺物Aの平均最近隣距離です。これをANN1とします。

同一空間に同一数の遺物種が分布している場合、ANN1の数値が小さい遺物種ほど密集性が高いことを表現しています。

2 ランダム分布の平均最近隣距離 ANN2

遺物Aが分布する同じ3D空間に遺物Aと同数のランダム点をプロットして、そのランダム点の平均最近隣距離をもとめ、これをANN2とします。

ANN2は密集性が存在していない、あるいは分散性が存在していない仮想的な分布状況の平均最近隣距離を表現していると考えることができます。

3 標準化された平均最近隣距離指標 ANN3

ANN1/ANN2を求めると、その値は標準化された平均最近隣距離指標となります。これをANN3とします。標準化された平均最近隣距離ANN3はその値が1より小さければ密集度合いを、1より大きければ分散度合いを表現します。同時にANN3を使えば、遺物数や3D空間の広さが異なる遺物種の間でも密集-分散度合いを比較して論じることができます。

2 石器を例としたANN計測

2-1 石器分布資料等


統計分析用3D空間(全遺物分布3D空間)


石器3D分布(2045件)


統計分析用3D空間に2045点をランダムプロットした様子

2-2 石器のANN計測結果

石器ANN1 0.356m

石器ANN2 0.469m

石器ANN3 0.759

2-3 メモ

石器の平均最近隣距離ANN1が0.356mであることから、ある石器が出土すると、確率的に、その石器を中心として半径0.356mの球空間に別の石器が1つ出土する勘定になります。

仮に石器が遺跡空間の中でランダムに分布していると仮定すると、確率的に、その石器を中心として半径0.469mの球空間に別の石器が1つ出土する勘定になります。

この違いは実際の石器分布が密集しているから生じています。

この石器密集度合いを指標ANN3で計測すると0.759になります。

この値0.759のさらに詳しい評価・意味は他の遺物種のANN3と比較してはじめて深まります。

3 最近隣距離の基本統計料

石器の遺物個体別最近隣距離の基本統計量は次のようになります。

最小値  0.036m

最大値  2.743m

中央値  0.326m

平均値  0.356m

標準偏差 0.202


最近隣距離順位グラフ

4 最近隣距離の分布

石器個体の最近隣距離を次の表のように類型区分して、色分けして3D空間にプロットしました。


石器ANN類型区分


石器最近隣距離の分布3Dモデル画像(区分1+2+3+4の分布)


区分1の分布


区分1+2の分布


区分1+2+3の分布

一瞥して、この石器最近隣距離分布3Dモデルから豊かで有用な情報を引き出すことができることがわかります。ここでは分布3Dモデル作成までにトドメ、詳しい検討は別記事で行います。

5 平均最近隣距離計測に関わる操作技術

平均最近隣距離計測に関わるデータ操作技術及び計測結果のBlender3Dビューポートプロット技術などでは多数のPythonスクリプト、BlenderPythonスクリプトを使っています。それらの整理は別記事で行います。






2025年11月1日土曜日

2025年10月ブログ活動のふりかえり

 A look back at October 2025 blog activities


I'm reviewing the activities of the blog "Walking the Hanami River Basin" in October 2025.

In October, I spent the entire month plotting 3D coordinate data of artifacts from the shell layer on the northern slope of the Ariyoshikita Shell Mound in a Blender 3D viewport, creating 3D models of the distribution of most artifact species, and finally compiling them into a slideshow.


ブログ「花見川流域を歩く」の2025年10月活動をふりかえりました。

10月は有吉北貝塚北斜面貝層の遺物3D座標データをBlender3Dビューポートにプロットする作業に明け暮れ、ほとんどの遺物種分布3Dモデルを作成し、最後にスライドショーでまとめました。

1 ブログ「花見川流域を歩く」

・2025年10月の記事数は21です。

・9月に作業が完了した有吉北貝塚北斜面貝層遺物3D座標読取結果を利用して、10月は試行的作業として、遺物種毎に分布をBlender3Dビューポートにプロットして3D分布資料を作成しました。ほとんどの遺物種分布3Dモデルを作成し、最後にスライドショーとしてまとめました。

・ブログ来訪者の国が100ヵ国を越え、感謝の記事を書きました。

2 ブログ「花見川流域を歩く 自然・風景編」

・早朝散歩記事2編を書きました。

3 2025年10月活動の特徴

・遺物種別分布3Dモデルを作成する中で、11月から展開する統計分析の準備活動を行いました。その一つとして土器口縁部、底部、把手データについて最近隣距離分析を行いました。結果として、3D分布図を総観的に見る限り気が付きませんが、把手は口縁部と底部と最近隣距離が長いことが判明し、把手と口縁部・底部は分布特性が違うという結論(統計的結論)を得ることができました。この作業は今後の統計分析作業に光明をもたらすものです。

(土器の大半を占める加曽利EⅡ式土器では把手はほとんどありません。一方中峠式や加曽利EⅠ式土器では把手のある土器が含まれます。この状況から、把手の投棄時期と口縁部・底部の平均的投棄時期がずれていることが推定できて、土器3D分布分析の一つの視点を確認できました。)

4 2025年11月活動の展望

・11月の1カ月限定で、遺物種別分布の類縁性を浮かび上がらせるための統計分析を集中的に試行することにします。この活動は遺物種分布類縁性把握が目的ですが、3D空間統計分析手法の初歩からの習熟を兼ねるものです。

・12月からの取組みは貝層データベース作成分析をイメージしています。


2025年10月 Sketchfabに投稿した3Dモデル


2025年10月 YouTubeに投稿した動画


2025年10月 ブログ「花見川流域を歩く」投稿記事に掲載した画像



2025年10月31日金曜日

遺物種別分布のスライドショー資料作成

 Creating a slideshow document of artifact distribution by type


I created a slideshow document showing the 3D distribution of artifacts by type on the shell layer on the northern slope of the Ariyoshi Kita Shell Mound. This is a personal document to provide preliminary hints for analyzing the correlation between artifact distribution by type. 1 minute 20 seconds.


有吉北貝塚北斜面貝層の遺物種別3D分布資料をスライドショー資料にしました。遺物種別分布の関連を分析するために、事前にヒントを得るための私的資料です。1分20秒。

1 有吉北貝塚北斜面貝層 遺物種別分布 スライドショー動画


有吉北貝塚北斜面貝層 遺物種別分布 スライドショー動画

2 メモ

土器・土製品、石器は貝層以外の土層にも分布していますが、骨・歯、貝類は貝層にのみ分布しています。従って、種別分布の比較、統計的分析は貝層部分に空間を限定して行うことが必要と考えます。

分布をマクロに一瞥すると類似していても、詳しく観察すると分布場所や濃密に様々な違いがみられます。それらの遺物種別分布の違いからどのような有用な情報を読み取るべく、これから統計的・数量的分析を行います。

2025年10月29日水曜日

技術メモ 凹みのある点群のラップ

 Technical Note: Wrapping Concave Point Clouds


I learned that Blender's Shrinkwrap modifier can wrap point clouds with objects, so I made a note of it. With some ingenuity, you can even wrap point clouds with concave 3D shapes.


BlenderのShrinkwrapモディファイアで、点群をオブジェクトで包むことができることを知りましたのでメモしました。工夫すれば点群に凹みがある3D形状でもそれに対応して包むことができます。

1 点群の事例

3D形状が馬蹄形の点群を事例とします。


点群の事例(上からオルソ投影)


点群の事例(斜めから)

2 ICO球を使ったラップ


ICO球で点群を内包した状況


Shrinkwrapモディファイアで包んだ状況

凸包のようなオブジェクトになり、馬蹄形特有の凹みが表現されていません。

CUBEなどを使っても同じ結果となります。

3 馬蹄形のオブジェクトを使ったラップ


馬蹄形オブジェクトで点群を内包した状況


Shrinkwrapモディファイアで包んだ状況

馬蹄形形状で包むことができました。点群の3D形状を観察して、それに近いオブジェクトを作成して、点群をターゲットにShrinkwrapモディファイアを適用すると、点群の3D形状が反映できます。

4 馬蹄形オブジェクトの作成


・オルソ投影上から画面で馬蹄形をベジェ曲線で描く


・べジェ曲線をメッシュに変換して面を貼る


・面を法線方向に押し出して立体化し、点群を内包する

5 メモ

この技術により、Blender3Dビューポートに頂点でプロットしてある遺物データから、遺物分布範囲をオブジェクトで特定できます。特定した遺物分布範囲をつかって、例えば一例として、実際の遺物分布から計算できる最近接距離平均と遺物分布範囲内の仮想ランダム分布の最近接距離平均の比較ができるようになります。これにより遺物分布の偏り(密集性)を数値として捉えることができます。





遺物を3D空間で統計分析するための空間設定

 Spatial Settings for Statistical Analysis of Artifacts in 3D Space


A spatial setting was created for statistical analysis of the distribution of artifacts by species excavated from the shell layer on the northern slope of the Ariyoshikita Shell Mound in 3D space. Blender's Shrinkwrap modifier was used to set up the 3D space.


有吉北貝塚北斜面貝層から出土した遺物の種別分布を、3D空間で統計分析するための空間を設定しました。3D空間設定はBlenderのShrinkwrapモディファイアを利用しました。

1 統計分析用3D空間の設定

全遺物分布をラップで覆った時に生まれる3D空間を統計分析用3D空間空間として設定することにしました。

具体的には、全遺物分布に形状が似ているオブジェクトをつくり、そのオブジェクトで全遺物を囲み、Shrinkwrapモディファイアで全遺物を包みました。


全遺物分布


統計分析用3D空間

全遺物をオブジェクトで包んだものです。


統計分析用3D空間に頂点を1万点ランダムにプロットした様子


全遺物分布-統計分析用3D空間-ランダム1万点

2 統計分析用3D空間の意味

統計分析用3D空間に基づいて遺物密度や分布形状を検討します。

遺物種別分布を検討する最初に、その遺物数と同じ数の頂点を統計分析用3D空間にランダムのプロットし、その統計と実際の分布を比較します。

ちなみに、この記事で表示する統計分析用3D空間の体積は1302立方メートルであり、遺物総数(3D座標が揃ったもの)が55892件であるため、密度は42.93件/立方メートルになります。


2025年10月27日月曜日

技術メモ BlenderPythonの「Runtime Error:csvに列IDがありません」の解決

 Technical Note: Fixing BlenderPython's "Runtime Error: CSV file contains no column ID"


I'm using a BlenderPython script that plots CSV files containing data on tens of thousands of artifacts (IDs, xyz coordinates, and numerous attributes) as vertices in the Blender3D viewport within a second. However, the other day, I suddenly got the error "Runtime Error: CSV file contains no column ID," and was unable to plot. I've written a note about how to fix this.


数万遺物データを格納したcsvファイル(ID、xyz座標、多数の属性)を、Blender3Dビューポートに1秒以内に頂点としてプロットするBlenderPythonスクリプトを重宝して活用しています。ところが先日突然、「Runtime Error:csvに列IDがありません」が出て、プロットできなくなりました。その解決策をメモしました。

1 エラーの様子


遺物プロットに使っているBlender画面(2画面用にカスタマイズ、右端コンパートメントがBlenderPythonを記述したテキストエディター)

数万遺物データを格納したcsvファイル(ID、xyz座標、多数の属性)を、Blender3Dビューポートに1秒以内に頂点としてプロットできる優れモノのBlenderPythonスクリプトを毎日重宝して活用しています。ところが先日突然、「Runtime Error:csvに列IDがありません」が出て、プロットできなくなりました。csvファイルに異常は見つかりません。ID列は正常です。試しに列を入れ替えて、先頭列をxにしたところ、「Runtime Error:csvに列xがありません」が出てしまいます。

2 エラーの原因

ChatGPTに調査依頼してエラー原因を突きとめることができました。

BlenderPythonにおけるcsvファイル読込エンコードが encoding="utf-8"であるのに対して、csvファイルのエンコードが"utf-8-sig"であったので読み込めなかったのです。

自分はcsvファイルとExcelの間での文字化け回避などで"utf-8"と"shift-jis"の違いはいつも意識していたのですが、今回はじめて"utf-8-sig"というエンコードに直面して、エラー解決できなかったのです。"utf-8-sig"というエンコードのcsvファイルができたのは、2つのcsvフィアルを操作して1つの新しいcsvファイルを作成するPythonスクリプトをChatGPT支援で作った際に混入したことも判りました。

エラーとなったcsvをWZエディターで開き、文字コードを見ると、確かにUTF-8(BOM付き)になっています。


エラーとなったcsvファイルの文字コード

エンコード"utf-8-sig"のcsvファイルでは最初列名文字先頭に「BOM(Byte Order Mark)」という目に見えない文字(`\ufeff`)が入り、列名が\ufeffIDになり、スクリプトで指定した列名IDと異なり、エラーとなりました。

3 解決策

BlenderPythonスクリプトのcsvファイル読み込み部で、encoding="utf-8"をencoding="utf-8-sig"に修正して対処しました。これで"utf-8"のcsvファイルも"utf-8-sig"のcsvファイルも正常に読み込むことができます。

また原因がわかりましたので、同じエラーが類似BlenderPythonスクリプトで出た時は上記のように修正するか、csvファイルをWZエディターで読込み、"utf-8"に変更して書き出して使うことにします。


ブログ来訪者100ヵ国通過を感謝

 Thank you to everyone from around the world for reaching 100 countries with visitors to my blog.


My blog "Walking the Hanami River Basin" has reached 100 countries with visitors from around the world. I'd like to express my gratitude to everyone from around the world.


ブログ「花見川流域を歩く」来訪者の国が100ヵ国を通過しました。世界の皆様に感謝申し上げます。

1 ブログ「花見川流域を歩く」来訪者の国が100ヵ国となる


来訪者の国旗表示

2013.04.14にカウンターを設置してからの来訪者の国が100ヵ国となりました。


来訪者の国旗地図


ブログ来訪者数総計

2011.01.15にブログを開設してからの来訪者数が1291658人となりました。

2 感謝

このブログは千葉県北西部の小河川花見川についての話題から出発し、現在では主に千葉県内縄文遺跡をテーマに、考古に関して素人が学習している様子を情報発信しています。世界に向けた情報発信を意識したものではありません。しかし、日本国内のみならずアメリカ合衆国の各州、ヨーロッパ各国をはじめ世界100ヵ国の人々に閲覧していただく栄誉を得ることができました。日本及び世界の皆様に心から感謝申し上げます。

これからも学習を深め、その様子を質の高いコンテンツとして情報発信して行きます。

ご指導のほど、よろしくお願い申し上げます。


2025年10月26日日曜日

貝層3D空間における散乱人骨と骨・歯の分布復元(遺物データベース試用)

 Reconstructing the Distribution of Scattered Human Bones and Teeth in a 3D Shell Layer (Artifact Database Trial)


I observed the relationship between the 3D distribution of scattered human bones and bones and teeth in the shell layer on the northern slope of the Ariyoshikita Shell Mound.

Since the upper layer of the scattered human bone concentration area is located at the top of the bone and tooth distribution, I believe that this corresponds to the final stage of shell layer formation. The final stage of settlement corresponds to the peak period of burials in the shell layer.


有吉北貝塚北斜面貝層の散乱人骨と骨・歯の3D空間における分布の関係を観察しました。

散乱人骨密集域上層が骨・歯分布の最上層に位置することから、散乱人骨密集域上層は貝層形成最後期に該当すると考えられます。集落終末期が貝層における埋葬盛期になります。

1 散乱人骨と骨・歯の分布3Dモデル

散乱人骨と骨・歯の分布3Dモデル

散乱人骨:314件

発掘調査報告書記載で3D座標が揃ったもの

骨・歯(散乱人骨を除く):33750件

遺物台帳記載で3D座標が揃ったもの

1件を直径5㎝球で表現

有吉北貝塚北斜面貝層

3DF Zephyr v8.029でアップロード


3Dモデルの動画

2 散乱人骨と骨・歯の分布の様子

2-1 シーン1


散乱人骨


散乱人骨と骨・歯同時表示


散乱人骨と骨・歯同時表示 拡大1


散乱人骨と骨・歯同時表示 拡大2

2-2 シーン2


散乱人骨


散乱人骨と骨・歯同時表示


散乱人骨と骨・歯同時表示 拡大1


散乱人骨と骨・歯同時表示 拡大2

3 メモ

シーン1で観察できるように、散乱人骨密集域の上層が骨・歯分布の最上層に位置します。

貝殻投棄と骨・歯投棄が食料残滓投棄という点で同時的活動であると考えます。この考えに従えば、貝殻分布と骨・歯分布は略一致するという仮説を導くことができます。この仮説に従い、散乱人骨密集域上層は貝層形成最後期に該当すると考えます。よって、貝層形成最後期=集落終末期が貝層埋葬の盛期になると、大局観として、考えます。

集落終末期になぜ貝層埋葬が増えたのか、その理由は今後の検討課題です。台地上の竪穴住居や土坑における埋葬の時期別様子を観察してから、この検討課題に取組むことにします。