Blender Python + OpenCV〜画像読み込みとテクスチャ〜
前回、OpenCv(python)を使用して画像の読み込み、サイズの表示を行いました。
OpenCvの逆引きサイトなどを参考に3Dモデル作成。。。なんて考えましたが。。。
人間一歩ずつ歩まなければ身につくものも身につきません。(言い訳です)
と言うわけで、今回は
読み込んだ画像をテクスチャとして表示します。
参考にするサイトはこちらになります。
コードのみのサイトでした。以下のコードです。
def material_for_texture(fname): img = bpy.data.images.load(fname) tex = bpy.data.textures.new(fname, 'IMAGE') tex.image = img mat = bpy.data.materials.new(fname) mat.texture_slots.add() ts = mat.texture_slots[0] ts.texture = tex ts.texture_coords = 'UV' ts.uv_layer = 'default' return mat
結局は、
1.ファイル(フルパス)→「C:¥XXX¥XXX¥ファイル.png」などをロード
2.マテリアルを作成
3.テクスチャにセット
とやっていました。
はじめの方に余計なコードがありますが、以下のコードを実行しました。
※Gitより以下のソースをダウンロードできます。
20180211_B.py -----------------------------------------------
import os
import sys
import bpy
sys.path.append('/usr/local/lib/python3.6/site-packages/cv2/')
import cv2
fileName = os.getcwd() + '/BlenderPython/img/Dojo.png'
# this is Normal Loading
#image = cv2.imread(fileName)
# this is GrayScale Loading
image = cv2.imread(fileName, cv2.IMREAD_GRAYSCALE)
# Create Material
mat = bpy.data.materials.new('ImageMat')
# Create Texture
tex = bpy.data.textures.new(fileName, type='IMAGE')
tex.image = bpy.data.images.load(fileName)
# Add material slots
mat.texture_slots.add()
mat.texture_slots[0].texture = tex
obj = bpy.context.scene.objects.active
obj.data.materials.append(mat)
-----------------------------------------------
汚い感じになっていますがイメージファイルをテスクチャとして表示しております。
はじめの方にある「cv2.cv2.imread(fileName)」などは、今回は関係ありません。。。
次回は、画像の輪郭を読み込もうと思います。