ニッチなblender手記

世の中には自分に似た人が3人いるとされています。その人達へと情報共有するために主にblenderの記事を書いていきます。

loose usage about hardOps (install, SSharp, CSharp)

注意

現在進行形で記事更新中

この記事はまだ調査中の内容を含んでいるが、モチベと記憶のキューから飛び出さない内に現在までで調査した内容をメモとして残す。

概要

一言で言えば ハードサーフェイスモデリングでよく使う処理を簡略化してくれる アドオン。

そのため、ブーリアンモデリング処理やエッジ処理に特化している。
同じ作者が公開している boxcutter とは機能を相互補完するが、それぞれ単品でも操作に不自由はない。

とはいうものの、二つセットでバンドル販売されているので資金的に余裕があるなら買って損はしない。 少なくとも boxcutterの購入によって、本アドオンの CSharp 機能の利便性はかなり変わる。

注意

これは hardops の全機能を網羅的に紹介するものではなく、基本的な操作方法をその設定内容のみ記載している。
また、ブーリアンモデリングやハードサーフェイスモデリングの手法についても記載はしない。

もしこの記事を見てより高度な操作を覚えたいという場合は下記の公式リンクや紹介動画を参照することをお勧めする。

利用バージョン

0.9.86.17 (MercuryX)

販売サイト

Gumroad - Hard Ops / Boxcutter Ultimate Bundle (2.8)

Blender Market - Hard Ops / Boxcutter Ultimate Bundle

HardOps と BoxCutterのバンドル販売。個別に購入するより安く購入できる

Gumroad - HardOps

Blender Market - HardOps

参照

公式ドキュメント

youtube - HOPSCutter

利点

  • アドオンとしての歴史が長いため、基本的な操作が非常に安定している
  • ブーリアンモデリングとハードサーフェイスモデリングに必要な手続きをほぼ網羅しているため、細々としたアドオンを入れる必要がなくなる。
  • アップデートペースが早いため、最新のblender(β版にさえ)対応する
  • boolやエッジ関係の処理を一括でやってくれるので、モデリングが捗る

欠点

  • オーガニックなモデリングのアドオンとしては向かない
  • 開発者によって改良が進んでいるため、機能の追加や修正が頻繁に行われている。一見欠点のように思えないかもしれないが、頻繁なアップデートは追加・修正・削除される操作も頻繁であるためある日突然操作が変わる可能性が大きくなる
  • もはやアドオンというよりはプラグインとかblenderのフォーク版みたいな操作性となっていて、バニラ状態のblenderから大きくワークフローが変わる
  • 色んな操作をワンステップにまとめているため、本アドオンを使い慣れるとアドオンが入っていない環境で作業する際には混乱するかもしれない

その他

ツールの内容とか説明そのものではないが、 公式ドキュメント - Boolean Tipsブーリアンモデリングのコツを記載しているので一読の価値がある。

基本操作

起動方法

f:id:r9aArrowhead:20201014141551p:plain

f:id:r9aArrowhead:20201014141556p:plain

f:id:r9aArrowhead:20201014141601p:plain

f:id:r9aArrowhead:20201014141606p:plain

f:id:r9aArrowhead:20201014141611p:plain

f:id:r9aArrowhead:20201014141617p:plain

f:id:r9aArrowhead:20201014141622p:plain

f:id:r9aArrowhead:20201014141628p:plain

f:id:r9aArrowhead:20201014141633p:plain

Sharpening

hardops のシャープ処理は SSharp CSharp に大別できる。

blender固有の用語ではないので先にこれらの違いを書くと、それぞれが以下の役割となる。

  • Sharp : shortened Sharp。お手軽シャープ処理。Shading のシャープ処理。だから S(hading) Sharp
  • CSharp: コーナーのシャープ処理。だから C(orner) Sharp

SSharp と CSharp の大まかな処理の差異

双方の処理の説明が長くなるので、先に両者の差異を記載する。

共通の注意事項

どちらも処理実行後は少なからずメッシュが破壊される

