Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

3Dプリント×Python ~コードからアプローチする3Dプリンティング~

3,082 views

Published on

Developers Summit 2016冬で発表した時の資料です。

Published in: Engineering

3Dプリント×Python ~コードからアプローチする3Dプリンティング~

  1. 1. 3Dプリント×Python  ~コードからアプローチする3Dプリンティング~ Kabuku Inc. Takuro Wada(@taxpon)
  2. 2. Takuro Wada 和 田 拓 朗
  3. 3. 株式会社カブク ソフトウェアエンジニア 3Dプリントビジネス 主にECサイト開発、 B2B案件のシステム開発を担当 Takuro Wada 和 田 拓 朗 taxpon taxpon http://takuro.ws Hi!
  4. 4. Hi! • 大学&大学院 ‣ 裸眼3Dディスプレイ, AR&MRの研究 ‣ 企業と共同研究
  5. 5. Hi! • 大学院卒業後、SIerにSEとして入社 ‣ 大手金融機関向けシステムの設計開発 ‣ 上流から下流まで万遍なく経験 • カブク (https://www.kabuku.co.jp) • 設立前(2012)よりサポート • 2014.2に正社員として入社
  6. 6. https://www.rinkak.com/jp
  7. 7. https://www.3dprinting-mms.com/ja
  8. 8. https://www.rinkak.com/jp/book/3dprinter-guide
  9. 9. 3Dプリント×Python 「本日のお題」
  10. 10. 3Dプリント×Python 「本日のお題」 「3Dプリントってなんだっけ?」
  11. 11. 3Dデータを元に 造形物を積層造形すること 3Dプリントって?
  12. 12. 具体的には https://en.wikipedia.org/wiki/3D_printing
  13. 13. つまるところ 3Dプリントで なにができるの? Image from https://flic.kr/p/bTQwf4
  14. 14. 例:金型では作れない形状
  15. 15. 例:究極のカスタマイズ 「一品モノ」
  16. 16. http://joshi-spa.jp/435151 女子SPA!より引用 3Dフィギュア サービス http://www.loft.co.jp/lp/21-3DStudio/
  17. 17. (c) SQUARE ENIX CO., LTD.
  18. 18. 例:身の回りのもの
  19. 19. 例:既成品のハック
  20. 20. DIME 10月号より 弊社CEO稲田
  21. 21. 面白そう! どうすれば使えるの? Image from https://flic.kr/p/bTQwf4
  22. 22. 3Dプリントするはなにが必要? 3Dデータ 3Dプリンタ 3Dプリント = 3Dデータを元に造形物を積層造形すること
  23. 23. 3Dプリントするはなにが必要? 3Dデータ 3Dプリンタ 3Dデータを作ることをモデリングという
  24. 24. 3Dデータモデリング?? Image from https://flic.kr/p/bTQwf4
  25. 25. 3Dモデリングって? • 3Dデータを作ること 3Dデータ = 3Dの形状を表すデータ
  26. 26. STL(ASCII)の場合
  27. 27. 三角形ポリゴンの定義 STL(ASCII)の場合
  28. 28. 三角形ポリゴンの定義
  29. 29. 以下、ポリゴン定義の 繰り返し STL(ASCII)の場合 三角形ポリゴンの定義
  30. 30. 以下、ポリゴン定義の 繰り返し STL(ASCII)の場合 コレを自前で計算するのは大変 →モデリングツールを使う 三角形ポリゴンの定義
  31. 31. 3Dモデリングに使うツール • 3DCGソフト ‣ CGの作成が目的 • 3DCADソフト ‣ 工業デザインが目的
  32. 32. 3DモデリングツールとAPI • 様々なソフトがAPIを提供 ‣ 機能拡張や自動モデリング等が可能になる 3DCG 3DCAD
  33. 33. 3DモデリングツールのAPI • 様々なソフトがAPIを提供 ‣ 機能拡張や自動モデリング等が可能になる 3DCG 3DCAD プログラムで3Dデータを作成 = スクリプトモデリング
  34. 34. スクリプトモデリング ‣ 3DCGソフト/CADソフトが使えなくても3D データが作れる ‣ 手では作れない形状が作れる ‣ 形状の修正や変更が容易 ‣ 煩雑な作業が自動化できる
  35. 35. スクリプトモデリング ‣ 3DCGソフト/CADソフトが使えなくても3D データが作れる ‣ 手では作れない形状が作れる ‣ 形状の修正や変更が容易 ‣ 煩雑な作業が自動化できる _人人人人人人人_ > 楽しい!! <  ̄Y^Y^Y^Y^Y^Y ̄ _人人人人人人人_ > すごい!! <  ̄Y^Y^Y^Y^Y^Y ̄
  36. 36. ということで 本題に入ります
  37. 37. Blenderで スクリプトモデリング
  38. 38. Blenderって? • 1995年から開発され続けている3DCGソフト • オープンソース、マルチプラットフォーム(Win, Mac, Linux) • 開発言語はC, C++, Python ‣ Pythonは主にAPI部分に使われている ‣ Blender内部にPython Interpreterを保有(資料作成時点: 3.4.2)
  39. 39. APIで何ができるの? 3Dモデルの生成 3Dモデルの編集 Add-onによる機能追加 Animation編集 テクスチャ編集 割りとなんでも出来ます Blender Addon List http://blenderaddonlist.blogspot.jp/
  40. 40. APIの良い所 • GUIマウスオーバーでPythonメソッド名が表示
  41. 41. APIの良い所 • コマンド履歴がPythonで自動出力 Cubeの生成 移動 拡大
  42. 42. APIの良い所 • Pythonコンソールの提供 ActiveObjectの確認 位置の表示 移動 スクリプトの動作を簡単に確認するときに便利
  43. 43. APIの良い所 • PythonスクリプトTemplateの提供 ‣ 内部のテキストエディタでTemplateを選択 様々なタイプのTempleateが入っていて便利
  44. 44. APIの良くない所 • ドキュメントがわかりにくい ‣ 引数の説明が不十分:用途不明 ‣ 分からなかったらソース読めばいい! ‣ でもやっぱり大変
  45. 45. では実際になにか作ってみよう • この辺の内容はRinkakブログにまとまっています ‣ PythonによるBlender 3DCGモデリング ‣ https://www.rinkak.com/jp/blog/blender-python-modeling-1 • サンプルはGithubで公開してます ‣ https://github.com/kabuku/blender-python
  46. 46. デフォルトオブジェクトの削除 コーンの追加
  47. 47. -Pオプションと 実行したいスクリプト名
  48. 48. たくさんコーンを追加 論理和の計算
  49. 49. Branch modeling Image from https://flic.kr/p/4swDCt
  50. 50. Root アルゴリズム
  51. 51. Root Branch Child 1 BranchChild 1 アルゴリズム
  52. 52. Root Branch Child 1 Branch Branch Branch Child 2 Child 2 Child 1 Branch Branch Child 2 Child 2 アルゴリズム
  53. 53. Root Branch Child 1 Branch Branch Branch Child 2 Child 2 Child 1 Branch Branch Child 2 Child 2 アルゴリズム
  54. 54. 3D printing root 1 2 22 2 1
  55. 55. サポート除去に30分かかる
  56. 56. Chain modeling Image from https://flic.kr/p/aA2u7C
  57. 57. https://www.myminifactory.com/object/5943
  58. 58. https://www.youtube.com/watch?v=z1OSXnCG-jk
  59. 59. http://afinia.com/3d-printers/h480/
  60. 60. 15cm 15cm Afinia H480 Bed Size
  61. 61. もっと長いの… https://flic.kr/p/5pT9iD
  62. 62. RのパスをSVGで出力
  63. 63. モジュールを再デザイン
  64. 64. モジュールを再デザイン
  65. 65. 新しいコードを追加
  66. 66. キタ━━━━(゚ ゚)━━━━!!
  67. 67. 記念撮影
  68. 68. ちゃんとチェーンに!
  69. 69. Sound wave modeling Image from https://flic.kr/p/9DmuxA
  70. 70. システム構成 Play music Analyse sound Convert protocol Modelling
  71. 71. リアルタイムに音声解析をし その波形の3Dデータを生成
  72. 72. プレゼンしました @Blender Conference 2015, Amsterdam
  73. 73. Fusion360で スクリプトモデリング
  74. 74. Fusion360って? • 2012年頃にAutodeskが発表した3DCADソフト • マルチプラットフォーム(Win, Mac) • パラメトリック(強力!), クラウド処理 • APIはJavascript, Python, C++が公開されている ‣ Fusion360内部にPython Interpreterを保有(資料作成時点: 3.3.5) ‣ 動作速度は C++ > Python > Javascript(推測)
  75. 75. APIで何ができるの? 3Dモデルの生成 3Dモデルの編集 Add-onによる機能追加 割りとなんでも出来ます GUIの作成
  76. 76. APIの良い所 • コンソールの提供 スクリプトの動作を簡単に確認するときに便利 UIオブジェクトの取得 メッセージボックの描画
  77. 77. APIの良い所 • Debugger内蔵
  78. 78. APIの良い所 • ドキュメントが充実 ‣ http://fusion360.autodesk.com/learning/learning.html
  79. 79. ちなみに • Fusion360のマニュアルが読みやすくなるという超 ニッチなChromExtension作りました •Chrome Web Storeからどうぞ • ChromeWebStoreで「Fusion360」で検索 • https://chrome.google.com/webstore/detail/autodesk-fusion360-learni/amkdnibbgekpljlononmmglfppeihpdn
  80. 80. _人人人人人人人人人人人人人人人人_ > 大変好評いただいております! <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
  81. 81. APIの良くない所 • コマンドライン実行ができない ‣ GUIポチポチでスクリプトを実行するのは億劫
 • API自体があまり直感的ではない ‣ パラメトリックだから? ‣ なれればそんなに気にならないかも
  82. 82. では実際になにか作ってみよう • スクリプトはメニューから追加可能 ‣ runメソッドが実行される
  83. 83. Sketchの準備 矩形の描画 押し出しを適用するためのCollection作成 押し出しの適用
  84. 84. 1辺の長さが2の立方体
  85. 85. 矩形の描画メソッドを作成 10個のランダムな矩形を描画 押し出しを適用するためのCollectionを作成
  86. 86. アプリ紹介 • 画像から3Dデータを自動生成
  87. 87. OpenSCADで スクリプトモデリング
  88. 88. OpenSCADって? • オープンソースのCADソフト(GPL) • マルチプラットフォーム(Win, Mac, Linux) • C++(Qt)で実装されている • ソフトウェア内のエディタに独自のプログラム言語を記述すること で形状を表現する • GUIによる形状の作成はできない(コードのみ!)
  89. 89. OpenSCADの特徴 • エンジニアには非常にとっつき易い • コマンドラインから起動できる ‣ サーバで動かして、なんか出力とか ‣ まとめてスクリプトでデータ作成
  90. 90. 任意の文字で構成されるネクタイ
  91. 91. 任意の文字で構成されるネクタイ
  92. 92. スクリプトでまとめて生成 ‣ コマンドラインから引数を渡すことができる ‣ この例では文字データを渡し、生成している
  93. 93. 他の言語から使う • 他の言語から使用できるライブラリがいくつもある ‣ Python (https://github.com/SolidCode/SolidPython) ‣ Ruby (https://github.com/cjbissonnette/RubyScad) ‣ Javascript (http://openjscad.org/)
  94. 94. OpenPySCAD • PythonのソースコードからOpenSCADのソースコード を生成する ‣ https://github.com/taxpon/openpyscad • PyPIよりインストール可能 $ pip install openpyscad
  95. 95. OpenPySCAD 例 • 和演算 Cube([20, 10, 10]) + Cube([10, 20, 10]) union(){
 cube([20, 10, 10])
 cube([10, 20, 10])
 };
  96. 96. OpenPySCAD 例 • 差演算 Cube([20, 10, 10]) - Cube([10, 20, 10]) difference(){
 cube([20, 10, 10])
 cube([10, 20, 10])
 };
  97. 97. OpenPySCAD 例 • 回転 c1 = Cube([20, 10, 10]) c1.rotate([0, 0, 45]) rotate([0, 0, 45]){
 cube([20, 10, 10])
 };
  98. 98. まとめ
  99. 99. Script Modeling is FUN!! 今日から結果にコミット!! https://flic.kr/p/ef4VBP
  100. 100. We are Hiring!! ‣ GCP使いたい! ‣ 3Dやりたい! ‣ Python / C++ ‣ Angular / React ‣ 3Dプリンタ使いたい放題 ‣ グローバルな職場 ‣ Google Developer Expertが3名 エンジニアチーム http://www.kabuku.co.jp/#jobs
  101. 101. Lineスタンプ販売中! 「かくも①」で検索 ! ちなみに
  102. 102. Thank you! 質問は@taxponまでどうぞ

×