[3DCoat] 乗合馬車(Omnibus)のモデリング (CurveとSymmetry)

  • by

乗合馬車(Omnibus)の馬車のモデリングについて、いくつか順番に追いかけていきます。
3DCoat 2021.36で確認しました。
しばらくはモデリングルームでの作業になります。

今回はCurve機能とSymmerty(対称)機能を使用して、いくつか馬車の部品を作っていきます。

前回行ったプリミティブからのMeshモデリングでは難しい部分として、チューブ形状があります。
以下の画像の赤い部分が該当箇所です。

この部分はCurve(曲線)を配置した後、半径を与えたチューブ状にしています。

後部の底面のメッシュを作成

現在は本体の形状ができた状態です。
これに対して、後部の下に薄い板を与えます。
以下の画像はまだ確定する(Applyボタンを押す)前です。
「3D Primitives」で直方体形状を配置しています。

確定前に「Poly Groups」パネルで新しいMeshを追加します。
「Back Base」と名前変更しました。
本体部は「body」と名前を付けました。

このPoly Groupsパネルの左下のアイコンをクリックするとMeshを新規追加できます。

プリミティブを追加するときの注意点

Poly Groupsパネルで選択されたMeshに対して、3D PrimitivesのApplyで形状が追加されます。

Applyボタンの右のポップアップメニューで「Add」を選択している場合(デフォルト)は、
ブーリアンとして既存のMeshと重なり合う部分が融合された状態で形状が追加されます。
もし、追加するプリミティブと既存Meshで重なりがある場合は既存メッシュで面分割が行われることになります。
なお、この既存MeshはPoly Groupsパネル内のすべてのMeshが対象です。

別のグループのMeshであっても関係なくブーリアンされます。

これを回避する(ブーリアンを行わずに単純にMeshを追加したい)場合は、
「Split」を選択してからApplyボタンを押します。

なお、3DCoat 2021.31あたりでは、3D Primitivesでプリミティブを追加する場合、
「Add」でブーリアンが走るときにジオメトリとして見えないMeshが追加されるような動きをしているように見えます。
(いずれかのバージョンで修正されているかもですが)
そのため、知らないうちにファイルサイズが肥大化する、
プリミティブを追加したら処理時間がかかる、
プリミティブを追加したらクラッシュ、
という現象が発生したことがありました。
安定するまでは、Meshモデリングでのブーリアンは使わないようにするほうがいいかもしれません。
スカルプト時のブーリアンは問題ありませんでした。

3DCoat 2021.36にて、「3D Primitives」でのメッシュの追加がうまくできない場合がありました(不都合かも)。
ギズモで移動させた際に、移動がぎこちなくなったり移動できなくなったりした場合、
高確率で追加がうまくできない気がしています。
カメラをぐりぐりしたりしてるとこの挙動が治まる?ようではありました。

馬車の本体には以下のように直方体を「Split」として追加しました。

角のエッジをSelectで選択し、Bevelを使って丸めておきます。

Curveの使用

本体部の後ろに取っ手やはしごなどを追加するため、Curveを使用しました。
テンキーの[2][5]を押して、正面からの平行投影にしました。
「Curves/Strokes」を選択すると、Curveを配置するモードになります。

Curveはすべてこのモードで作業します。
Meshとは別の要素(Meshを生成するためのアタリ)になります。
ツールバーでは折れ線のアイコンが選択されていることを確認し、取っ手の形になるように4点をクリック。
[ESC]キーを押すことでCurveを終えます。

[5]キーを押して透視投影にして視点を変えると以下のようになってました。

Curveはデフォルトでは、既存の面が存在する場合はその面上にスナップします。
理想としてはXY平面上に投影されていてほしいです。
この解決策としては、メインメニューの「Curves」-「Snap to Surface」チェックボックスをOffにしておく(Offでもスナップされる場合がある?)。

確実なのは、Curveを配置後に「Curves tree」パネルで対象Curveを右クリック。
「Put on plane」-「Center mass + XY - Plane」を選択します。

