minecraftでopenfoam計算用メッシュを作成する
TRANSCRIPT
Minecraftで計算用メッシュを作成する第 47回オープン CAE勉強会@関西
@mmer547
メッシュ作成までの流れ
Minecraftの入手入手するにはココをクリック
Minecraftの入手指示に沿って入力し、購入する。
インストーラの起動
Nextをクリック
インストール場所の指定
Nextをクリック
インストール確認
Installをクリック
インストールの完了
Finishをクリック
ランチャーへのログイン
購入時に入力したメールアドレスとパスワードを入力し、 LogInをクリック
ランチャーの起動~プロフィールの変更
Edit Profileを選択します。
バージョンの指定
バージョンは 1.8系にしておく
バージョンを変更したらSaveProfileをクリック
起動
Playを押して起動します。
タイトル画面
Singleplayerをクリックします。
新しい世界の創造
Create New Worldをクリック
ワールドの作成
World Nameを入力します。
入力が終わったら Create New Worldをクリックします。
Game Modeは Creativeにします。他のモードだとゾンビなどに攻撃されます。
プレイ画面
動作を確認します。W:前進
A:左移動S:右移動D:後退
E:インベントリを開く (重要 )マウス移動:視点移動マウス左クリック:攻撃Spaceキー:ジャンプ
Minecraftの終了
動作を確認したらEscキーを押してメニューを表示し Save and Quit to Titleをクリックしてゲームをやめます。
Modの導入:MincraftForgeのサイトに行くPythonスクリプトなどModと呼ばれる拡張機能を導入するために
MinecraftForgeを入手します。
MinecraftForgeで検索すればすぐにサイトが見つかります。(やたらと広告が多いので注意 )
Forgeの入手
先ほど動作テストをしたときに設定した正式版のバージョンと同じバージョンを選択する。
ダウンロードはWindows版は Installer winを選択する。(Macは Installerを選択)
ダウンロードページ
トラップ広告が多いので注意
右上の SKIPをクリックする。するとダウンロードが始まる。
インストーラの起動
Install clientを選択する。OKをクリックする。
インストーラーをクリックして起動する。
Forgeのプロフィーへの反映
ランチャーを起動しEditProfileをクリックします。
GameDirectoryと UseVersionの指定
Jsonファイルがあるフォルダを指定する。
インストーラの最初の画面で指定しているフォルダにある
GameDirectoryを forgeのインストールフォルダに設定する。
UseVersionを forgeと書いてあるものに変更する
起動!
Playをクリックして起動する。
Forge導入の確認
タイトル画面意Modsと出ていれば導入完了
Pythonスクリプト実行用 raspberryjammodの入手https://github.com/arpruss/raspberryjammodにアクセスする。
Releasesをクリックします。
Python scriptの実行環境と raspberryJamModの入手
この三つをダウンロードする( Pythonのほうは自分の使うバージョンに合わせてどちらかだけ)
RaspberryJamModの導入Forge導入時の Game Directory下にあるmodフォルダに先ほどダウンロードした
raspberryJamModの jarファイルを保存する。
Minecraftを起動
ランチャーを起動してPlayをクリック
Minecraftの開始
Modsを選択
Modの確認
ModListに Raspberry Jam Modが登録されているか確認する。
NewWorldの作成
動作検証時と同じ手順でNewWorldを作成し、ゲームを起動する。
インベントリを開いてスクリプトを受付けるキーボードの Eキーを押してインベントリを開きます。
Minecraftはウィンドウを切り替えると、 Escキーのメニューが表示され、スクリプトの実行が出来なくなります。インベントリを開いている間は別ウィンドウでの作業も出来て、スクリプトの実行も通ります。
Pythonスクリプトの準備raspberryJamModと一緒にダウンロードしてきた Pythonのファイルを解答します。
解答後のフォルダにあるmcpiフォルダと同じ階層に Pythonスクリプトは保存するようにしてください。
サンプルファイルの使用
購入時に入力したメールアドレスとパスワードを入力し、 LogInをクリック
gf_clearZone.pyの中身
ブロックを置くメソッド.setBlocks(x0,y0,z0,x1,y1,z1,blockType, blockData)
blockAirは空気ブロックと呼ばれるもので、これで埋められた領域はなにもない状態と同じになります。
コマンドプロンプトで実行
Mcipyフォルダ内のスクリプトを実行する。(実行方法は通常の Pythonスクリプトと同じ )
実行結果
スクリプトで指定した領域が空気ブロックで埋められ、何もなくなっている。
サンプルを流用してスクリプトを作成
gf_clearZone.pyをコピーしてgf_clearZone_100.pyを作成
clearZoneを( -100,-100,100,100)に変更する
gf_clearZone_100.pyの実行
gf_clearZone_100.pyを実行
さらに広い領域がさら地に
OFblockcreate
ブロック構築データをリストで定義。
XYZ方向に対してリストをベースにブロックを配置
Ofblockcreateの実行
実行結果
Ofblockcreateに入力していたリストの通りブロックが配置されている。
メモ:後の STL出力時に土台部分がないと出力できないので1ブロック分の土台を作ります。
ブロックの設置が終わったらEscキーを押してメニューからセーブしてゲームを終了します。
STLを出力するMinewaysの入手
Minewaysのサイトに行き左にあるダウンロードアイコンをクリックしてダウンロードする。
Minewaysの起動
ダウンロードしたファイルを解答し、中にあるMineways.exeをクリック
Minecraftファイルのロード
File->Openを選択する。
level.datの選択
Forgeの GameDirectory下にあるsavesフォルダに level.datファイルがあるので選択して開く。
Mineways上でのWorldの表示
Minewaysでは読み込んだlevel.datの世界をトップビューで眺められる。
出力領域の指定
Lower depthは Pythonスクリプトで指定した地面に高さに合わせておく。出力領域を決めたら
File->Export for3D Printingを選択する左クリックドラッグで出力したい領域を選択できる。選択した領域は紫色で示される。
Max heightは Pythonスクリプトで作成した形状の高さより高い数値にしておく
ファイルの保存
ファイル名を入力して保存をクリック
STLファイルについての設定1ブロックあたりの大きさを変更できる出力する範囲はここでも指定できる。
設定が出来たら OKをクリック
FreeCADで確認
モデルは正常に出力できている。
作成した形状で計算• InterFoam
• TotalTime: 3sec
• ΔT: 0.001sec
• Cell数: 993045
• 水-空気で計算
計算結果
まとめ•導入自体が少し煩雑• Pythonでの自動建築は API1つでとりあえず出来る。•より複雑な形状を自動建築する場合は、工夫がいりそう。 (画像解析による濃淡でモデルの高さを読み取るコードの作成等)