測量屋のblender

blenderなどの技術メモ

【cloudcompare】ヒートマップ表示させる

 久しぶりの更新+忘却メモです。

表題の通りヒートマップ作成メモです。

色の付け方は2通りあります。

 

①単純にRGBで段彩表示

スカラー領域を設定

スケールバーが表示できるので、おすすめは②です。

どちらもZ軸上にヒートマップを作成する方法です。

 

①単純にRGBで段彩表示

点群を読み込み、点群を選択した状態で編集→色→段彩。

f:id:ultimate_seirogan:20200304143514j:plain

下記ポップアップが表示されるので、DefaultのままOK

f:id:ultimate_seirogan:20200304143852p:plain

f:id:ultimate_seirogan:20200304143934p:plain

低いところは青、高いところは赤で表示されます。以上です。



スカラー領域を設定

編集→平面→作成をクリックすると下記ポップアップが表示されるので、とりあえずすべてデフォルトの状態でOK。(スカラー表示させたい点群よりZ値を低く)

f:id:ultimate_seirogan:20200304144317p:plain

f:id:ultimate_seirogan:20200304144338p:plain

 

作成した平面と点群を両方選択(CTRLを押しながら選択)し、下記アイコンをクリック(点群/メッシュ距離の計算)すると下記ポップアップが表示されるのでCompute後にOK

f:id:ultimate_seirogan:20200304144744p:plain

f:id:ultimate_seirogan:20200304145052p:plain

先ほどと変わらないように見えますが、プロパティのColorsがScalar fieldに変わっています。

f:id:ultimate_seirogan:20200304145443p:plain

RGBの場合はそれ以上の設定はできませんが、Scalar fieldの場合は様々設定することができます。

f:id:ultimate_seirogan:20200304145614p:plain

○Scalar fieldのActiveのタブをクリックすると今まで作成したスカラー領域に変更することができます。

○Color ScaleのCurrentのタブをクリックするとカラーを変えることができます。その下のStepsは何段階で色を変化させていくか(2なら2色)Visibleにチェックを入れるとカラースケールが表示されます。

f:id:ultimate_seirogan:20200304150148p:plain

○SF display paramsの数値を変更すると、カラー表示の幅を変更することができます。

 

※番外編

デフォルトでスカラー領域を設定するとカラースケールのMaxとMinがそのモデルのZ値の最大値と最小値に設定されてしまいます。

きりの良い数値でカラースケールを置きたい場合は

①カラースケールの最小値に設定したいZ値の平面を作成

②カラースケールの最大値に設定したいZ値の平面を作成

③作成した2つの平面を【メッシュ状の点のサンプル】でポイントデータを作成(サンプリング数は1点でOK)

④【複数点群の統合】でスカラー表示させたい点群と、最小値最大値の2点を統合します。

⑤もう一度Z値が0の平面と【点群/メッシュ距離の計算】を行う(最大距離を最大値に設定したい値に変更する)

ただし余分なポイントを削除するとカラースケールの値が現在の点群データの最大値と最小値にもどってしまう。

【blenderショートカット】点・辺・面をXYZ軸で合わせる

 編集モードで頂点を揃えたい点・辺・面を選択して

【S】(拡大縮小ショートカット)→【Z】(合わせたい軸※Zの場合はZ軸)→【0】(拡大縮小の比率0にすることですべて同じ軸にそろう)→【ENTER】(確定)

f:id:ultimate_seirogan:20191024092105p:plain

 

【blenderモディファイアー】ブーリアン

 メッシュ同士がクロスしている部分を切り取ったり、穴を空けたりってよくつかいますよね?データを軽くする目的はもちろん、CADモデリングの場合だと決まった位置に決まった寸法で穴を空けることが多いと思います。

 そこで便利なモディファイアーブーリアンの出番です。今回はよくあるシチュエーションで成人男性の頭にパイプが刺さってしまった例で解説します。

f:id:ultimate_seirogan:20191023162205j:plain

 

【目次】

 

〇メッシュ同士をクロスさせる

 下記ワイヤーフレーム画像を見ていただくと男性の頭に円柱がクロスしているのがわかると思います。ターミネーターみたいで気持ち悪いですが、、、

f:id:ultimate_seirogan:20191023162712p:plain

 

〇 モディファイアーブーリアンを追加

・頭に穴をあけたい場合

 穴を空けたいメッシュを選択し、モディファイアーメニューからブーリアンを選択。演算方法を設定し、オブジェクトの項目でクロスしているオブジェクトを選択

