ラベル 干渉色 の投稿を表示しています。 すべての投稿を表示
ラベル 干渉色 の投稿を表示しています。 すべての投稿を表示

2023年6月17日土曜日

干渉色生成BlenderPythonスクリプトを作成して干渉色を楽しむ

 Enjoy interference colors by creating a BlenderPython script that generates interference colors


I created a Python script to play the interference color set for map art developed by Koji Yamada in Blender. I used this script to apply interference colors to the sloped shell layer terrain and enjoyed the micro-terrain interference color art.


やまだこーじさんが開発した地図アート向け干渉色を、Blenderで生成するPythonスクリプトを作成しました。このスクリプトで干渉色を斜面貝層地形に適用して、微地形干渉色アートを楽しみました。

1 やまだこーじさん開発干渉色セットを生成するBlenderPythonスクリプト

ChatGPTの支援も受けて、やまだこーじさんが開発した干渉色セットをBlenderColorRampセットとして生成するBlenderPythonスクリプトを作成しました。

●やまだこーじさん開発干渉色セットを生成するBlenderPythonスクリプト

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

#やまだこーじさん開発干渉色セット(テクスチャ座標、マッピング、グラデーションテクスチャ、カラーランプ)の生成。メッシュオブジェクトを1つ選択してからこのスクリプトを走らせる。

import bpy

# 選択されたオブジェクトを取得

selected_obj = bpy.context.object

# オブジェクトに関連付けられたマテリアルを取得

material = selected_obj.active_material

# マテリアルが存在しない場合は新しいマテリアルを作成

if material is None:

    material = bpy.data.materials.new(name="interference_color")

    selected_obj.active_material = material

    material.use_nodes = True

    material.blend_method = "BLEND"

# テクスチャ座標設定

ndtc = material.node_tree.nodes.new("ShaderNodeTexCoord")

ndtc.location = -800, 350

# マッピング設定

ndmp = material.node_tree.nodes.new("ShaderNodeMapping")

ndmp.location = -630, 350

# グラデーションテクスチャ設定

ndgr = material.node_tree.nodes.new("ShaderNodeTexGradient")

ndgr.location = -450, 350

# カラーランプノードの追加と設定

ndvr = material.node_tree.nodes.new("ShaderNodeValToRGB")

ndvr.location = -260, 350

ndvr.color_ramp.color_mode = "RGB"

ndvr.color_ramp.interpolation = "LINEAR"

# やまだこーじさん開発 干渉色カラーグラデーションの設定

ndvr.color_ramp.elements[0].position = 0.0

ndvr.color_ramp.elements[0].color = 0.888,0.991,0.965,1

ndvr.color_ramp.elements.new(position=0.042).color = 1,0.922,0.578,1

ndvr.color_ramp.elements.new(position=0.083).color = 0.913,0.578,0.112,1

ndvr.color_ramp.elements.new(position=0.125).color = 0.597,0.175,0.002,1

ndvr.color_ramp.elements.new(position=0.167).color = 0.205,0,0.352,1

ndvr.color_ramp.elements.new(position=0.208).color = 0,0.138,0.839,1

ndvr.color_ramp.elements.new(position=0.250).color = 0,0.533,1,1

ndvr.color_ramp.elements.new(position=0.292).color = 0.238,0.913,0.730,1

ndvr.color_ramp.elements.new(position=0.333).color = 0.716,1,0.235,1

ndvr.color_ramp.elements.new(position=0.375).color = 1,0.761,0,1

ndvr.color_ramp.elements.new(position=0.417).color = 1,0.342,0.198,1

ndvr.color_ramp.elements.new(position=0.458).color = 0.880,0.040,0.665,1

ndvr.color_ramp.elements.new(position=0.500).color = 0.323,0.054,0.965,1

ndvr.color_ramp.elements.new(position=0.542).color = 0,0.366,0.847,1

ndvr.color_ramp.elements.new(position=0.583).color = 0,0.753,0.440,1

