LoginSignup
1
0

More than 3 years have passed since last update.

pythonのお勉強12日目

Posted at

Blenderを初めて操作してデータをpythonで使う。

Python超初心者の備忘録です。
今回はBlenderでオブジェクトを作ることに挑戦してみました。
blenderは全く初心者です。

流れ 

blenderをインストールする 
マニュアル、解説を読んで データをpythonで読み込める形式で出力する。
pythonで読み込むsampleプログラムをネットで検索する。
windowsのpythonで結果を出力する。

1 blenderをインストールする

blenderで検索。https://blender.jp/ から ver2.78bをDownload
指示に従ってインストール

2 オブジェクトを作り stl形式で出力する。

Blender初心者が、コーヒーカップをモデリングしてみる。が分かりやすいです。
参考にさせてもらいました。有難うございました。この解説に従って、
オブジェクトをロードする。 
拡大(オブジェクトを選択した状態でSを押して拡大倍率をテンキーで指定。)
ファイルメニューのエクスポートから stl 形式を選択して出力しました。
(ロード、拡大、エクスポートを逆引きで調べただけで blenderのことはわからないので 全く初めての方には分かりづらいと思います)

3 numpy-stl で 取り込めそうに思えたので

pythonhosted.org/numpy-stl/usage.html のsampleで試してみましたが。WindowsのVisualStudioでは最初の2行目import文でエラーが出て先に進めませんでした。

from stl import mesh
from mpl_toolkits import mplot3d  
from matplotlib import pyplot

# Create a new plot
figure = pyplot.figure()
axes = mplot3d.Axes3D(figure)

# Load the STL files and add the vectors to the plot
your_mesh = mesh.Mesh.from_file('tests/stl_binary/HalfDonut.stl')
axes.add_collection3d(mplot3d.art3d.Poly3DCollection(your_mesh.vectors))

# Auto scale to the mesh size
scale = your_mesh.points.flatten(-1)
axes.auto_scale_xyz(scale, scale, scale)

# Show the plot to the screen
pyplot.show()

Mac(anaconda) では問題なく出力できました。

Screen Shot 2019-07-29 at 5.54.08 PM.png

Windowsでは別の方法を探してみました。 stl形式をtxt形式に変換してpythonに表示する記事を見つけたのでその方式を採用しました。

sabopy.com [matplotlib 3D]47.VoxelCactus

の記事を参考にさせて頂きました。感謝です!Cactusとはサボテンのことです

(stlファイルは3Dプリンターで最も使用されているファイルフォーマットでオンライン上に3Dプリンターのサイトが多くあり無料のstlファイルサンプルも入手できると思います。)

blenderで作成したstlファイル または 無料サンプルで入手したstlファイルを
stlファイルのオンラインファイル変換サイトでTXT形式を指定して変換する。
記事に掲載されたプログラムを実行。でできました。有難うございました。
個人的にはこちらの出力が気に入っています。
興味のある方は sabopy.comで検索してみてください。
(マウスで記事を選択して右クリックで検索サイトへ)

Windows のpythonで出力

キャプチ4ャ.PNG

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0