Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PyConJP2015 Pythonで3Dモデリング&3Dプリント
Search
Takuro Wada
October 11, 2015
Programming
2
9.7k
PyConJP2015 Pythonで3Dモデリング&3Dプリント
PyConJP2015の発表資料です。
Takuro Wada
October 11, 2015
Tweet
Share
More Decks by Takuro Wada
See All by Takuro Wada
Blender x Pythonでモデリング&3Dプリント(3)
taxpon
0
390
Blender x Pythonでモデリング&3Dプリント
taxpon
0
410
Other Decks in Programming
See All in Programming
分散DBって何者なんだ... Spannerから学ぶRDBとの違い
iwashi623
0
160
ZOZOにおけるAI活用の現在 ~モバイルアプリ開発でのAI活用状況と事例~
zozotech
PRO
7
3.3k
俺流レスポンシブコーディング 2025
tak_dcxi
6
5k
競馬で学ぶ機械学習の基本と実践 / Machine Learning with Horse Racing
shoheimitani
14
14k
AIと協働し、イベントソーシングとアクターモデルで作る後悔しないアーキテクチャ Regret-Free Architecture with AI, Event Sourcing, and Actors
tomohisa
5
14k
テストやOSS開発に役立つSetup PHP Action
matsuo_atsushi
0
110
全員アーキテクトで挑む、 巨大で高密度なドメインの紐解き方
agatan
8
14k
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
160
複数人でのCLI/Infrastructure as Codeの暮らしを良くする
shmokmt
5
2k
関数の挙動書き換える
takatofukui
4
760
TypeScriptで設計する 堅牢さとUXを両立した非同期ワークフローの実現
moeka__c
6
2.8k
乱雑なコードの整理から学ぶ設計の初歩
masuda220
PRO
32
15k
Featured
See All Featured
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
65
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Agile that works and the tools we love
rasmusluckow
331
21k
A Tale of Four Properties
chriscoyier
162
23k
Producing Creativity
orderedlist
PRO
348
40k
What's in a price? How to price your products and services
michaelherold
246
12k
Designing Experiences People Love
moore
142
24k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Transcript
Pythonで 3Dモデリング&3Dプリント Kabuku Inc. Takuro Wada(@taxpon)
まずは自己紹介
Hello! • Takuro Wada (@taxpon) ‣ Software Engineer ‣
• 3Dプリント関連サービスを 提供しています
最近フィギュアになりました
Pythonで 3Dモデリング&3Dプリント 「本日のお題」
Pythonで 3Dモデリング&3Dプリント 「本日のお題」 「3Dプリントってなんだっけ?」
3Dデータを元に 造形物を積層造形すること 3Dプリントって?
具体的には https://en.wikipedia.org/wiki/3D_printing
3Dプリントで なにができるの?
例:金型では作れない形状
None
None
None
None
None
例:究極のカスタマイズ 「一品モノ」
None
None
例:身の回りのもの
None
None
None
例:既成品のハック
None
None
None
None
None
None
None
DIME 10月号より 弊社CEO稲田
面白そう! どうすれば使えるの?
3Dプリントするはなにが必要? 3Dデータ 3Dプリンタ 3Dプリント = 3Dデータを元に造形物を積層造形すること
- データモデリング - データ修正 - 形式変換 - 3Dプリント - 後処理
3Dプリントにはどのような作業が必要?
今回お話する部分 - 形式変換 - 3Dプリント - 後処理 Pythonで 3Dモデリング Pythonで
3Dプリント - データモデリング - データ修正
Pythonで 3Dモデリング
3Dモデリングって?
3Dモデリングって? • 3Dデータを作ること 3Dデータ = 3Dの形状を表すデータ
STL(ASCII)の場合
三角形ポリゴンの定義 STL(ASCII)の場合
以下、ポリゴン定義の 繰り返し STL(ASCII)の場合 三角形ポリゴンの定義
以下、ポリゴン定義の 繰り返し STL(ASCII)の場合 コレを自前で計算するのは大変 →モデリングツールを使う 三角形ポリゴンの定義
3Dモデリングに使うツール • 3DCGソフト ‣ CGの作成が目的 • 3DCADソフト ‣ 工業デザインが目的
3DモデリングツールとPython • 様々なソフトがPythonAPIを提供 ‣ 機能拡張や自動モデリング等が可能になる 3DCG 3DCAD
3DモデリングツールとPython • 様々なソフトがPythonAPIを提供 ‣ 機能拡張や自動モデリング等が可能になる 今回 3DCG 3DCAD
(基本的に) 無料かつ高機能 ʮ͜ΕΒΛબΜͩཧ༝ʯ ‣ Blender ‣ OSSで無料で使用可能 ‣ Fusion360 ‣
教育関係者、スタートアップは無料
(基本的に) 無料かつ高機能 ʮ͜ΕΒΛબΜͩཧ༝ʯ ‣ Blender ‣ OSSで無料で使用可能 ‣ Fusion360 ‣
教育関係者、スタートアップ、ファンは無料
ということで 本題に入っていきます
Blenderで Pythonモデリング
Blenderって? • 1995年から開発され続けている3DCGソフト • オープンソース、マルチプラットフォーム(Win, Mac, Linux) • 開発言語はC, C++,
Python ‣ Pythonは主にAPI部分に使われている ‣ Blender内部にPython Interpreterを保有(資料作成時点: 3.4.2) Blender
Python APIで何ができるの? Blender 3Dモデルの生成 3Dモデルの編集 Add-onによる機能追加 Animation編集 テクスチャ編集 割りとなんでも出来ます Blender
Addon List http://blenderaddonlist.blogspot.jp/
Python APIの良い所 Blender • GUIマウスオーバーでPythonメソッド名が表示
Python APIの良い所 Blender • コマンド履歴がPythonで自動出力 Cubeの生成 移動 拡大
Python APIの良い所 Blender • Pythonコンソールの提供 ActiveObjectの確認 位置の表示 移動 スクリプトの動作を簡単に確認するときに便利
Python APIの良い所 Blender • PythonスクリプトTemplateの提供 ‣ 内部のテキストエディタでTemplateを選択 様々なタイプのTempleateが入っていて便利
Python APIの良くない所 Blender • ドキュメントがわかりにくい ‣ 引数の説明が不十分:用途不明 • オープンソース ‣
分からなかったらソース読めばいい! ‣ でもやっぱり大変
Blender 違いがわからない
Blender 違いがわからない XCODE起動!検索!
Blender 違いがわからない XCODE起動!検索! PythonAPI全開のC言語!
Blender 違いがわからない XCODE起動!検索! PythonAPI全開のC言語! ここが怪しい
Blender 違いがわからない XCODE起動!検索! PythonAPI全開のC言語! ここが怪しい
Blender 違いがわからない XCODE起動!検索! PythonAPI全開のC言語! ここが怪しい これかな?
Blender 違いがわからない XCODE起動!検索! PythonAPI全開のC言語! ここが怪しい これかな?
Blender 違いがわからない XCODE起動!検索! PythonAPI全開のC言語! ここが怪しい これだ! これかな?
Blender 違いがわからない XCODE起動!検索! PythonAPI全開のC言語! ここが怪しい これか? ついに到達!
Blender 違いがわからない XCODE起動!検索! PythonAPI全開のC言語! ここが怪しい これか? ʢʀ´ɾдɾʣ ついに到達!
とはいえ Blender • 確実な調査方法があるのは心強い ‣ 分からなかったらソース読めばなんとなかなる、 という最後の砦が残っている ‣ なんなら、修正してOSSに貢献も? https://developer.blender.org/
では実際になにか作ってみよう Blender • この辺の内容はRinkakブログにまとまっています ‣ PythonによるBlender 3DCGモデリング ‣ https://www.rinkak.com/jp/blog/blender-python-modeling-1 ‣
最近更新してなくてスミマセン • サンプルはGithubで公開してます ‣ https://github.com/kabuku/blender-python
デフォルトオブジェクトの削除 コーンの追加
Blender -Pオプションと 実行したいスクリプト名
None
たくさんコーンを追加 論理和の計算
None
枝分かれモデリング root 1 2 2 2 2 1
アプリ例 • 枝分かれプログラム root 1 2 2 2 2 1
サポート除去に30分かかる
None
None
None
リアルタイムに音声解析をし その波形の3Dデータを生成
None
Fusion360で Pythonモデリング
Fusion360って? • 2012年頃にAutodeskが発表した3DCADソフト • マルチプラットフォーム(Win, Mac) • パラメトリック(強力!), クラウド処理 •
APIはJavascript, Python, C++が公開されている ‣ Fusion360内部にPython Interpreterを保有(資料作成時点: 3.3.5) ‣ 動作速度は C++ > Python > Javascript(推測) Fusion360
APIで何ができるの? 3Dモデルの生成 3Dモデルの編集 Add-onによる機能追加 割りとなんでも出来ます Fusion360 GUIの作成
公開されてるアプリ • APIで作ったアプリはAutodesk App Storeで公開可能 ‣ https://apps.autodesk.com/en ‣ Fusion360は今のところ14件…( ̄。 ̄;) ‣
https://apps.autodesk.com/FUSION/en/List/Search?searchboxstore=FUSION Fusion360
None
Fusion360 Hackathon • ただいまFusion 360 Online Hackathonが開催中 ‣ http://fusion360hackathon.com/ ‣
2015/9/23 - 2015/10/30 ‣ アプリを登録して、承認されたらアプリ1つにつき$500 Fusion360 太っ腹
Python APIの良い所 • Pythonコンソールの提供 Fusion360 スクリプトの動作を簡単に確認するときに便利 UIオブジェクトの取得 メッセージボックの描画
Python APIの良い所 • Debugger内蔵 ‣ Spyderが同梱 ‣ Break Pointの設置 ‣
ステップ実行 ‣ 変数のWatch ‣ Spyder以外のエディタで はDebugger使用不可(編 集は可能) Fusion360
Python APIの良い所 • ドキュメントが充実 ‣ http://fusion360.autodesk.com/learning/learning.html Fusion360
None
ちなみに • Fusion360のマニュアルが読みやすくなるという超 ニッチなChromExtension作りました • Chrome Web Storeからどうぞ • ChromeWebStoreで「Fusion360」で検索
• https://chrome.google.com/webstore/detail/autodesk-fusion360-learni/amkdnibbgekpljlononmmglfppeihpdn Fusion360
Python APIの良くない所 • コマンドライン実行ができない ‣ GUIポチポチでスクリプトを実行するのは億劫 • Spyderの使い勝手が良くない ‣ 好みの問題
• Debuggerいじってると結構頻繁に落ちる… • API自体があまり直感的ではない ‣ パラメトリックだから? ‣ なれればそんなに気にならないかも Fusion360
では実際になにか作ってみよう • スクリプトはメニューから追加可能 ‣ runメソッドが実行される Fusion360
Sketchの準備 矩形の描画 押し出しを適用するためのCollection作成 押し出しの適用
1辺の長さが2の立方体
矩形の描画メソッドを作成 10個のランダムな矩形を描画 押し出しを適用するためのCollectionを作成
None
アプリ紹介 • 画像から3Dデータを自動生成 Fusion360
None
メッシュ操作ライブラリ Pymesh
そもそも • データの位置を移動してマージをするような作業 ‣ Cでごりっと実装するのは億劫 ‣ Blenderでやるものなんかちょっとね
そもそも • データの位置を移動してマージをするような作業 ‣ Cでごりっと実装するのは億劫 ‣ Blenderでやるものなんかちょっとね Pythonで簡単に使える ライブラリがあればいいのに! みんな
そもそも • データの位置を移動してマージをするような作業 ‣ Cでごりっと実装するのは億劫 ‣ Blenderでやるものなんかちょっとね Pythonで簡単に使える ライブラリがあればいいのに! 安心してください、ありますよ!
みんな
Pymesh • https://github.com/taxpon/pymesh • 特徴 ‣ numpyを使用 • 複数フォーマットサポート •
STL(Binary, ASCII), OBJ • Transform ‣ 移動、拡縮、回転 ‣ メソッドチェーンサポート • 複数Meshの結合(Booleanではない) • Analyse • 体積計算
Pymesh -使ってみよう- • インストール ‣ numpyが必要なので事前に要インストール ‣ PyPIに登録してあるのでpipでインストール可能 $ pip
install pymesh
モジュールimport ファイルロード 体積取得 拡大 回転 回転 移動 ファイルセーブ Pymesh -使ってみよう-
実行前 実行後 Pymesh -使ってみよう-
実行前 実行後 Pymesh -使ってみよう- これは簡単だ! みんな
Pymesh -使用事例- • 複数のデータを組み合わせるアプリ ‣ 文字が彫られたモジュールをユーザの入力した文 字列で組み替えるアプリ
Pymesh -使用事例- • 組み合わせて作成した事例
• 昨日(10/10)に発表があった石本さんのtse(text stream editor) ‣ 早速使ってみた ワンライナー
• 昨日(10/10)に発表があった石本さんのtse(text stream editor) ‣ 早速使ってみた ワンライナー echo ""|tse --module
"pymesh.stl" -p ".*" -a "m = pymesh.stl.Stl('sample.stl').rotate_x(45).save_st l('sample_out.stl')"
• 昨日(10/10)に発表があった石本さんのtse(text stream editor) ‣ 早速使ってみた ワンライナー echo ""|tse --module
"pymesh.stl" -p ".*" -a "m = pymesh.stl.Stl('sample.stl').rotate_x(45).save_st l('sample_out.stl')" ドヤ顔もできる! みんな
Pythonで 3Dプリント 3Dプリントに使える Python実装のソフトを紹介します
Cura • オープンソースのスライシングソフト ‣ https://github.com/Ultimaker/Cura ‣ 3Dプリントメーカー「Ultimaker」が提供 ‣ 構成 ‣
GUI: Python ‣ Engine: C++ Cura Engine Cura
Cura • オープンソースのスライシングソフト ‣ https://github.com/Ultimaker/Cura ‣ 3Dプリントメーカー「Ultimaker」が提供 ‣ 構成 ‣
GUI: Python ‣ Engine: C++ Cura Engine Cura スライシング?
スライシング? - データ作成 - データ修正 - 形式変換 - 3Dプリント -
後処理 ここ!
スライシング? レイヤー毎に分割し、 プリンタが読める形式に変換
• 3Dプリンタをネットワーク越しに操作可能にする ‣ 例えば, RaspberryPiに接続された3Dプリンタを 制御できるようになる OctoPrint RaspberryPI PC
まとめ
まとめ • 3Dプリントには、「データモデリング」「データ修正」「形式 変換」「3Dプリント」「後処理」作業が必要 • 3Dモデリングソフトはたくさんある ‣ Blender/Fusion360は無料でPythonモデリングが楽しめる ‣ Pymeshというデータ操作ライブラリがある
• 3Dプリント用ソフトにはPython実装のものがいろいろある
We are Hiring!! • カブクではPythonエンジニアを募集しています ‣ GCP, AWS ‣ 3Dに興味ある方
‣ 3Dプリンタ使いたい放題 ‣ グローバルな職場 エンジニアチーム
Thank you! Happy halloween :)