ndvr.color_ramp.elements.new(position=0.625).color = 0.076,0.947,0.114,1

ndvr.color_ramp.elements.new(position=0.667).color = 0.672,0.839,0.141,1

ndvr.color_ramp.elements.new(position=0.708).color = 1,0.521,0.474,1

ndvr.color_ramp.elements.new(position=0.750).color = 1,0.212,0.791,1

ndvr.color_ramp.elements.new(position=0.792).color = 0.905,0.120,0.831,1

ndvr.color_ramp.elements.new(position=0.833).color = 0.337,0.275,0.584,1

ndvr.color_ramp.elements.new(position=0.875).color = 0,0.552,0.301,1

ndvr.color_ramp.elements.new(position=0.917).color = 0,0.768,0.223,1

ndvr.color_ramp.elements.new(position=0.958).color = 0.147,0.791,0.392,1

ndvr.color_ramp.elements.new(position=1.000).color = 0.624,0.638,0.631,1

# ノード間のリンク設定

material.node_tree.links.new(ndtc.outputs[0], ndmp.inputs[0])

material.node_tree.links.new(ndmp.outputs[0], ndgr.inputs[0])

material.node_tree.links.new(ndgr.outputs[0], ndvr.inputs[0])


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


このBlenderPythonスクリプトで生成するノードセット

2 有吉北貝塚北斜面貝層ガリー侵食基底面地形への干渉色の適用

有吉北貝塚北斜面貝層ガリー侵食基底面地形へ干渉色を適用すると次のような画像になります。


有吉北貝塚北斜面貝層ガリー侵食基底面地形へ干渉色を適用した様子

干渉色で染めた地形表現をより深めるために、干渉色と等高縞模様をカラーミックスノードでミックスして楽しみました。


Blenderカラーミックスノードによる干渉色と等高縞模様のミックスの様子

14種のミックスをテストしました。図の上の3つ(焼き込みカラー、ミックス(係数0.5)、リニアライト)は個性が強すぎて使う場面はなさそうです。しかし、それ以外の11種は面白い、楽しい、美しいモノばかりで、楽しみ場面だけでなく学習場面でも使いたくなります。

特に乗算、覆い焼きカラー、差分、スクリーンの4つは気に入りました。


乗算


覆い焼きカラー


差分


スクリーン

3 メモ

3-1 BlenderRGB値について

BlenderではRGB値を0-1の間の数で表示しています。この値と通常のRGB値(0-255)の値の関係は線形ではなく、ガンマ曲線の関係になっています。通常のRGB値(0-255)を255で除した数のBlenderRGB値(0-1)をガンマ補正2.2すると通常のRGB値(0-255)に戻ります。

3-2 Blenderの実際の色味

理論は3-1のようですが、実際のBlenderの色味はもう少し複雑になっているようです。

やまだこーじさんの干渉色セットは16進数あるいはそれに対応した通常のRGB値(0-255)で表示されています。今回はこの値が対応するBlenderRGB値(0-1)をBlenderカラー表示で1つ1つ確かめて入力しました。一方、やまだこーじさんの値を通常のRGB値(0-255)で整理して、それを255で除して、さらにガンマ補正2.2をしました。この二つを比べると、ガンマ補正した色の方がやまだこーじさん本来の色味に近いです。今回作成した干渉色は少し薄い色味になっています。このあたりの学習を今後深めることにします。

4 感謝

この記事の干渉色セットは次のページから取得させていただきました。

地図アート研究所 干渉色・抽出色地図アート作成ツール(試作版)

干渉色セットを開発して公開しているやまだこーじさんに感謝します。


2022年1月18日火曜日

尖頭器(箕輪村神子柴遺跡)の3Dモデル観察

 3D model observation of Point (Mikoshiba site, Minowamura)


I created a 3D model of the Point (Mikoshiba site, Minowamura) taken at the Ina City Sozokan in November last year. Furthermore, using the "interference color conversion tool" created by Mr. Koji Yamada, the 3D shape of the Point was expressed and observed in contour lines.


