未整理メモ 画像読み込み blender python 20230807
写真画像のフォルダを開いて
写真画像のリンクをコピーして
ChatGPT さんに 読み込めるように
書き換えを 問い合わせる
そして マテリアルに登録してもらう
a
a
ああああ
import bpy
# 画像ファイルのパスを指定してください
image_path = "C:/atest/20230806 赤城神社 tree 切り取り 2.png"
# 正方形の中心座標を指定してください
square_center = (0, 0, 0)
# 正方形のサイズを指定してください
square_size = 2
# 正方形を作成
bpy.ops.mesh.primitive_plane_add(size=square_size, location=square_center)
square = bpy.context.active_object
# イメージテクスチャを読み込み
img = bpy.data.images.load(image_path)
# テクスチャを設定
mat = bpy.data.materials.new(name="ImageMaterial")
square.data.materials.append(mat)
square.active_material.use_nodes = True
bsdf = square.active_material.node_tree.nodes["Principled BSDF"]
tex_image = square.active_material.node_tree.nodes.new("ShaderNodeTexImage")
square.active_material.node_tree.links.new(bsdf.inputs['Base Color'], tex_image.outputs['Color'])
tex_image.image = img
ああああ
a
a
a
a
a
了解しました。オブジェクトがない場合に無限ループに入ることが考えられますので、最初に正方形オブジェクトを作成してから画像を貼り付け、最後に90度回転させるスクリプトを以下に示します。
User
オブジェクトがないから 無限ループに入るのだと思う だから 正方形オブジェクトを作ってから 画像を貼ってから 90度回転させて
ChatGPT
了解しました。オブジェクトがない場合に無限ループに入ることが考えられますので、最初に正方形オブジェクトを作成してから画像を貼り付け、最後に90度回転させるスクリプトを以下に示します。
a
a
import bpy
import math
# カレントオブジェクトを90度回転する関数
def rotate_object():
selected_objects = bpy.context.selected_objects
if selected_objects:
for obj in selected_objects:
obj.rotation_euler[2] += math.radians(90)
# 3Dビューのコンテキストを取得
context = bpy.context
# オブジェクトを編集モードに変更
bpy.ops.object.mode_set(mode='EDIT')
# メッシュを選択
bpy.ops.mesh.select_all(action='SELECT')
# オブジェクトをオブジェクトモードに変更
bpy.ops.object.mode_set(mode='OBJECT')
# 関数を実行
rotate_object()
この修正済みスクリプトでは、オブジェクトを回転する前に、一度オブジェクトを編集モードに変更してから選択し、回転を行います。これにより、回転が正しく適用されることが期待されます。スクリプトを実行すると、選択されているオブジェクトが90度回転されます。スクリプトを何度でも実行すると、選択されているオブジェクトが繰り返し90度ずつ回転します。
編集モードにしなくても 回転できた
以下 連続テスト
連続 読み込みでは
編集で 前半削除しなきゃで 無意味だった
zz
import bpy
# 画像ファイルのパスを指定してください
image_path = "C:/atest/20230806 赤城神社 tree 切り取り 2.png"
# 正方形の中心座標を指定してください
square_center = (0, 0, 0)
# 正方形のサイズを指定してください
square_size = 2
# 正方形を作成
bpy.ops.mesh.primitive_plane_add(size=square_size, location=square_center)
square = bpy.context.active_object
# イメージテクスチャを読み込み
img = bpy.data.images.load(image_path)
# テクスチャを設定
mat = bpy.data.materials.new(name="ImageMaterial")
square.data.materials.append(mat)
square.active_material.use_nodes = True
bsdf = square.active_material.node_tree.nodes["Principled BSDF"]
tex_image = square.active_material.node_tree.nodes.new("ShaderNodeTexImage")
square.active_material.node_tree.links.new(bsdf.inputs['Base Color'], tex_image.outputs['Color'])
tex_image.image = img
import bpy
import math
# カレントオブジェクトを90度回転する関数
def rotate_object():
selected_objects = bpy.context.selected_objects
if selected_objects:
for obj in selected_objects:
obj.rotation_euler[2] += math.radians(90)
# 3Dビューのコンテキストを取得
context = bpy.context
# オブジェクトを編集モードに変更
bpy.ops.object.mode_set(mode='EDIT')
# メッシュを選択
bpy.ops.mesh.select_all(action='SELECT')
# オブジェクトをオブジェクトモードに変更
bpy.ops.object.mode_set(mode='OBJECT')
# 関数を実行
rotate_object()
zz