これは hardops の Sharpennig がオブジェクトに対してではなく、メッシュに対して実行する仕様となっているため。 完全な非破壊作業とはならないので、特にブーリアンモデリングで作業している時は実行タイミングに注意すること。

シーケンス

以下の設定は SSharp CSharp 共に共通の設定となっており、処理内容も共通している。

  • Additive Mode
  • Sharpness
  • Global
  • Auto Smooth Angle

上記の共通処理については 本家に処理シーケンスが記載されているので、まずは原文を引用する。

  1. sharpness
  2. edge angle to witch sharpening is applied - default 30
  3. auto smooth angle
  4. value for autosmoouth angle for selected object - default
  5. additive mode
  6. ON - apply defined sharpness and keeps other already existing sharp edges
  7. OFF - clears all sharp edges before applying its own sharpness
  8. global
  9. ON - ensures the options set here will be repeated next time
  10. OFF - uncheck this to use these setting only once this instance.

日本語的には以下のようになる。なお、固有名称のそれぞれの挙動については後述。

  1. SSharp or CSharp実行
    1. それぞれの処理については、後述
  2. エッジ角度がプロパティの Sharpness に設定している角度以上の場合は エッジ立てるための設定を追加する
  3. オートスムージング実行
    1. Auto Smooting Angle で設定している値でオートスムーズを設定する
  4. additiveオプションの実行
    1. ONの場合、処理を実行する前にオブジェクトへ設定していたエッジウェイト等の情報を残したままにして、ウェイト設定を追加する。
    2. OFFの場合、処理実行前に設定していたエッジウェイト等の情報を削除し、ウェイト設定を追加する。
  5. globalオプションの実行
    1. ONの場合、 今回設定した Auto Smooth Angle を次回以降も引き継いで利用する
      1. より正確には、 Auto Smooth Angle のグローバル設定を変更する
    2. OFFの場合、今回の設定の内容は引き継がずに処理する
      1. Auto Smooth Angle のグローバル設定を変更しない

SSharp

シーケンス

SSharp のシーケンスも 本家 にて公開されている。

  • set shading to smooth from flat
  • enables autosmooth / sets angle to 60
  • marks edges as crease / sharp / seam / bevel weight based off of sharp parameter.

日本語的には以下のようになる。

  • シェーディングを smooth へ変更する
  • autosmooth -> Angle を hardops の autosmooth で設定している値にする
  • パラメータ(Sharpness)に合わせて crease / sharp / seam / bevel weight を実行する
操作

f:id:r9aArrowhead:20201014141227p:plain

f:id:r9aArrowhead:20201014141232p:plain

f:id:r9aArrowhead:20201014141237p:plain

f:id:r9aArrowhead:20201014141242p:plain

f:id:r9aArrowhead:20201014141247p:plain

f:id:r9aArrowhead:20201014141252p:plain

f:id:r9aArrowhead:20201014141258p:plain

f:id:r9aArrowhead:20201014141303p:plain

f:id:r9aArrowhead:20201014141309p:plain

f:id:r9aArrowhead:20201014141314p:plain

f:id:r9aArrowhead:20201014141319p:plain

f:id:r9aArrowhead:20201014141325p:plain

f:id:r9aArrowhead:20201014141330p:plain

f:id:r9aArrowhead:20201014141335p:plain

f:id:r9aArrowhead:20201014141340p:plain

f:id:r9aArrowhead:20201014141345p:plain

f:id:r9aArrowhead:20201014141350p:plain

f:id:r9aArrowhead:20201014141355p:plain

f:id:r9aArrowhead:20201014141400p:plain

f:id:r9aArrowhead:20201014141406p:plain

f:id:r9aArrowhead:20201014141412p:plain

プロパティ

CSharp

基本的な処置はSSharpと変わらないが、 処理の大前提としてboolモディファイアを使っているオブジェクトが対象 な点に注意。
つまりは、ブーリアンモデリングをしているオブジェクトに対して実行する機能。

