この記事では、実際にトラックボールケース(Keyball用、34mm球、セラミック球支持)をモデリングする手順を簡単になぞっていきます。
もちろんこれが正解というわけではないですし、自分はBlenderについても初心者なので効率がよくなかったりヘンな手順だったりするかもしれません。
ですがこの記事によって最低限使用できるものが作れるようになるはずです。
トラックボールケースはキーボードケースよりサイズが小さく出力時間も短くて済むので作りやすいですし、個性が出やすいので意外と楽しいです。気になった方はトライしてみてください。
- 記事にあるスクリーンショットの操作する個所について
- インストール
- 初回起動時
- ガイドモデルの作成
- ホルダー部
- センサーカバー内部
- センサーカバー
- セラミック支持球を埋め込む穴
- トラックボールケース取り付け用のネジ穴
- 組み合わせ
- STLファイルのエクスポート
- 3Dプリント・確認
- 修正・調整を行う場合
- 終わりに
記事にあるスクリーンショットの操作する個所について
マウス操作やキー入力が必要な個所はオレンジ色の枠で囲っています。
3Dビュー上でショートカットキー入力が必要な場合は左下に文字で表示しています。
操作によって変化するところや注目すべき場所は緑色の枠で囲っています。
インストール
公式サイトからインストーラをダウンロードします。記事執筆時のバージョンは4.2.1LTSです。
https://www.blender.org/download/
ダウンロードが終了したら、blender-4.2.1-windows-x64.msiをダブルクリックします。
インストール時の設定はデフォルトのまま進めてOKです。
初回起動時
インストールが完了したらBlender 4.2のアイコンをダブルクリックして起動します。
初回起動時には基本的な設定を行う小さいウィンドウが表示されます。
こだわりがなければそのままで問題ありません。オススメは言語設定を英語にすることです。わからない事柄を検索する際に見つけやすくなります。
次に出る小さいウィンドウは毎回の起動時に表示されます。
今は用がないので、このウィンドウ外をクリックすれば消えます。
最初に起動すると以下のようなウィンドウが表示されます。
最初からシーンに箱とカメラとライトが配置されています。
これらは必要ないので、マウスの左ドラッグでまとめて選択して、Xキーを押して削除します。
画面がスッキリしました。
Blenderの距離単位のデフォルトはメートルなので、ミリメートルに変更します。
その少し上にあるUnit Scaleを0.001にします。
Viewport Overlays設定で、グリッドガイドのサイズを0.001にします。
StatisticsをONにして、ウィンドウ左上に頂点数などの情報が表示させます。
Face OrientationをONにして、ポリゴンの表裏が色で判別できるようにします(表→青、裏→赤)。
ウィンドウの一番下の部分を右クリックしてメニューを表示させ、Scene Statisticsにチェックを入れます。
ウィンドウ右下にシーンの情報やオブジェクト選択状況などが表示されるようになります。
シーンのビュー設定を調整します。
メインの3Dビューの右側に設定タブが表示されていない場合、小さい「く」の字のようなアイコンをクリックします。またはNキーを押してもいいです。
Viewタブをクリックしたら、Clip Startを0.1mmに、Endを100000mmに変更します。
初期設定が完了したので、保存しておきます。
ウィンドウ上部のメインメニューから、File -> Defaults -> Save Startup Fileを選択します。
以上で初期設定は終了です。
この設定は以下の動画を大いに参考にしています。ほかにも役立ちそうな設定があるので興味がある方は見てください。
https://www.youtube.com/watch?v=R-Vq2O-hvfo
ガイドモデルの作成
トラックボールケースをモデリングする前に、基準となるKeyballの構成要素となる仮モデルを作っておきます。
ガイドとなるモデルを作っておくことで、トラックボールケースをキーボードにフィットさせたり、干渉を事前にチェック出来たりします。
最初にグループ名を変更しておきます。
ウィンドウ右上のアウトライナの白い箱のアイコンの名前をダブルクリックするかF2キーを押して名前を変更します。ここではguideとしておきます。
トラックボールの球を作成します。
ウィンドウ上部のメニューのAdd -> Mesh -> UV Sphereを選択します。
(またはShift+Aでもオブジェクトの追加が出来ます)
中央に球が作成されて、ウィンドウ左下に詳細設定の窓が現れるので半径を17mmにします。
(キーボードで入力するとき、単位のmmを入力する必要はありません)
球の名前もわかりやすくtrackball 34mmに変更しておきます。
センサー回りのガイドモデルを作る前に情報収集します。
Keyballシリーズで採用されているトラックボールセンサーはPMW3360というものらしいので、"pmw3360 datasheet"で検索して出てくるデータシートをもとに各サイズを決めます。
データシートによるとレンズパーツの大体のサイズは、(Keyball設置基準で)縦が21.35mm、横が19.00mm、厚みは形状が複雑なのでノギスで適当に採寸し3.4mmを得たとします。
(もしくは全部の形状をノギスで採寸してもいいです)
球の追加と同様の操作で、箱を追加します。
TransformのDimensionsで箱のサイズを決めます。
個人的経験から、家庭用3Dプリンターの精度で0.1mmより細かい値で調整することはほぼないので、Blender上のサイズも0.1mm単位で扱っています。
というわけで、箱のサイズを3.4mm x 19.0mm x 21.4mmにします。
データシートによるとレンズから検知位置(机)までの距離は2.4mmになっていますが、もともとマウス用センサーなことを考えるとトラックボールの球面に対してどう調整すればいいかよくわかりません。まぁ2.4mmにします。
またセンサーが反応する部分はレンズの上から10.97mmとなっていますが、面倒なのでおおよそ中央だとみなします。
したがって、レンズの位置は(21.1, 0, 0)に設定します。
レンズが箱のままなので、角を丸めます。
レンズオブジェクトを選択状態でTabキーを押して、オブジェクトの頂点・辺・面を調整できるEditModeに入ります。
EditModeで1キーを押すと頂点(Vertex)モード、2キーを押すと辺(Edge)モード、3キーを押すと面(Face)モードです。
2キーを押して辺モードに切り替えます。
面の向こうが見えないと都合が悪いのでウィンドウ右上の線画の球ボタンを押してワイヤーフレーム描画に切り替えます。
マウスの左ボタンドラッグで上部の長い辺2本を選択します。
Shiftキーを押しながら、左・右・下の長い辺2本ずつを選択します。
この状態でマウスの右クリックを押して、Subdivideを選択します。
ここで辺を分割するのは、後の手順で箱の角を丸める際にこの辺が丸くならないようにするための対処です。
(RMBはRight Mouse Buttonの略です)
1キーを押して頂点モードに切り替え、角の頂点8つを選択したあと、Ctrl+Gキーを押します。
Assign to New Groupボタンを押すと、選択していた頂点がグループとして登録されます。
Tabキーを押してObjectモードに戻ります。
次の作業に影響が出てしまうので、オブジェクトに設定されている拡大率を頂点に適用します。
(見た目の大きさをそのままに、拡大率が1倍になるように頂点位置を自動的に移動させます)
Ctrl+Aを押して出てきたメニューからScaleを選択します。
オブジェクトの角を丸める要素(モディファイア)を追加します。
ウィンドウ右下でModifiersタブをクリックしてAdd Modifierボタンを押します。
続けて、Generate -> Bevelを選択します。
Limit MethodをVertex Groupに変更します。
Vertex Groupの右側の空欄をクリックして、先ほど登録した頂点グループであるGroupを選択します。
データシートによるとレンズパーツの角のRは7.1mmとなっているので、Amountを7mmに、Segmentsを8にします。
(この時、オブジェクトのScaleが1.0でない場合はBevelのサイズが正しく反映されません)
箱オブジェクトの名前をlensに変更します。
次はセンサーPCBです。
現物をノギスで計測します。高さが25.0mm、幅が22.2mm、厚さが1.6mm、レンズの上端とPCBの上端との差が4.0mmでした。
上部メニューのAddもしくはShift+AからCubeを作成し、サイズを1.6mm x 22.2mm x 25.0mmに設定します。
今回は3Dビュー上で箱を移動させます。
ウィンドウ左側の矢印アイコンをクリックしてオブジェクト移動モードに変更します。
ウィンドウ上部の磁石アイコンをONにしてオブジェクトの移動がグリッドに沿うようにします。(中途半端な値になるのを避けられます)
ウィンドウ右上のXYZ軸表示の-Y(薄い緑色)をクリックするか、テンキーの1を押して視点を正面からのビューに切り替えます。
視点の平行移動はウィンドウ右側の手のアイコンをドラッグするか、Shift+マウスホイールドラッグです。
箱の中央にある矢印をドラッグするか、Gキーを押して移動させます。
まずはレンズの右側ピッタリに配置します。マウスホイールでズームインすると移動単位が0.1mmになるので適宜調整してください。
そのあと、箱を4mm下に移動させます。
箱の位置は(23.6mm, 0mm, -5.8mm)になっているはずです。
箱の名前をcensor pcbにします。
同様に、センサーチップのサイズをノギスで測ります。端子の足や出っ張った部分、レンズパーツの接合部などを含めると、幅12.0mm、高さ17.0mm、厚み(レンズまでの距離)4.8mm、センサーレンズとの高さの差は-3.0mmでした。
Blender上でShift+A → Mesh → Cubeを作成し、サイズをセットして、センサーPCBの右側にピッタリつき上端が5mm突き出る位置に調整します。位置は(25.2mm, 0mm, -0.8mm)です。
オブジェクト名をcensor chipにします。
次はボトムプレートの位置を調べます。
センサーPCBをKeyballのL字コンスルーに取り付け、センサーPCBの上端からボトムプレートまでの距離をノギスで測ります。高さの差は25.4mm、ボトムプレートのアクリル板の厚みは2mmでした。
箱を作成し、サイズを(100mm, 100mm, 2mm)、位置を(0mm, 0mm, -19.7mm)、オブジェクト名をbottom plateにそれぞれ設定します。
このように地道に計測とモデル配置を行っていきます。
メインPCB(L字コンスルーの下)
厚み 1.6mm、ボトムプレートとの隙間 1.8mm
Cube サイズ(20mm, 20mm, 1.6mm)、位置(34.4mm, 0mm, -16.1mm)、オブジェクト名 main pcb 1
L字コンスルー
Cube サイズ(3mm, 18.2mm, 4mm)、位置(25.9mm, 0mm, -13.3mm)、オブジェクト名 L conthrough
メインPCB(L字コンスルーの向こう側)
Cube サイズ(20mm, 20mm, 1.6mm)、位置(24mm, 24mm, -16.1mm)、オブジェクト名 main pcb 2
(上からの視点に切り替えています)
メインPCB(上記のすぐ左側、段差がある部分)
Cube サイズ(20mm, 20mm, 1.6mm)、位置(4mm, 27mm, -16.1mm)、オブジェクト名 main pcb 3
スイッチプレート(L字コンスルーの後ろ側)
Cube サイズ(20mm, 20mm, 1.6mm)、位置(43.4mm, 0mm, -11.1mm)、オブジェクト名 switch plate
(手前からの視点に切り替えています)
以上でガイドモデルの作成は終わりです。
ホルダー部
トラックボールを保持する部分を作成していきます。ここではこれをホルダー部と呼びます。
これから作成するオブジェクトがガイドモデルと混ざるとややこしいので、作業場所を作成します。
ウィンドウ右上のアウトライナのScene Collectionを右クリックして、New Collectionを選択します。
新しくできたコレクション(白い箱)の名前の部分をダブルクリックするかF2キーを押して、holderに変更します。
さらに作業途中のオブジェクト置き場として、holderの下にholder workを作成します。
ガイドモデルは邪魔なので、いったん非表示にします。
アウトライナの右側にある目のアイコンをクリックすると非表示になります。
最初に、ボールホルダーの外側を作ります。
トラックボールのサイズが34mmなので、それより大きめの39mmの球(UV Sphere)を作成します。Radiusは半径なので39mmの半分の19.5を入力します。
また、3Dモデルを出力したときに滑らかになるように、球を細かい面で分割するようにします。
Segments 128, Rings 64, Radius 19.5mm オブジェクト名 holder shell
(パソコンのスペックが心もとない方はSegments 32, Rings 16のままでもOKです。あとから精細なオブジェクトに取り換えることもできます)
次に、トラックボールを引っ掛ける部分を作ります。
箱(Cube)を作成し、サイズを(60mm, 60mm, 60mm)、X軸回転を45度、オブジェクト名をholder areaにします。
この箱を縦方向につぶしたいので、箱を選択中に3DビューでCtrl+Aを押して、出てきたメニューからRotationとScaleを選択します。
これによって、箱が回転なし、拡大なしの状態になります。
箱の角を丸めるために、Bevelモディファイアを追加します。
ここではとりあえずAmountを6mm、Segmentsを8としておきます。
LocationのZ値にScaleのZ値に-9mm、ScaleのZ値に0.4を入力します。
球とひし形の重なった部分を取り出します。
holder shellを選択して、Booleanモディファイアを作成します。
BooleanのモードをInsersectに切り替え、Objectの空欄をクリックしてholder areaを選択します。
(アウトライナからholder areaをドラッグ&ドロップでもOK)
holder areaを非表示にすると、球と重なった部分だけが残っているのがわかると思います。
同様の手順で、ホルダーの内部をくりぬきます。
球(UV Sphere)を作成し、直径を35.5mm(半径17.75mm)、オブジェクト名をholder innerにします。
内側の球の部分を削り取ります。
holder shellを選択して、Booleanモディファイアを作成します。
Objectの欄をクリックしてholder innerを選択します。
holder innerを非表示にすると、内側がくりぬかれているのが確認できます。
上からの視点に切り替えて、メジャーツールを使ってホールド部分の距離を測ります。
メジャーの端が上手くフチにくっ付かないときはマウスホイールで十分にズームアップすると簡単になります。
測定された距離は32.6348mmと表示されています。
トラックボールは34mmなので、ちょっとはめ込みがキツい可能性があります。
3Dプリンターの精度にもよりますが、大体トラックボールのサイズより0.5mm~1.0mmほど狭いくらいが良いです。
フチの位置を決めているのはholder areaなので、holder areaを選択して位置を調整します。
holder areaを選択して、非表示のままでLocationのZ値を少しだけ下げます。
holder areaの位置を変更したら、メジャーの端をドラッグしてフチの間の距離を再度測定します。
Z値を-10mmにしたところ、フチの間の距離は33.427mmになりました。ひとまずこの値で進めます。
3Dプリンターで出力した後でキツイ・ゆるい場合はこの個所を再度調整します。
※ちなみに、メジャーを調整した直後にXキーを押すとメジャーを削除できます。
作業領域とは別に、実際に使用するホルダーの部品を置く場所を作成します。
アウトライナのholderを右クリックしてNewを選択したあと、名前をholder partsに変更します。
holder shellを選択した後、マウスカーソルを3Dビューのほうに置いた状態でShift+Dを押してオブジェクトを複製します。
複製した直後はマウスカーソルに応じてオブジェクトが移動するので、ESCキーを押して移動をキャンセルします。
アウトライナ上で、複製されたholder shell.001をholder partsコレクションに移動(ドラッグ&ドロップ)したあと、名前をholder cupに変更します。
このあとholder cupを回転させますが、Booleanモディファイアで使っているオブジェクトは付いてこないので、ここでholder cupに適用します。
holder cupを選択した後、上のBooleanモディファイア(Intersect)の小さいvの字のアイコンをクリックしてメニューからApplyを選択します。
内側をくりぬくのは後で行いたいので、もう一つのBooleanモディファイア(Difference)は×ボタンを押して削除します。
作業用のholder workコレクションを非表示にしたあと、holder cupを回転させます。
holder cupのY軸回転に-50度を設定します。
holder cupを支える柱を立てます。
目安のために、guideコレクションの表示をONにします。
Shift+A → Mesh → Cylinderで円柱を作成し、適当に配置します。
ここではVertices 128、Radius 12mm、Depth 10mm、Location Z -16mmとしました。
オブジェクト名をholder baseにしておきます。
以上でホルダー部の作成は終了です。
センサーカバー内部
センサーカバーの外側を作る前に、センサーカバーの内部を作成します。
内部を作成するというのは、センサーPCBやレンズが入るように穴をあけることを指します。
最初に、作業場所となるコレクションを作成します。
ウィンドウ右上のアウトライナのScene Collectionを右クリックしてNew Collectionを選択し、作成されたコレクションの名前をcensor coverにします。
さらにcensor coverの下にcensor cover diffsを作成します。
センサーカバーの内部の穴となる形状は、ガイドモデルをもとに作成します。
guideコレクションの中にあるbottom plate、censor chip、censor pcb、L conthrough、lens、main pcb 1を選択します。
(Ctrlキーを押しながら左クリックで一つずつ選択するか、bottom plateを左クリックした後でShiftキーを押しながらmain pcb 1をクリックしてください)
選択状態でCtrl+Cを押してコピーをした後、censor cover diffsコレクションを選択してからCtrl+Vを押してペーストします。
部品を入れ込むにはその部品の大きさよりもすこし広い穴をあける必要があります。
3Dプリンターの精度にも因りますが、平面方向(X軸方向とY軸方向)は0.3mmくらい広げれば大体は問題ないです。
垂直方向(Z軸方向)は精度があまり出ないので、少し多めにマージンを取ったほうがいいです。とりあえず上面を0.5mm上げることにします。
頂点を数値入力で調整する場合、オブジェクトに拡大がかかっていると意図した結果になりません。
先ほどペーストで複製したオブジェクトを選択して、Ctrl+Aを押し、出てきたメニューからScaleを選択します。
最初はレンズ部分から始めます。
lens.001オブジェクトを選択して、正面からの視点に切り替えます。(右上の-Y軸をクリックするかテンキーの1を押す)
オブジェクトを選択している状態でスラッシュ(/)キーを押すと、そのオブジェクトだけの表示になります。再びスラッシュキーを押すと元に戻ります。
頂点を選択しやすいように、右上のアイコンを押して表示をワイヤーフレームモードに切り替えます。
Tabキーを押してEditモードに変更したあと、1キーを押して頂点選択モードにします。
マウスの左ボタンをドラッグして、左側の頂点をまとめて選択します。
(左クリックで頂点を一つずつ選択していくと、向こう側の頂点が選択できないので注意)
右上を見ると、X座標の値が-1.7mmとなっています。ここから0.3mm左(-X方向)にずらしたいので、-2.0mmをセットします。
同様に、右側の頂点を選択します。
X座標の値が1.7mmなので、0.3mm足して2.0mmにします。
上側の頂点を選択します。
Z軸の値が10.7mmなので、0.5mm足して11.2mmにします。
下側の頂点を選択します。
センサー部品はセンサーケースの下側から入れるため、下方向に穴をつなげる必要があります。
下側の頂点のZ座標値は適当に-30.0mmとしておきます。
手前側と奥側にもずらす必要があるので、右上の青いZを押すか、テンキーの7を押して上からの視点にします。
奥側の頂点を選択します。
選択している頂点のY座標値は9.5mmとなっています。
ここから+Y方向に0.3mmずらしたいので、9.8mmと入力します。
手前側の頂点を選択します。
Y座標値に-9.8mmと入力します。
前後左右上下の頂点の調整が終わったので、Tabキーを押してオブジェクトモードに戻り、スラッシュキーを押してほかのオブジェクトの表示をもとに戻します。
上記の頂点の調整を、censor chip.001、censor pcb.001、L conthrough.001に対して同じように行います。
一つずつオブジェクトを選択してスラッシュキーで単独表示にしたあとTabキーでEditモードに入り、XY方向に±0.3mmずらす、+Z方向に+0.5mmずらす、-Zには-20mmを入力してください。
ガイドモデルと同時に表示すると、少し膨らんでいるのが確認できます。
上からも確認しておくと、調整し忘れを防止できます。
トラックボールケースの下側に出っ張った余計な部分を削り取るため、ボトムプレート部分も調整しておきます。
ボトムプレートはトラックボールケースの底の部分になるので上面は調整する必要ありません。
下の部分だけ多めに広げておけばOKです。
bottom plate.001オブジェクトを選択して、スラッシュキーを押し、Tabキーと1キーを押します。
下側の頂点を選択します。
Z座標値に-20mmと入力します。
Tabキーとスラッシュキーを押して元の状態に戻します。
L字コンスルーが乗っているメインPCBの部分も削り取っておく必要がありますが、ガイドモデルを適当に作っていたため、他のオブジェクトより多めに頂点をずらす必要があります。
main pcb 1.001を選択してスラッシュキーとTabキーと1キーを押します。
左側の頂点を-X方向に0.3mmずらします。
上側の頂点を+Z方向に0.5mmずらします。
下側の頂点を-Z方向に適当に大きくずらします。
上からの視点にして、奥側の頂点を選択し、適当に大きくずらします。
手前側の頂点を選択し、適当に大きくずらします。
Tabキーとスラッシュキーを押して元の視点に戻します。
そういえばレンズパーツの中央近くに三角形の出っ張りがあるんですが、これが引っ掛からないようにするための穴をあける必要があるんでした。
(ガイドモデルで作っておくべきでしたが、忘れていました)
箱を作成し、サイズを(2mm, 5mm, 30mm)、位置を(19mm, 0mm, -10mm)、オブジェクト名をlens deppari yokeにします。
トラックボールの動きを感知させるための、センサーレンズの前にあける穴を作ります。
データシートによると、円と四角を組み合わせたような形の穴をあけるよう指定があります。
まず円柱を作成し、半径を2mmに設定します。高さ(Depth)は適当に5mmにしておきます。
Y軸回転に90度を設定して円柱を横に寝かします。
頂点を編集するので、スラッシュキー、Tabキーを押します。
そのあと視点を右側からに切り替えるために右上のX軸をクリックするか、テンキーの3を押します。
上半分(真ん中は含まない)の頂点を選択します。
Xキーを押すと削除メニューが表示されるので、Verticesを選択して頂点を削除します。
選択していた頂点が消えました。
一番上に見えている頂点をマウスの左ボタンドラッグで選択します。
4頂点選択されているはずです。
Fキーを押すと、選択している頂点の形で面が作成されます。
上の面が選択された状態でEキーを押すと、面の押し出しが出来ます。
Eキーを押した後にマウスを上方向に移動させて面を4mm押し出します。
3Dビューの表示をソリッド表示に切り替えます。
ワイヤーフレーム状態ではわかりませんでしたが、円柱の頂点を半分削除したときにその頂点に属していた面も消えたため、オブジェクトに穴が開いてしまっています。
穴の開き方が単純な場合は、頂点を全選択してFキーを押せば穴がふさがります。
全選択はAキーです。
Tabキーとスラッシュキーを押して元の視点に戻します。
ホルダー部とセンサー部の間に配置します。(18mm, 0mm, 0mm)
オブジェクト名をcensor holeにします。
以上でセンサーカバー内部のモデリングは終了です。
センサーカバー
センサー部品を覆うセンサーカバーを作成します。
オブジェクトを配置するコレクションを作成します。
ウィンドウ右上のアウトライナのcensor coverコレクションを右クリックしてNewを選択し、作成されたコレクションの名前をcensor cover partsにします。
内部のオブジェクトを覆い、外部のオブジェクトと干渉しなければどんな形でもいいですが、Keyball純正のトラックボールケースっぽい丸みを帯びた形状を作成していきます。
ワイヤーフレーム表示に切り替え、箱を作成し、サイズ(16mm, 26mm, 33mm)、位置(24mm, 0mm, -3mm)に設定します。
Ctrl+Aを押してメニューからScaleを選択して拡大率を頂点に適用します。
Tabキーを押してEditモードに切り替えます。
Aキーを押して頂点を全選択し、マウスの右クリックのメニューからSubdivideを選択します。
中割りの頂点が増えます。
下の画像の11個の頂点を選択し、Ctrl+Gを押してAssign to New Gruopをクリックして新しい頂点グループを作成します。
Shiftを押しながらクリックしていくと複数の頂点を選択できます。
同様に、下の画像の7つの頂点を選択して新しい頂点グループを作成します。
Tabキーを押してObjectモードに戻り、手前からの視点に切り替えます。
Bevelモディファイアを作成し、Amount:8mm、Segments:8、Limit Method:Vertex Group、Vertex Group:Groupに設定します。
センサーカバーの内部形状にぶつからないように注意します。
2つめのBevelモディファイアを作成し、Amount:4mm、Segments:8、Limit Method:Vertex Group、Vertex Group:Group.001に設定します。
オブジェクト名をcensor cover shellに変更します。
以上でセンサーカバーの作成は終了です。
セラミック支持球を埋め込む穴
支持球として2mmのセラミック球を使用するので、2mmの穴をあけます。
オブジェクトの置き場所のコレクションを作成します。
アウトライナのholderコレクションを右クリックしてNewを選択し、新しいコレクションの名前をbearing diffsにします。
セラミック球を埋め込むための穴を六角柱(Cylinder)で作成します。
Vertices:6、Radius:1mm、Depth:2mm、オブジェクト名をbearing diffに設定します。
Dimensions(オブジェクトのサイズ)をよく見ると、Xが1.73mm、Yが2mmとなっています。
六角形の角と角の距離は2mmですが、辺と辺の距離は1.73mmだと2mmの支持球が入らないので、すこし拡大します。
(2.0 / 1.73 = 1.156)
穴の向きを回転させ、トラックボールに接する位置まで移動します。
X軸回転とZ軸回転に90度を、X座標値に18mmを入力します。(トラックボールの半径17mm+支持球の半径1mm)
位置、回転、拡大をすべて頂点に適用するために、Ctrl+Aを押してAll Transformsを選択します。
この状態にすることで、原点を中心とした回転調整が行えるようになります。
支持球の配置を決めます。
この角度の設定によってトラックボールの操球感に影響があります。
角度が小さいと安定感が高くトラックボールがカタカタしづらくなりますが、摩擦感が高くなり滑りが悪く感じられます。
角度が大きいと安定感が低くなりトラックボールがカタカタしやすくなりますが、摩擦感が低く滑らかに滑ります。
今回は安定感重視の15度で進めます。Y軸の回転角度に15と入力します。
支持球は3つ必要なので、Ctrl+Cでコピーを行い、Ctrl+Vでのペーストを2回行います。
bearing diff.001を選択して、Z軸回転に120を入力します。
bearing diff.002を選択して、Z軸回転に-120を入力します。
3つの支持球の全体的な角度を設定します。
視点を正面からに切り替えて、3つのbearing diffオブジェクトを選択し、Rキーを押して回転モードに入ったあとすぐにマウスの左クリックをします。
左下のRotateのAngle欄で角度の調整をします。
ひとまず-40度を設定します。
Keyballをテンティングして使用している方はもっと大きく傾けると安定感が向上します。
支持球を埋めるための穴あけはこれでOKですが、トラックボールを入れるための穴が直径35.5mmの球なので、これだと0.5mmのくぼみしか作れません。
なので、支持球を埋めるための補助的な造形を行います。
また支持球の穴が外側に貫通するのを防ぐため、外側に追加で厚みを持たせます。
オブジェクト配置コレクションをholderコレクションの下に作成し、bearing supportsと名付けます。
半径2mmの球(UV Sphere)を作成します。
X軸方向のサイズを1.6mm、X座標値を18mmに設定します。
選択中のSphereをコピー&ペーストで一つ複製し、Sphere.001を選択した後にX座標値を19.3mmに設定します。
オブジェクト名をそれぞれbearing support inner、bearing support outerとします。
ここからはbearing diffで行った作業と同じことを行います。
Ctrl+A → All Transformsで移動と拡大を頂点に適用する、Y軸回転角度に15度をセット、コピー&ペーストでそれぞれ2つずつ追加する、ペーストしたオブジェクトのZ軸回転角度をそれぞれ120度と-120度にする、bearing support全部を選択して正面視点で-40度回転させる、です。
これらを行うとbearing supportがbearing diffと同じ位置に来ているはずです。
以上で支持球を埋め込む穴をあける作業は終了です。
トラックボールケース取り付け用のネジ穴
トラックボールケースをボトムプレートの下からネジ止めしてとめるための足と穴を作ります。
オブジェクトの置き場所となるコレクションをholderの下に作り、foot diffsと名付けます。
ネジ穴として六角形の柱を作成します。
Keyballに付属しているネジはM1.7なので、それより少し小さく六角形の辺の間の長さを1.6mmにします。
Radiusを0.925mmにすると良い感じです。
Depthは適当に5mmとしておきます。
オブジェクトを(10.7mm, 8mm, -17mm)に配置し、名前をfoot screw holeに変更します。
コピー&ペーストかShift+Dでfoot screw holeオブジェクトを複製し、(10.7mm, -8mm, -17mm)に配置します。
足の柱を作成していきます。
オブジェクト配置場所のコレクションをholderの下に作成し、名前をfoot partsにします。
柱を作成し、Vertices:32、Radius:4mm、Depth:12mmに設定します。
オブジェクトを(10.7mm, -8mm, -13mm)に配置し、名前をfootにします。
footを複製し、(10.7mm, -8mm, -13mm)に配置します。
以上で取り付け用の足の作成は終了です。
組み合わせ
今まで作成してきたオブジェクトたちを組み合わせて、トラックボールケースにします。
アウトライナのScene Collectionを右クリックしてNew Collectionを選択し、trackball caseにします。
特別感を出すために、trackball caseコレクションを右クリックして、好きな色を選択します。
オブジェクトをまとめるためのオブジェクトを用意します。
箱や球などでもいいですが、平面(Place)を作成します。
オブジェクト名をtrackball caseにします。
作成したオブジェクトの形状は使用しないので、TabキーでEditモードに入り、Aキーで全選択し、Xキーで頂点の削除を行った後にTabキーを押してObjectモードに戻ります。
この作業を行うと、頂点数の表示が0になります。
アウトライナでtrackball caseコレクション以外のコレクションを非表示にします。
Booleanモディファイアを作成し、Realtimeボタン(ディスプレイの見た目のアイコン)をOFFにします。
これがONのままだと処理が重たくなります。パソコンのスペックに自信がある方はONのままでも問題ないかもしれません。
BooleanモードをUnionに、Operand TypeをCollectionに、Collectionをholder partsに設定します。
2つ目のBooleanモディファイアを作成し、RealtimeをOFF、Unionモード、OperandTypeをCollection、Collectionをcensor cover partsに設定します。
3つ目のBooleanモディファイアを作成し、RealtimeをOFF、Unionモード、OperandTypeをCollection、Collectionをfoot partsに設定します。
4つ目のBooleanモディファイアを作成し、RealtimeをOFF、Differenceモード、OperandTypeをCollection、Collectionをcensor cover diffsに設定します。
5つ目のBooleanモディファイアを作成し、RealtimeをOFF、Differenceモード、OperandTypeをCollection、Collectionをfoot diffsに設定します。
6つ目のBooleanモディファイアを作成し、RealtimeをOFF、Differenceモード、OperandTypeをObject、Objectをholder innerに設定します。
7つ目のBooleanモディファイアを作成し、RealtimeをOFF、Unionモード、OperandTypeをCollection、Collectionをbearing supportsに設定します。
8つ目のBooleanモディファイアを作成し、RealtimeをOFF、Differenceモード、OperandTypeをCollection、Collectionをbearing diffsに設定します。
8つのBooleanモディファイアを作成し設定が終わったら、すべてのRealtimeボタンをONにして有効化していきます。
このときPCの処理負荷が上がり数秒~十数秒かかることがありますが、焦らず待ちましょう。
すべてのRealtimeボタンをONにしたらトラックボールケースのモデルデータの完成です。
STLファイルのエクスポート
3Dプリンターで出力(印刷)するために、作成したオブジェクトモデルをSTLファイルとして出力します。
ファイルに出力したいオブジェクトを選択したあと、ウィンドウ上部にあるメインメニューから、File → Export → STL (.stl)を選択します。
出力ウィンドウの右側にあるSelection Onlyにチェックを入れ、ファイル名を決めたらExport STLボタンを押します。
あとはお手持ちの3Dプリンター用のスライサーソフトでSTLファイルを開き、印刷すればOKです。
3Dプリント・確認
完成したらお手持ちの3Dプリンターで出力してみましょう。
以下が簡単なチェック項目です。
- センサー部品がケース内にセットできる。
- トラックボールを適度な力で入れることが出来る。
- トラックボールを適度な力で取り出すことができる。
- トラックボールを出し入れする際にケースが割れたりしない。
- 2mmセラミック球が穴に強く押し込むだけで入る。
- 逆さにしても2mmセラミック球が落ちてこない。
- Keyball本体に取り付ける際に問題なくネジ止め出来る。(強く締めすぎるとネジ穴がダメになるので注意)
- トラックボールを操作したときに、どこにも干渉していない。
- トラックボールケースがキーボード本体やキーキャップに干渉していない。
問題点がなければひとまず完成です。
問題が見つかったら修正を試みてみましょう。
(記事に不備があった場合は教えていただけるとありがたいです🙏)
修正・調整を行う場合
3Dモデルを印刷すると、新たな問題点に気づくことがあります。
そのような場合はモデルデータの修正や調整を行いますが、そのまま作業を行うとオブジェクトを統合したtrackball caseオブジェクトに登録したBooleanモディファイアの再計算が入ってしまい、動作が遅すぎてまともに作業が出来なくなります。
そのような場合はアウトライナのコレクションの右側に表示されているチェックボックスをOFFにすると、非表示になるだけでなく再計算も行われなくなるので作業がスムーズになります。
ここではトラックボールケースの下に穴を開け忘れたので、例としてそれをやっていきます。
まずはコレクションを無効化します。
次に穴をあけるための柱を作成しますが、専用のコレクションを用意するのも面倒なのでcensor cover diffsコレクションを間借りします。
censor coverコレクションを表示状態にして、censor cover diffsを選択します。
円柱を作成し、半径5mm、高さ10mm、Z座標値を-15mmにします。
オブジェクト名をlower holeにします。
censor coverコレクションの表示をOFFにして、trackball caseコレクションを有効化すると、無事に穴があいてるのが確認できます。
終わりに
トラックボールケースを作成してみる説明は以上となります。
作業行程は長いですが操作は難しくないと思うので、自分だけのカスタムKeyballを目指している方は作ってみてください。
また、間違っているところなどあればコメントもしくはX(Twitter)の@kepeooまでお知らせいただければ幸いです。