f:id:ultimate_seirogan:20191023165113p:plain

 

演算項目解説

差分・・・選択したオブジェクトと接している部分に穴が開く。今回の場合これを選択

f:id:ultimate_seirogan:20191023165335p:plain

交差・・・選択したオブジェクトと接している部分だけ残る

f:id:ultimate_seirogan:20191023165633p:plain

統合・・・オブジェクト同士が統合される。その際、接している面は削除される。

f:id:ultimate_seirogan:20191023170051p:plain

 ブーリアンは適用をクリックするまではプレビュー状態になっています。メッシュを基に戻すのは大変なので適用前にモデルをコピーしておくかプロジェクトを別名で保存しておくのをお勧めします。

 

・パイプを男性のメッシュに沿って切断したい場合

 パイプのモデルにブーリアンのモディファイアーをつけて、後は上で説明した通りです。

 

f:id:ultimate_seirogan:20191023172007j:plain

f:id:ultimate_seirogan:20191023172018j:plain

f:id:ultimate_seirogan:20191023172027j:plain

以上です。

ブーリアンでメッシュをいじったので三角形が破綻していますね。必要に応じて修正しましょう

【blenderモディファイアー】シュリンクラップ

 高密度メッシュのリトポロジーや、2次元図面に3次元モデルから高さを与えたりすることのできる便利なモディファイアーです。

 まさに形状をラップで包み込むような操作が出来ます!

f:id:ultimate_seirogan:20191015131520p:plain

 

【目次】

 

〇準備

『用意するモデル』

 

・型を取るオリジナルモデル

 今回は縄文土器をオリジナルモデルとして、形状を写し取ろうと思います。土器の大きさは約XY0.35m、高さ0.33mです。

 

・形状を適用するモデル

 形状を写し取るので、blender上で上記土器よりも少し大きい円柱を作成します。

 

〇円柱でシュリンクラップ

・円柱を作成 

CTRL+Aで円柱を作ります。頂点32。半径0.2m、深度(高さ)0.35mとしました。

f:id:ultimate_seirogan:20191015142441p:plain

 

・円柱の編集・細分化

 作成した円柱を選択し、編集モードに切り替えて上下の面を削除します。

f:id:ultimate_seirogan:20191015142816p:plain

 

 CTRL+Rでループカットを行い、1つの面を正方形に近づけます。作成した円柱は円周は1.256m(直径0.4m×円周率3.14)で32分割しているので一辺が0.03921mです。高さが0.35mなので分割数を8にします。(8分割にすることでZ軸方向に9辺できます)

f:id:ultimate_seirogan:20191015144611p:plain

 

 オブジェクトモードに戻り、さらに細分化します。モディファイアーマルチレゾリューションを選択し、シンプルを選択。現在1面約0.04mなので、ミリ以下で形状を写し取るとして、細分化を5回押し、プレビュー以下6になるようにします。(0.04mを6回分割するので0.000625mになります。)下記のようになったら適用を押します。

f:id:ultimate_seirogan:20191015152705p:plain

 

シュリンクラップ

 モディファイアーでシュリンクラップを選択し下記のように設定します。設定が出来たら適用ボタンをクリック。

f:id:ultimate_seirogan:20191015154134p:plain

 

 余分な面を削除すれば完成です。

 シュリンクラップをする理由としては、不規則なメッシュを規則的なメッシュに変換することが目的です。シュリンクラップ後にオリジナルデータのテクスチャとノーマルマップを適用する方法はいずれ

 

 

【blender】基盤地図情報をblenderで読み込む

 測量屋であればよく利用すると思いますが、国土地理院基盤地図情報!このデータをblenderに読み込んでみます。

 

【目次】

 

【必要ソフト】

基盤地図情報ビューア

https://fgd.gsi.go.jp/download/documents.html

 

〇CloudCompare・Meshlab

ultimate-seirogan.hatenablog.com

 

基盤地図情報ビューア使用方法】

基盤地図情報ダウンロード

https://fgd.gsi.go.jp/download/menu.php

 国土地理院のIDとパスワードを取得し、上記URLからダウンロードを行います。

f:id:ultimate_seirogan:20191007112954p:plain

 今回は図面データに高さをつけるため、両方ダウンロードします。

 地図から必要な場所をクリックし、選択リストに加えます。

