ラベル 遺物データベース の投稿を表示しています。 すべての投稿を表示
ラベル 遺物データベース の投稿を表示しています。 すべての投稿を表示

2025年5月12日月曜日

遺物データベースの3D空間表示用Blenderアドオン自作

 I made a Blender add-on for displaying relic databases in 3D space.


I made an add-on for a database of relics with 3D coordinates that displays relics by classification in the Blender3D viewport. It feels like the database itself is imported into Blender, which is more convenient than importing data using BlenderPython scripts.


3D座標付遺物データベースについて、その分類毎に遺物をBlender3Dビューポートに表示するアドオンを自作しました。データベースそのものをBlenderに取り込んだ感覚になり、BlenderPythonスクリプトを使ったデータ取り込みより便利です。

1 遺物データベースの3D空間表示用Blenderアドオン Artifact Class Importer


遺物データベースの3D空間表示用Blenderアドオン Artifact Class Importer の説明

・ID、XYZ座標、分類から構成される5列のcsvファイルを読み込みます。

・ブラウザからcsvファイルを選択できます。

・遺物IDを名称とするオブジェクト(5㎝×5㎝×5㎝立方体)が3D空間に生成され、アウトライナーの特設コレクションに格納されます。

・全て表示および14分類のボタンにより、それぞれの分類毎にオブジェクトが3D空間に配置されます。


アドオンのパネル画面


アドオンのプロパティ


アドオンファイルの記述

2 ボタン別表示の様子


土器・土製品


石器・石


貝製品


骨・歯

3 感想

Blenderにデータベース情報を格納する能力があることを実感しました。

アドオン作成はChatGPTの支援を活用して、数回の修正を繰り返して実現しました。その途中で、本当にデータベース情報を格納できるのだろうかと疑問になり、ChatGPTに次の質問をしたほどです。

今後アドオンパネルを有効活用することにより、データベースソフト(postgreSQLなど)ではなく、Blenderで直接分析して、即3D空間表示するという新しい展望が開きました。

……………………………………………………………………

(この記事のアドオンの元となった別アドオンでのやりとりです。)

●私

再度試す前に、教えてください。今回読み込むcsvファイルにはIDと座標以外のデータベース情報が含まれています。その情報をBlenderが受け取り内部に格納することができると考えて間違いないか確認したいです。

●ChatGPT

はい、その認識で問題ありません。

Blender のオブジェクトには “カスタムプロパティ” として任意のキー/値ペアを内部に保持できます。今回のアドオンでも、以下のようにして

obj["class"] = class_v

obj["size"]  = size_v

obj["color"] = color_v

と書くことで class・size・color をオブジェクト内に格納していますが、CSV の他の列(例えば「発見年」や「遺跡名」など)があれば、同様に

for key, val in row.items():

    if key not in ("ID", "X", "Y", "Z"):

        obj[key] = val

とすれば、すべてのデータベース情報を obj["発見年"]、obj["遺跡名"] として取り込めます。

取り込んだプロパティは Python コンソールから bpy.data.objects["ID名"]["発見年"] のようにアクセスできますし、プロパティパネルに表示させることも可能です。

──つまり、ID/座標以外の列もカスタムプロパティとして完全に保持できます。追加で取り込みたいフィールドがあれば教えてください。

……………………………………………………………………


2024年11月17日日曜日

有吉北貝塚北斜面貝層遺物データベース(最初バージョン)の完成

 Completion of the first version of the Ariyoshi Kita Shell Mound North Slope Shell Layer Relic Database


The first version of the Ariyoshi Kita Shell Mound North Slope Shell Layer Relic Database based on the relic register and excavation survey report has been completed. The database is stored in postgreSQL and has 64096 records. I plan to develop it into a detailed 3D database in the future.


遺物台帳及び発掘調査報告書をベースとする有吉北貝塚北斜面貝層の遺物データベースの最初バージョンが完成しました。postgreSQLに格納したデータベースで、レコード数は64096です。今後精細な3Dデータベースに発展させる予定です。

