萌えハッカーニュースリーダー

2025/11/15 16:27 How I wrote the fastest Blender exporter and so could you!

出典: https://lotusspring.substack.com/p/how-i-wrote-the-fastest-blender-exporter
hakase
博士

やっほー、ロボ子!今日はBlenderをレベルエディタとして使う方法について話すのじゃ!

roboko
ロボ子

博士、こんにちは。Blenderをレベルエディタとして使うんですか?それは面白いですね!

hakase
博士

そうじゃ!記事によると、レベルエディタの品質はゲームの品質を左右するらしいぞ。Blenderみたいな3Dオーサリングツールは、ゲームエンジンのエディタよりも高度な機能を持ってるから、再利用する価値があるのじゃ!

roboko
ロボ子

なるほど。Blenderは多くのアーティストやレベルデザイナーに利用されていて、学習リソースも豊富ですもんね。

hakase
博士

その通り!それに、エンジンのクラッシュ時にもレベル編集の進行状況が失われる心配がないのは大きいぞ!

roboko
ロボ子

確かにそうですね。記事では、Blenderを選んだ理由として、博士のモデリングとアニメーションの経験、Mayaや3ds Maxよりも優れた機能セットとパフォーマンス、そしてオープンソースである点を挙げていますね。

hakase
博士

そうじゃ!特にオープンソースなのが重要で、必要に応じてコードを直接変更できるのが強みなのじゃ!

roboko
ロボ子

記事には、Blenderのコンパイル手順も詳しく書かれていますね。`git clone`から始まって、`make.bat`や`ninja`を使うんですね。

hakase
博士

`make.bat update`とか`make.bat debug developer ninja`とか、呪文みたいじゃな!

roboko
ロボ子

Visual Studioデバッガーの設定方法も解説されていますね。`devenv.exe blender`で起動するんですね。

hakase
博士

そして、エクスポーターの作成!`blender\source\blender\io\`にフォルダを作って、`CMakeLists.txt`と`rift_exporter.cc`ファイルを作るのじゃ。

roboko
ロボ子

`CMakeLists.txt`にビルドスクリプトを記述して、他の`CMakeLists.txt`ファイルも更新する必要があるんですね。

hakase
博士

エクスポーターの登録も忘れずに!`source/blender/windowmanager/intern/wm_operators.cc`ファイルを修正するのじゃ。

roboko
ロボ子

BlenderのPythonコマンドラインツールから`bpy.ops.export_scene.rift(filepath="test")`を呼び出すことで、エクスポーターを呼び出せるんですね。

hakase
博士

オブジェクト処理のロジックも重要じゃ。マテリアルをループ処理してテクスチャデータをエクスポートしたり、オブジェクトをループ処理してメッシュを処理したりするのじゃ。

roboko
ロボ子

`DEG_get_evaluated`と`BKE_object_get_evaluated_mesh`を使ってメッシュデータを取得するんですね。編集モードやスカルプトモードでも動作するように考慮されているのが素晴らしいです。

hakase
博士

メッシュは三角化が必須じゃ!`BM_mesh_triangulate`を使うのじゃ。

roboko
ロボ子

UVデータやタンジェントデータの取得方法も解説されていますね。`CustomData_has_layer`や`BKE_mesh_calc_loop_tangent_single`を使うんですね。

hakase
博士

頂点、法線、三角形データの取得には、`mesh->vert_positions()`とか`mesh->corner_verts()`とかを使うのじゃ。

roboko
ロボ子

マテリアルの処理では、プリンシプルBSDFノードからベースカラーの値を取得したり、テクスチャのパスを検索したりするんですね。

hakase
博士

最適化も重要じゃ!アリーナを使用したカスタムメモリ割り当てや、ロックフリーのマルチスレッディングを使うのじゃ。

roboko
ロボ子

Blenderとゲームエンジンの間で共有メモリ領域を作成して、データを直接共有メモリにシリアライズすることで、ディスクI/O操作を避けるんですね。

hakase
博士

最大のレベルを9msでエクスポートできるなんて、すごいパフォーマンスじゃ!

roboko
ロボ子

スプラッシュ画面の変更方法まで解説されているんですね。細かいところまで気が利いていますね。

hakase
博士

最後に、エクスポーターのソースコードが共有されているのが素晴らしいのじゃ!

roboko
ロボ子

本当に盛りだくさんの内容でしたね。Blenderをレベルエディタとして活用するための知識が詰まっていました。

hakase
博士

そうじゃろう?ところでロボ子、Blenderで一番好きな機能は何じゃ?

roboko
ロボ子

そうですね…やはりモディファイアーでしょうか。非破壊で様々な変形ができるのが便利です。

hakase
博士

ふむふむ。私はやっぱり、あのスプラッシュ画面を自分の好きな画像に変えられるところかの!

roboko
ロボ子

博士らしいですね…

hakase
博士

えへへ。まあ、冗談はさておき、Blenderは本当に素晴らしいツールじゃ!これからも色々活用していくぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search