f:id:ultimate_seirogan:20191007113637p:plain

 

基盤地図情報ビューアの起動

・図面データのエクスポート

 インストールした基盤地図情報ビューアを起動し、ダウンロードしたZipファイルを解凍せずにドラッグアンドドロップすると図面が表示されます。

 すべてを書き出すとかなりのデータ量になるので必要な部分だけ短径領域設定で選択し、エクスポートします。

f:id:ultimate_seirogan:20191007115122p:plain

f:id:ultimate_seirogan:20191007132153j:plain

 ・DEMデータのエクスポート

 DEMデータも図面データと同様に基盤地図情報ビューアにZIPファイルのまま読み込みます。エクスポートのやり方だけ多少異なります。図面データ書き出し時と同様に短径領域設定で書き出す範囲を設定します。

 エクスポートタブの標高Meshをシェープファイルへ出力を選択し、エクスポートします。

f:id:ultimate_seirogan:20191007135351p:plain

 

【Cloudcompareで変換】

〇図面データ

 Cloudcompareを起動し、基盤地図情報ビューアから書き出したSHPファイルをすべて選択し、ドラッグアンドドロップで読み込む。

 書き出しはblenderにインポートした後の作業を考えてレイヤごとに書き出すのがおすすめです。(書き出しはDXFを選択)

f:id:ultimate_seirogan:20191007143522j:plain

 

〇DEMデータ

 図面データと同様にSHPファイルに変換したDEMデータを読み込みます。blenderに読み込む時にメッシュデータで読み込んでおいたほうが図面データに綺麗に高さを与えられるため、メッシュデータを作成します。

 CloudCompare上でもメッシュデータは作成できるのですが、メッシュ作成のアルゴリズムがMeshlabのほうが優れているように思いますので(私の設定に関する知識が足りないだけだと思いますが、、、)一度PLY形式で点群データを保存し、Meshlabで開きます(こちらもドラッグアンドドロップで開けます)。

f:id:ultimate_seirogan:20191007144452p:plain

 『Remeshing,Simplification and Reconstruction』→『Surface Reconstruction:Ball Pivoting』を選択。

f:id:ultimate_seirogan:20191007145040p:plain

 Applyを押すとメッシュが生成されます。(少し時間がかかります)メッシュの作成が終わったら

f:id:ultimate_seirogan:20191007145445p:plain

 『File』→『Export Mesh As』でPLY形式で書き出し(メッシュの形式であれば何でもよいです)

 

blenderで読み込み】

〇図面データ

 blenderを起動し、『ファイル』→『インポート』→『AutoCAD_DXF』でインポートします。※blenderインストール時はDXFインポートのアドオンがオフになっているためアドオンの設定を行ってください。

 また、DXF読み込みに関しては【blenderアドオン】import-Export Autocad DXF Format (DXF)の記事を参考にしてください。

 

ultimate-seirogan.hatenablog.com

ultimate-seirogan.hatenablog.com

 

 〇DEMデータ

  Meshlabで書き出したDEMデータをインポートします。(書き出した形式に応じてインポートしてください)図面データをオフセットしている場合は同じ移動量でオフセットします。

f:id:ultimate_seirogan:20191007162244p:plain

 読み込むと上記のように綺麗に重なります。ただし、図面データのほうはZ値が0になっていますので高さがありません。DEMデータに合わせて高さ情報を付与します。

 

〇図面データに高さ情報を付与

 読み込んだままの状態だと図面のほうが低くなっているはずなので、図面データをすべて選択し、『G』→『Z』で高さ方向だけ移動し、メッシュよりも高くします。

f:id:ultimate_seirogan:20191007163349p:plain
 コンテクストのモディファイアを選択し、モディファイアーを追加内のシュリンクラップを選択します。

f:id:ultimate_seirogan:20191007164222p:plain

 

 上記の設定にし、Z軸だけメッシュに張り付いていれば適用をクリック。この作業をレイヤごと繰り返します。カーブでの編集予定がなければカーブからメッシュへ変換してからシュリンクラップするほうが動作が軽いです。(オブジェクトモードで選択中に3Dビューポート上で右クリック、メッシュに変換をクリックする。)

 

 今回試しに行ってみた部分でいうと、川部分にはメッシュが張られておらず、シュリンクラップでメッシュのZ軸に吸着していなかった。DEMデータからメッシュを作成するときに川までメッシュが張られるように設定するのが良いと思います。いずれ検証します。