mieki256's diary



2024/12/25(水) [n年前の日記]

#1 [godot][blender] コースデータ修正中

_昨日 に続き、Windows10 x64 22H2 + Godot Engine 4.3 64bit でゴルフゲームっぽいものが作れないものかなと試してる。

コースデータを blender 3.6.19 LTS を使って修正中。

以下は blender関係のメモ。

複数オブジェクトを任意オブジェクトで置換 :

OBの境界を示す杭を今まで六角形で作っていたけれど、この手の杭は四角形でもいいんじゃないかなと思えてきたので、blender で修正。

ただ、既に50本ほど配置してしまったオブジェクト群を、別のオブジェクトで一つ一つ、手作業で置き換えていくのはシンドイ…。blender上で、複数選択したオブジェクトを一括して何かのオブジェクトで置換してしまう方法はないか…。

ググってみたら、できるらしいと知った。

_blender備忘録 特定のオブジェクトを任意のオブジェクトに置き換えたい|Nsima
_【Blender】一瞬で別オブジェクトに差し替える|yugaki

  1. Shift+クリックで置換先のオブジェクトを複数選択。
  2. 置換元のオブジェクトを最後に選択。
  3. Ctrl + L でメニューを表示して、「オブジェクトデータのリンク」を選ぶ。

一括して置換された。助かった。ありがたや。

マテリアル毎に複数オブジェクトに分離 :

Godot Engine上で衝突判定処理を軽くするために、複数のマテリアルが使われている1ホール分のコースデータを、マテリアル毎に.objファイルとして保存したい。そのためには、マテリアル毎に、別オブジェクトとして「分離」する必要がある。

本来は、というか以前の作業では、以下の操作をして「分離」していた。
  1. 編集モードに入る。(TABキー)
  2. マテリアルを選択後、「選択」をクリックして、そのマテリアルを使ってるポリゴンを選択。
  3. Pキーを押して分離メニューを出して、「選択」を選んで、選択中のポリゴン群を別オブジェクトに分離する。

しかし、面倒臭い。マテリアルが10個前後あるけれど、面倒臭い。

色々試してたら、以下の方法に辿り着けた。
  • Wavefront形式(.obj)でエクスポートする際、グループ化 → マテリアルグループ、にチェックを入れた状態でエクスポートする。これで、マテリアル別にグループ化されている .obj が得られる。
  • その .obj をインポートする際、オブション → グループで分離、にチェックを入れてインポートする。
これで結果的に、マテリアル別で複数のオブジェクトに分離した状態が得られた。

ただ、bldenr 3.6.19 LTS では、objエクスポート時に「グループの分離」があったけど、blender 3.3.21 LTS では該当項目が見当たらなかった…。比較的最近のバージョンの blender を使わないと、こういうことはできない可能性が高そう。

更に、.obj でエクスポートしてしまうと、.objがサポートしてないせいで、失われてしまう情報が色々ありそう。どんなモデルデータもこの方法で対処できるわけではないだろうなと…。

でもまあ、シンプルなモデルデータなら、これでどうにかできそうな気はする。

と、ここまで書いてから気づいたけれど。Pキーを押して出てくる分離メニューの中から「マテリアル」を選べば、マテリアル別で分離できるのでは…? オブジェクト名は連番になってしまうけど…。

複数オブジェクトを一括エクスポート :

選択した複数のオブジェクトを、オブジェクト1つにつき1ファイルとして、一括して自動でエクスポートできるアドオンがあるらしいと知った。そんなアドオンが使えたら、作業が随分と楽になる。

Capsule というアドオンが使えるらしいと知ったのだけど、手元の blender 3.3.21 LTS, 3.6.19 LTS, 4.2.5 LTS では何故か使えなかった。Export preset が「なし(None)」のままで、何も選択できない…。エクスポートしようとしても「Export presetが指定されてないから処理できない」と言われてしまう。指定しようにもリストには何も無いのですが…。一体どうしろと。

_Capsule (Blender Addon) by Takanu
_Takanu/Capsule: (Blender 4.1) Universal batch export manager
_複数オブジェクトやコレクションをワンクリックでエクスポートすることができる無料の Blenderアドオン Capsule 1.3 | CGinterest


ただ、他にも Blender Super Batch Export なるアドオンがあることを知った。

_mrtripie/Blender-Super-Batch-Export: Allows you to export multiple meshes in a blend file to separate files in one click.
_Blender Super Batch Export Addon - YouTube
_複数選択したオブジェクトを個別のfbxとして書き出すアドオン。検索して出てきたBatexやCapsuleは / X

super_batch_export_2.1.1.zip を入手してインストール。blender 3.3.21 LTS、3.6.19 LTS 上で試した。

インストールすると、一番上のメニューの最後、「ヘルプ」の右側に、上向き矢印のアイコンが追加される。このアイコンをクリックすれば一括でエクスポートできるらしい。アイコンの右側の小さな下向き三角を押せば、設定ウインドウが表示される。

このアドオンなら、blender 3.3.21 LTS、3.6.19 LTS上でも動作してくれた。ありがたや。

と思ったが、エクスポートされた .obj の向きがおかしな状態になっていた。手作業で一つ一つエクスポートする分には、向きはおかしくならないのだけど…。

Obj Settings の Preset で、保存済みのプリセットを選んでしまうとおかしくなるっぽい? それとも Set Rotation 等のチェックを外すといいのだろうか。何にせよ、そのあたりを変更しながら試したら、向きが正常な状態でエクスポートできた模様。どうやら使う際には何かコツがあるっぽい。

Godot Engineに読み込むのが面倒 :

これで10ファイル前後の.objを用意できたけど、これを Godot Engine に読み込んでいくのが面倒…。Godot Engine のプロジェクトフォルダ/imports/ の中に .obj と .mtl をコピーしておけば、Godot Engine から使えるようになるけれど…。
  • StaticBody3D をシーンに追加。
  • その中に、MeshInstance3D を子ノードとして追加。
  • MeshInstance3D の Mesh に、.obj をドラッグアンドドロップ。
  • 上部メニューの「メッシュ」から、コリジョン用メッシュを作成。CollisionShape3D が作られる。
  • CollisionShape3D が作られたので、MeshInstance3D は不要。削除する。
  • StaticBody3D の設定を変更。PhysicsMaterial を新規作成して、bounce 等を設定。
  • StaticBody3D にグループ名を指定。
これを10回ぐらい繰り返さないといけない。面倒臭い。

事前にこういう作業をしておくことで、動作中のプログラムの衝突判定処理は軽くなってくれるのではないかと想像しているけれど…。このインポート作業というか、配置作業と言うか、下準備作業、自動化できないものかな…。

以上、1 日分です。

過去ログ表示

Prev - 2024/12 -
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project