シーケンス

CSharp のシーケンスも 本家 にて公開されている。
CSharp の処理は本家の画像がかなり分かりやすいのでそっちを参照した方がいい。

  • set shading to smooth from flat
  • enables autosmooth / sets angle to 60
  • marks edges as crease / sharp / seam / bevel weight based off of sharp parameter.
  • applies boolean modifiers and other non hard surface modifiers
  • adds a bevel modifier (segements: 3 / profile 0.7 / weight not angle)
  • sets menu behavior to be for objects that are bevelled via changing sstaus

f:id:r9aArrowhead:20201014141417p:plain

日本語的には以下のようになる。

  • シェーディングを smooth へ変更する
  • autosmooth -> Angle: を hardops のautosmoothで設定している値にする
  • パラメータ(Sharpness)に合わせて crease / sharp / seam / bevel weight を実行する
  • 選択したオブジェクトに boolean モディファイアを適用 (Apply) して、bool処理を確定する
    • ここでメッシュが破壊される点に注意
  • bevel モディファイアを segements: 3 / profile 0.7 / weight not angle で適用する
    • bevel モディファイアは設定で適用するかどうかを変更可能
  • sstaus を利用して CSharp を実行したオブジェクトにメニューをセットする
    • Csharpを実行した時に左下にプロパティを表示するということ
操作

f:id:r9aArrowhead:20201014140739p:plain

f:id:r9aArrowhead:20201014140744p:plain

f:id:r9aArrowhead:20201014140749p:plain

f:id:r9aArrowhead:20201014140753p:plain

f:id:r9aArrowhead:20201014140800p:plain

f:id:r9aArrowhead:20201014140805p:plain

f:id:r9aArrowhead:20201014140811p:plain

f:id:r9aArrowhead:20201014140816p:plain

f:id:r9aArrowhead:20201014140822p:plain

f:id:r9aArrowhead:20201014140828p:plain

f:id:r9aArrowhead:20201014140833p:plain

f:id:r9aArrowhead:20201014140839p:plain

f:id:r9aArrowhead:20201014140845p:plain

f:id:r9aArrowhead:20201014140852p:plain

f:id:r9aArrowhead:20201014140858p:plain

プロパティ

仕組みが同じなので Sharpenning Parameters の項目は割愛し CSharp 特有の処理のみ記載する。

Sstatus

hardops の用語の一つで、 hardOps が保持している Sharpening を実行する時にエッジウェイト等の設定、 詳しくは 公式ドキュメント - sstatus 参照。
Sstatus の全体的な内容は helper や ツールバー

f:id:r9aArrowhead:20201014141417p:plain

General Options

Workflow

https://hardops-manual.readthedocs.io/en/latest/faq/#how-do-you-use-sorting-the-sort-tickbox-doesnt-do-anything

Sharp Options

このグループに関しては図示するまでもなく公式が仕様をほぼそのまま載せている。
以下 公式ドキュメント からの引用

Sharp options pertain to markings. 
On edges meeting the "sharpness" threshold, the following edge markings will be performed. 
- crease (crease at 1 to resist sub-d) - seam (easy region selection with L in face mode) - bweight (bevel weighted workflows where bevel is able to be controlled) - sharp (shading override for sharp shading)

日本語的には以下のような感じになる。

  • Sharpening 処理実行時に Sharpness で設定している角度以上のエッジは、シャープ化する対象とみなす
  • Apply Crease は Sub-D向けにエッジを edge crease = 1.0 にする
  • Apply Seam は L (= Select Link) しやすいようにエッジを Mark Seam する
  • Apply bweight は ベベルを調整できるようにエッジを Bevel Weight = 1.0 にする
  • Apply Sharp はシャープな見た目にするために Auto Smooth を上書きする

要するに、各項目でエッジを立てるためのプロパティ on/off を切り替える

f:id:r9aArrowhead:20201014141422p:plain

f:id:r9aArrowhead:20201014141427p:plain

f:id:r9aArrowhead:20201014141434p:plain