これで、配置したCurveのZ値の中心でXY面上に投影されます。
以下のようになりました。

角を丸めます。
ただ、この流れがベストかは分かりません。もっとシンプルな方法がある気もします。
テンキーの[2][5]を押して、正面からの平行投影にします。
ズームすると角ばってます。

「Curves/Strokes」で
ツールバーの左から2つめのポイントを編集するアイコンを選択します。

Curve上をダブルクリックすると、そこにポイントが追加されます。
角のポイントの両端に2か所ポイントを追加しました。

角のポイントを選択して、[Del]キーを押して削除します。

両端の2つのポイントは曲線のハンドルがあらぶった状態になります。
ポイントを選択し、ツールバーよりハンドルを出すアイコンを選択します。

これより、この曲線はベジェで制御できるのが分かります。

ツールバーでハンドルを調整するアイコンが選択されているのを確認し、緑色のハンドルをドラッグして調整します。

3DCoat 2021のはじめの方のバージョンでは、ツールバーでポイント位置を調整するアイコンとハンドルを調整するアイコンの両方がOnの場合は、
正しく動作しませんでした(片方をOffにする必要があった)。

2021.36では、両方がOnの場合、ハンドルおよびポイントの両方をドラッグで調整できます。

同様にCurveの下側も丸めました。

断面のCurveを作成

Curveを使ったチューブ状の形状を作成する場合、断面形状をCurveで用意します。
今回は断面は円になります。
テンキーの[7][5]を押して、上面からの平行投影にします。
以下の赤丸の位置に、取っ手のCurveが配置されています。

なお、断面はCurveの先頭または末尾になくても判別されるようです。

「Curves/Strokes」で
ツールバーの円のアイコンを選択します。

ビュー上でドラッグすることで円が配置されます。
サイズの数値指定を行う場合は、Tool optionsでWidth/Heightに直径を指定します。

ビューではこのような感じで配置しています。

[5]キーを押して透視投影にし、視点を変えると以下の感じです。

Curves treeパネルでは以下のように配置されています。

"Curve"が取っ手の中心となる曲線、"Ellipse"が断面の曲線となります。
このCurveはMeshとは別の存在である点に注意してください。
Curveだけでは3D形状の実体があるジオメトリにはなりません。

CurveをMesh化する

「Surface Swept」を選択します。
これは、中心となるCurveと断面となるCurveの2つを指定してチューブ状のメッシュを作成する機能です。

「Guide Curve」に中心となるCurveを指定、「Profile Curve」に断面となるCurveを指定します。

「U Spans」が断面側の分割レベル(分割数ではないようです、2の累乗?)、
「V Spans」が進行方向の分割数、となります。

「V Spans」をいくつか調整してみました。

距離で等間隔で分割されるからか、角の曲がる部分で滑らかにという調整は少し難しいです。
「V Spans」を80にしました。

ただ、必要のない分割も多いので後で少し最適化しましょう。

Poly Groupsパネルで追加したいMeshを選択し、Tool Optionsの「Apply Mesh」ボタンを押します。
何も面がないMeshに対して新しくMeshを追加することにします。

これで2つのCurveからMeshが生成されました。

作業で使用したCurveは不要になったため、Curves treeパネルで削除しておきました。
対象要素を選択してゴミ箱アイコンをクリックすると削除できます。

Meshを別のグループに分離

作成した取っ手部の縦方向は分割数が多いため、面を削除します。
そのままでもいいのですが、リアルタイムに出力する目的もあるためある程度最適化されていたほうがいいため。

Poly Groupsパネルでbody形状を非表示にします。
目玉のアイコンをクリックすると表示/非表示を切り替えることができます。

おっと、間違えて馬車の後部の面に取っ手のMeshを追加してしまっていました。
では、取っ手を別のメッシュに分離してしまいましょう。

陸続きの面を選択

「Select」を選択し、ツールバーで面選択モードを選択。
取っ手部の面にマウスカーソルを移動してダブルクリックします。