昨年11月に伊那市創造館で撮影した尖頭器(箕輪村神子柴遺跡)の観察記録3Dモデルを作成して、観察しました。

1 尖頭器(箕輪村神子柴遺跡) 観察記録3Dモデル Point

尖頭器(箕輪村神子柴遺跡) 観察記録3Dモデル Point

旧石器時代最終末から縄文時代草創期

下呂石 Geroishi(Yugamine rhyolite)

国指定重要文化財

撮影場所:伊那市創造館常設展示

撮影月日:2021.11.08


展示の様子

ガラスショーケース越し撮影

3Dモデル写真測量ソフト 3DF Zephyr で生成 v6.010 processing 82 images

Point (Mikoshiba site, Minowamura) Observation record 3D model

From the end of the Paleolithic period to the beginning of the Jomon period

Geroishi (Yugamine rhyolite)

Nationally designated important cultural property

Location: Ina City Sozokan Permanent Exhibition

Shooting date: 2021.11.08

Shooting through a glass showcase

Generated with 3D model photogrammetry software 3DF Zephyr v6.010 processing 82 images


3Dモデルの動画

2 干渉色による3D形状詳細の把握

2-1 干渉色繰返しによる3D形状の等高線的表現

この尖頭器は平べったい形状をしていますが、3Dモデルで観察すると意外と複雑な形状となっています。先端部分を含む半分は特に薄い形状となっています。こうした特徴を可視化するために干渉色繰返しによる等高線的表現にチャレンジし、成功することができました。


尖頭器(箕輪村神子柴遺跡) 干渉色繰返しによる3D形状の等高線的表現

左は3Dモデル通常テクスチャ画像です。真ん中は3DF Zephyr Liteの機能で作成した高さを色セットのグラデーションで表示した画像です。この画像で3D形状の概要を知ることができます。右が干渉色繰返し(5回)による3D形状の等高線的表現です。3Dモデルの精細等高線的表現に成功していると考えます。

2-1 3D形状の干渉色表現方法


尖頭器3D形状の干渉色表現

フォトグラメトリーソフト3DF Zephyr Liteには3Dモデルを高さによって色分けする(色セットグラデーションで表現する)機能があります。この機能を使って、尖頭器をGREYSで表現し、その画像を取得します。そのGREYS画像を地図アート研究所「干渉色変換ツール」に投入して干渉色化します。今回は干渉色繰返し1回~5回を試しました。

地図アート研究所「干渉色変換ツール」は干渉色の繰返しが可能であり、まことに有用なツールです。このツールを一般公開している地図アート研究所所長やまだこーじさんに感謝します。

2022年1月12日水曜日

ヒートマップの干渉色表現

 Interference color representation of heatmap 3D model


I applied an interference color conversion filter to the heat map and confirmed the effect.


Facebookやまだこーじさんの干渉色変換フィルターはどのような画像でも干渉色に変換しますから、大変便利なツールです。

やまだこーじさんFacebook記事参照

DEMデータ(標高データ)から3Dモデルを作成する際にに、DEMデータ画像(GeoTIFF画像)を干渉色に変換して貼り付けると、訴求力のある干渉色標高図3Dモデルをつくることができます。

2022.01.10記事「やまだこーじさん開発干渉色変換フィルターの威力」参照

この記事では分布密度表現形式の一つであるヒートマップに干渉色変換フィルターを適用して、その効果を確かめました。

1 ヒートマップの干渉色表現


アラスカ飛行場分布ヒートマップとその干渉色表現

QGISチュートリアル画像に干渉色変換フィルターを適用

ヒートマップ画像(モノクロ画像)を干渉色表現すると、判りやすくなることを確かめました。

2 ヒートマップ3Dモデルの干渉色表現


ヒートマップ3Dモデルの干渉色表現

ヒートマップ3Dモデルのテクスチャに干渉色画像を貼り付けるとモデルの訴求力が向上することを確かめることができました。


ヒートマップ3Dモデル干渉色表現の動画