f:id:r9aArrowhead:20201014141442p:plain

f:id:r9aArrowhead:20201014141448p:plain

f:id:r9aArrowhead:20201014141456p:plain

f:id:r9aArrowhead:20201014141503p:plain

f:id:r9aArrowhead:20201014141510p:plain

f:id:r9aArrowhead:20201014141515p:plain

hops sort

モディファイアはスタックの順番によってオブジェクトの結果が変わってくる。
hardOps は操作によってモディファイアを追加する際、モディファイアのソートを実行する機能が存在する。

f:id:r9aArrowhead:20201014141522p:plain

f:id:r9aArrowhead:20201014141527p:plain

f:id:r9aArrowhead:20201014141534p:plain

sort Last

hops sort の右側にある を押すと表示する機能。
名前の通り、 ソート処理が発生した時に、選択しているモディファイアをスタックの最後へソートする

f:id:r9aArrowhead:20201014141540p:plain

f:id:r9aArrowhead:20201014141546p:plain

ソートルール

公式ドキュメント によると、ソート対象モディファイアはそれぞれ以下のルールに従ってソートしている。

  • sort bevel modifiers - move bevel mods to bottom of stack
    • bevel モディファイアはスタックの最下段へ配置する
  • non vgroup / only vert mode bevel is left unchanged
    • 頂点グループベベルの Only Vertices がない場合はベベル(の順序)を変更しない
  • sort array - ensures array is last so it shows booleans in all subparts
    • arrayがサブパーツ全ての boolean を表示するように確保する
  • sort mirror - using modifier mirror at the end of the stack will mirror all cuts
    • 全てのカットをミラーリングするために一番最後のスタックでmirrorを使う
  • sort solidify - keeps solidify later in the stack. Off by defaults. Only used in certain situations.
    • 特定の状況でのみ、スタックの後半を維持し続ける
  • sort weighted normal - keeps weighted normal at the end of the stack (maintains shading)
    • スタックの最後でノーマルウェイトを維持する
  • sort simple deform - keeps simple deform at the end of the stack before the rest.
    • 残りのスタックの直前の位置を保持する
  • sort triangulate - keeps triangulate after boolean to allow for iterative working on an exportable mesh
  • sort decimate - moves decimate at the end of the stack (useful for rare situations)
    • スタックの最後へ移動する
  • recommended off for smart shapes and situations where the mod order is crucial.
    • モディファイアの順序が形状に影響を及ぼす場合はoffにすることを推奨する
  • sort remesh - ensures remesh is kept at the end of the stack
    • スタックの最後を保持する
  • sort cast - ensures cast is not placed after the boolean modifier
    • boolean モディファイアの後には配置されないようにする
    • しかし、 sortオプションの中に Cast モディファイアは存在しない
  • sort weld (2.82) - ensures weld is kept at the end of the modifier stack.
    • スタックの最後を保持する

うん、よくわからないね。

hops sort のテスト

テスト結果はこっちに移動しました。

minorblender.hatenablog.com

ソートルール(私家版まとめ)

テスト結果から、ソートルールは以下のようになる。

  1. HardOps を boolean を実行すると、booleanはモディファイアを一番最後へ追加する
  2. Sort Modifiers で ソートを Onにしたモディファイアは、 boolean モディファイアの後ろへ並べ替えられる。この時、ソート前の順序を基本的には維持する。
    1. 同一モディファイアのソートは1つだけがソートされる
  3. モディファイアに Cast モディファイアが存在した場合、 Sort Modifiers の On / Off に関わらずCast モディファイアは必ず boolean モディファイアの直前へ並び替えられる
  4. モディファイアに Weight Normal モディファイアが存在した場合、 Sort Modifiers の On / Off に関わらずWeight Normal モディファイアは必ずモディファイアの一番最後へ並び替えられる
    1. Weight Normal モディファイアに限り、 すべてのWeight Normal モディファイアが最後へ回される

うん、結構面倒な感じが・・・