選択時のダブルクリック動作は、"ある程度"陸続きになっている面をまとめて選択することができます。
ただ、完全に島ごとの選択というわけではないようで、隣り合う面が鋭角な場合はそこで途切れることもありました。
その場合は「Expand」を何回か実行すると選択が回り込みます。

選択を分離

右クリックするとポップアップメニューが表示されるため「Separate」を選択します。

この段階でPoly Groupsパネルでは"BackBase_copy1"というのが生成されました。
ここに、選択した面がMeshとして分離されます。
Tool Optionsが表示されていますが何もしなくてOKです。

この取っ手部を"handle"と名前変更し、他のMeshを非表示にしました。

不要なエッジ(面)を削除

取っ手のMeshだけを表示した状態にします。
現状は、Poly GroupsパネルでMeshを分けたとしても、Select操作はすべてのMeshに対して選択操作が行われます。
不用意に選択されて、気づかない間に関係ない部分が変形していたということもよく起こっていたため、
編集するMesh以外は一時的に非表示にしておいたほうが、安全にモデリングできるかと思います。

テンキーの[2][5]を押して正面の平行投影にします。
「Select」を選択し、エッジ選択モードにします。
1つのエッジをクリックして選択、その隣のエッジを[Shift]キーを押しながらダブルクリックすると、ぐるっと選択されます。

[Del]キーを押すと、選択されたエッジが削除されて面が削減されました。
この要領で、不要なエッジを選択して削除します。

不要な頂点を削除

手間がかかるので「Select/Transform」で頂点選択モードにし、まとめて矩形選択([E]キーを押して「Ignore Back Faces」チェックボックスがOffであるのを確認して行うようにしてください)。
ギズモを使ってY軸方向に縮小。
ドラッグ中に[Space]キーを押して拡大率0を指定します。
これで同一のY位置に頂点がまとめられます。

この段階ではまだ頂点は重複した状態で存在します。
「Weld Vertices」を選択し、Tool Optionsで「Weld by Dist Min」チェックボックスをOn。
「Weld Distance」で1.0と指定しました。単位はmmです。
指定の距離以内の頂点は結合することになります。
OKボタンを押します。

これは近接する頂点を結合してまとめる(不要な頂点を削除する)機能です。
不要になったエッジ/面も削除されます。
選択された頂点の数は、ウィンドウ下のステータスバー部で確認できます。

以下のようになりました。

取っ手の位置を調整

非表示にしたMeshを全部表示します。

取っ手の位置を少し調整します。

Poly GroupsパネルでhandleのMeshを選択し、下にある左から3つめのアイコンを選択します。
これで、選択Meshのすべての面が選択された状態になります。
「Select/Transform」を選択してギズモを表示、取っ手の位置を調整しました。

以下のようになりました。

Symmetry (対称)

取っ手をZ軸方向の反対側に複製します。
この操作は「Symmetry」を使い、その後実体化しています。

メインメニューの「Symmetry」-「Symmetry」を選択。
Symmetryパネルが表示されます。

Symmetryパネルの「Enable Symmetry」「Show Symmetry Plane」チェックボックスをOn、
「Z - Axis」チェックボックスをOnにすると、
Z軸方向の対称表示になりました。

この状態はまだ実体がありません。また、すべてのMeshが仮想的に対称表示となっている点に注意してください。
次に、このSymmetryの状態を実体化します。
Poly Groupsパネルで下の左から5つめのアイコンを選択すると、対象形状が反転コピーされます。

Symmetryパネルの「Enable Symmetry」をOffにして、取っ手部の反転コピーができているのを確認します。
以下のようになりました。

モデリングではSymmetryは基本的にOffにしておき、必要なときにOnにする、というのが便利かもしれません。
このSymmetryと実体化は、モデリングでは頻繁に使うことになると思います。

Symmetry機能は3DCoat 2021.36では安定しているようですが、2021の初期のバージョンでは不安定なところがありました。
念のため、3DCoat 2021は常に最新バージョンにしておく方がよさそうです。

今回は長くなったのでここまでです。
Curveを使ったモデリングとSymmetryの説明でした。
次回、もう少しモデリングの機能を補足する予定です。