ドナドナされるプログラマのメモ

Windows用アプリのプログラミングメモ

平行ではない、かつ交わらない線を滑らかに繋げる簡易的な方法

f:id:donadonasan:20180819130600p:plain

モデリングをしていると、平行ではない、かつ交わらない(つまり、ねじれの位置にある)2本の線をなめらかにつなげる曲線を描きたくなる。たとえば、柔らかいケーブルを2点間でつなげる場合だ。検索の仕方が下手なのか、どうやればいいのか解説しているページがなかったので独自にやり方を考えてみた。

f:id:donadonasan:20180819131444p:plain

 

滑らかに繋げる の定義

「滑らかに繋げる」の条件を定義する。円弧と直線が滑らかにつながる条件は、円弧のもととなる円と直線が接すること。これを描き方で言い換えると、「円弧の中心点が直線の端部から円弧の半径の距離にいること」となる。

2本の平行な直線を滑らかに繋げる場合

2本の平行な直線を滑らかにつなげたいならば両者の中間に円弧の中心を置き、半円を描いてつなげれば、少なくとも滑らかにはつながる。

2本の交わる直線を滑らかに繋げる場合

f:id:donadonasan:20180819133343p:plain

平行ではないが延長すると交わる直線の場合は、以下の手順で滑らかに繋げることができる。

1. 直線を延長し、交点を見つける。

f:id:donadonasan:20180819135453p:plain

2. 交点を中心とした円を描き、直線と交点までの距離を確認する。

f:id:donadonasan:20180819135646p:plain

3. 等距離でない場合は、遠い方を延長して等距離にする。

f:id:donadonasan:20180819135904p:plain

4. 垂直二等分線を描くため、両端を結ぶ直線を描く。(円は邪魔なので消しました)

f:id:donadonasan:20180819140045p:plain

5. 交点から直線の中点へと線を描く(これが垂直二等分線)。円弧の中心はこの直線上にある。必要に応じて延長する。

f:id:donadonasan:20180819140423p:plain

f:id:donadonasan:20180819140525p:plain

5. 直先端部と垂直な直線が垂直二等分線と交わる場所が、円弧の中心となる。

f:id:donadonasan:20180819140848p:plain

ちなみに、SketchUp!だと2点円弧を選べば上記4, 5は不要である。

f:id:donadonasan:20180819133637p:plain

2本の平行ではなく交わらない(ねじれの位置にある)直線を滑らかに結ぶ場合

 本題である。この条件では、両方の直線に対し同時に直角となる円弧は存在しない。多分。何しろ、円弧を描くには両直線が乗っている平面が必要なのだが、これが描けないのだ。そこで、2個の円弧で繋げることにする。

1. まず、両直線を繋げる。

f:id:donadonasan:20180819142436p:plain

2. 一方の直線と、今作った直線を使って直角三角形を作る。これが1つ目の円弧が乗る仮の平面となる。

f:id:donadonasan:20180819142406p:plain

直角三角形の直角な直線同士に接するように円弧を描く。

f:id:donadonasan:20180819142647p:plain

あとで回転しやすくするため、円弧及び一部平面以外を消す。このとき、円弧につながる直角三角形の辺の一部を残したほうが、後の作業がやりやすくなる。

f:id:donadonasan:20180819143741p:plain

試しに先ほど残した辺の一部を延長すると、直線端部と交わっていることがわかる(そこに線を伸ばしたんだから当たり前であるが)。

f:id:donadonasan:20180819144022p:plain

ここまでくれば、「2本の交わる直線を滑らかに繋げる」と同じ手法が使える。ただし、このままでは半径0の円弧でつなぐことになるので、先程作った円弧を好みに応じて角度を変える。円弧を作ったときの直線を中心に回転させれば、円弧と直線の滑らかな接続を維持できる。

f:id:donadonasan:20180819144337p:plain

下記は結果の一例。

f:id:donadonasan:20180819144746p:plain

f:id:donadonasan:20180819145143p:plain

 

ブレーキカー更新

 今日は、各コンポーネント内にあったゴミデータを掃除した。

ブレーキカーについては、車高の変更と機器の装着をした。ちなみに、黄色いのはメタローチという装置だそうだ。聴いたこと無いものだったので調べたら、メタル+アプローチの合成語で昔日立が使っていた商標の模様。要するに金属の接近を検知する近接センサである。こいつで貨車の車輪が近づいたことを検知するみたい。

今日はここまで。明日はブレーキの詳細を作る予定。

f:id:donadonasan:20180816235156p:plain

ワム80000 モデルあらためて完

エッジ消去処理や、変なポリゴンの修正をした。なんだかんだで20時間ぐらいかけてるな、このモデル・・・。

f:id:donadonasan:20180813225858p:plain

ワム80000 シーマ(仮)さん作成pmxをSketchUp用に変換

試しに、ぴぴっとレンダリング

f:id:donadonasan:20180813230333p:plain

よし、色合いも大丈夫そうだし、今度こそ完成で。

ワム80000 とりあえず完

シーマ(仮)さんがMMD用に作成したワム80000、ようやくSketchUp!用に変換できた。スムージングの情報やテクスチャ情報が消えてしまったので、それらは手動で再設定。なんだかんだで1日作業になってしまった。

f:id:donadonasan:20180812231249p:plain

ワム80000 シーマ(仮)さん作成pmxをSketchUp用に変換

本当はプレス加工で作られた凹凸は輪郭なしにしたかったんだけど、SketchUp!のレンダラだとこんな感じになるのよね・・・凹凸がわからなくなる。なので、輪郭ありでとりあえずやってる。

f:id:donadonasan:20180812231901p:plain

エッジのソフトニングを効かせた場合

っと・・・ふと思いついてひと手間かけたら、問題ないのができた。エッジ部分の線が出ないようにすることでほぼ理想通りに。これならいいか。頑張って作り直そう。

f:id:donadonasan:20180812232418p:plain

ソフトエッジ+法線のスムージングなし





ワム80000とL4カーを組み合わせてみた

シーマ(仮)さんが公開しているワム80000をL4カーと組み合わせてみた。

公開されているデータはpmx(MMD用)のため、そのままではBlenderSketchUp!には取り込めない。そこで、mmd toolsをBlenderに導入した。

github.com

アドオンの一般的なインストール方法は、例えば下記にある。

qiita.com

シーマ(仮)さんのモデルをBlenderに取り込む場合は、インポート時にサイズを0.08倍にすればちょうどよいようだ。

f:id:donadonasan:20180811135437p:plain

鉄道関係pmdのblenderインポート時スケーリング設定

あとは、BlenderからSketchUp!にエクスポートするだけ。今回はColladaの.dae形式でエクスポートしてみた。これをSketchUp!に取り込んで、L4カーと組み合わせたのがこちら。貨車の下にいる青く薄っぺらいのがプッシャカー。こんなのがあと4両・・・。

f:id:donadonasan:20180811140842p:plain

プッシャカー+ワム80000



Blenderいったん終了

SketchUp!で作ったものを後々Blenderに取り込む場合の注意事項がだいぶ見えてきたので、本日からSketchUp!に戻る。

気づいたポイントは・・・

なおプッシャカーにはこんなかんじにボーンをつけた。

f:id:donadonasan:20180810211417p:plain

プッシャカーのボーン