1 有吉北貝塚北斜面貝層遺物データベース(最初バージョン)の様子


メインテーブルをpostgreSQL(pgAdmin4)に表示した様子


メインテーブルをファイル出力してExcelで表示した様子

2 有吉北貝塚北斜面貝層遺物データベース(最初バージョン)の概要


有吉北貝塚北斜面貝層遺物データベース(最初バージョン)の概要

遺物台帳データ(遺物コード数64096)と発掘調査報告書掲載遺物リスト(遺物項目数33、レコード数3032)を遺物コードで関連付けたデータベースです。

遺物台帳データと発掘調査報告書掲載情報を関連付けて分析することが可能なデータベースとなっています。複数の遺物種別の関連などの分析にも使えます。

データベースの列(項目)にはグリッド(2m×2m)と標高がありますから、簡易的な3D空間分析にも対応できます。

データベースはメインテーブルとサブテーブル(派生テーブルを含めて現状で83)から構成されています。メインテーブルには遺物台帳から取得したデータ全部と、発掘調査報告書から取得したデータのうち、遺物コードに対応する遺物数を掲載しています。サブテーブルは発掘調査報告書掲載遺物種別の詳細リスト(一部)や作業派生テーブルです。

3 遺物分類

遺物台帳の「名称」情報から簡易的に次の遺物分類を行っています。

1 土器・土製品

2 石器・石

3 骨角歯牙製品

4 貝製品

5 骨・歯(魚類を除く)

6 貝

7 魚骨・鱗

8 炭化物

9 化石等

10 人骨

11 砂塊

12 その他

20 不明

30 貝層サンプル

4 土器・土製品分類

遺物台帳の情報から土器・土製品について、次の簡易分類をしています。

●土器・土製品分類1

1…土器

2…土製品

●土器・土製品分類2

1…(土器)土器

2…(土器)口縁部

3…(土器)底部

4…(土器)把手

11…(土製品)土錘

12…(土製品)円盤

13…(土製品)耳飾

14…(土製品)11、12、13以外の土製品

●土器・土製品分類3

1…朱塗

2…非朱塗

5 グリッド移動

発掘調査の過程で遺物のグリッド所属を変更(隣のグリッドに移動)しているものがありますので、その情報を項目としています。

●グリッド 移動コード

0…はみ出し移動なし

1…はみ出し移動前

2…はみ出し移動後

6 今後のデータベース発展

今後次の情報を付加してデータベースを発展させる予定です。

6-1 貝層情報の評価分級

セクション図の貝層分類及び各遺物に付加された貝層分類を検討して、貝塚全体の検討に使える貝層評価分級が可能であるか、検討します。現状では隣接セクション図間であっても貝層分類表現が統一されていないようです。

現場で表現された貝層分類を北斜面貝層全体で統一できれば(貝層評価分級ができれば)貝層と遺物の関係分析が可能になります。

6-2 土器番号と遺物番号の対応調査

土器型式が分類されている土器現物を構成する破片の遺物コードを調査する予定です。この調査により数千の遺物コードと土器型式が関連付けられます。したがって、北斜面貝層空間に時間スケール(土器型式)が持ち込まれ、貝層や遺物の投棄・移動の順序が明確になります。

6-3 遺物分布図から遺物座標(X座標、Y座標)を計測する調査

遺物分布図(2m×2mグリッド毎に作成されている)から遺物座標(X座標、Y座標)を計測し、全遺物コードの精細な平面座標を取得します。すでに標高(Z座標)は取得してあるので、これにより、遺物データベースが名実ともに3Dデータベースとして使えるようになります。

7 感想

6万遺物を扱うデータベースはExcelなど表計算ソフトでは効率性の観点からとても扱いきれません。今回はデータベースソフトpostgreSQL(GUIはpgAdmin4)を使いました。テーブル操作は全てクエリで行いますが、複雑なクエリは全てChatGPTに指南してもらっています。ChatGPTが懇切丁寧にクエリ作成を手伝ってくれていることがなければ、このデータベース作成活動はおぼつかないものになってしまいます。