野球のシーム(縫い目)のようなボールを作る
はじめに
球体POVというものを作成しています.
その中で,いままで外殻と呼んでいる透明のボール部分があります.
これはAnyCubicのPhotn-Sという光造形型の3Dプリンタで出力しています.
打ち出し直後はこんな感じ
ちなみにこれが 初めてphoton-sで打ち出したものだったりしますw photon-sの印刷範囲が116×65×165mm のところに100×50×100mmのものを印刷したのでかなりギリギリだったのに,ちゃんと打ち出すことができました.
ほとんどデフォルトの設定のままでこれだけ出せるんだから大したものです.
打ち出し直後。
これを磨いて、
クリヤコートを吹きます。(UV硬化樹脂で、UVで変色しやすいのでUVカット付き)
もうちょっと磨けばよかったな
これはこれで満足のいく出来ではあったのですが,今回さらに新しく球体ディスプレイを制作するにあたりボール部分もデザインを一新しようと考えたのでした.
元ネタはthingiverseのこれ.
見た瞬間「これだ!!」と思い,さっそくダウンロードしましたねw
ところが,中に入っていたのはscad拡張子.全く知らなかったのでしらべてみました.これらしい。。
早速ダウンロードして開いてみます。
なるほど.
関数を記述して形状を作るタイプのやつなんですね.これならボールサイズや肉厚もパラメータ変更できそう。POV-RAYなんかと似てますね。
でもそれなら今後使うことを考えて、いつも使っているBlender & pythonで作りたいなあ,ということで作りました.
原理
野球のボールの縫い目に沿ってボールを2分割します.
数式は探したら出てきました.あるもんですねーー。
これをblenderに移植します.
単位球表面における縫い目の位置は次式で表されます.
ここで,()が (0.0〜)における 縫い目の単位球面上の座標値.このとき式にあるBとFは,
B: 縫い目の隙間の幅を決める係数
F: 縦横比を決める係数
となります.上のリンクにある図で引用すると,
B=0.4 F=1.0 |
B=0.6 F=1.0 |
B=0.8 F=1.0 |
今回はなんとなくB=0.5でやってみました.
ソースコードはこちら。
えい.実行!
こんなかんじに縫い目が出来上がりました.
あとは,これを繋いでポリゴン化(ここのソースコードは気が向いたら公開します)したあとで,ボールとbooleanかけると,,,,
こんな感じ.
うっわ.Polygon量デカすぎ. 遅い! ボールのメッシュがすべてPolygonになってしまっているのですね.fusion360などのCAD系だと球は関数ですから, booleanの作業はfusion360で行うことにします.
先程の縫い目をPolygon化したもの(簡単のため半分(0~)だけ制作)をstlまたはobj形式で出力します.
この際に,Polygonの面の向きとか法線方向,重複点などの処理が必要なのですが今回は割愛.自分用のメモなので.
興味ある方からリクエストがあれば手順を書きます.
読み込んだstlをFusion360上でメッシュとして読み込みます.
読み込んだあと,
「メッシュからBRep」に変換することで,メッシュをボディに変換することができ,その結果Fusion360上でオブジェクト同士のブーリアン演算などを行うことができるようになるのです.
半分のseamを鏡面コピーして準備完了。
さらにouter_shell(φ100mmのボール)からブーリアン演算で,inner_shellとseamを2つ抜きます.
えい,実行!
できましたw
これに,neon向けに穴あけ処理などを施して,photon-sで打ち出す前に確認としてAnycubic i3 Mega で打ち出してみます.
出ましたねえ。
嵌め込みが結構大変だけれど、なかなかいい感じ。なんだけれど気になる点が3つ
・嵌め込みがキツい。結構無理やり押し込んでる感じ。
・その割には嵌った後がユルい。カタカタいっちゃう感じ。この中にPOV入れて干渉しないかしらん
・この隙間にPOVを通せるのか?
ユルさはこんな感じ.
今後はBの値を0.5→0.35にして隙間を開けてみようと思います。