画像ファイルを読み込み1ピクセルを1つのキューブでブロックのように積み上げて壁画のようにするスクリプトになります。キューブのサイズ半分だけずらしているので真上から見ても真横から見ても同じ画像です。
処理スピード感は、1ラインにあたるキューブ50コの処理時間が最初の1ライン目は0.1秒ですが、10ライン目2.5秒、50ライン目は16秒、100ライン目は30秒という感じでどんどん遅くなります。5000ピクセル程の小さな画像でも30分ほどかかりました。ということでほどほどのサイズでやってみてください。動画、静止画、スクリプトをご紹介します。どうすると早くなるんでしょうか。
#blender 3.0.0で動作確認 import cv2 import bpy for item in bpy.data.meshes: bpy.data.meshes.remove(item) im = cv2.imread('c:/tmp/picture.jpg') height, width, channels = im.shape[:3] for x in range(width): for y in range(height): b,g,r = im[y,x] bpy.ops.mesh.primitive_cube_add(enter_editmode=False, align='WORLD', location=(-(height-y) , x, height-y), scale=(0.5, 0.5, 0.5)) mat_name = str( hex(r*0x10000+g*0x100+b)) mat = bpy.data.materials.new(mat_name) mat.diffuse_color = (r/256, g/256, b/256, 1.0) bpy.context.object.data.materials.append(mat)
是非動画をミラーサイトでご覧ください。
oneonet-blog.blogspot.com