2025/03/02(日) [n年前の日記]
#1 [blender] blenderでビルボード相当を実現したい
_昨日の実験中、
blender でビルボード相当を実現する方法が分からなくて途中で諦めてしまったのだけど、どうにか実現できないものかと試してたらおそらくやり方が分かってきたので一応メモ。
環境は Windows10 x64 22H2 + blender 3.6.21 LTS。
一般的に、blenderでビルボード相当を実現する場合は、オブジェクトコンストレイントプロパティで、トラック、または軸固定トラックを使って、オブジェクトがカメラの位置を向くように設定する解説記事が多いような気がするのだけど。考えてみたら、カメラの位置を向くようにしなくても、カメラの角度をオブジェクトにコピーするだけでビルボードになるんじゃないかと思えてきた。
そんなことを考えながら、オブジェクトコンストレイントの種類を眺めていたら、「回転コピー」という種類があることに気づいた。ひょっとして、これを使えばいいのではないか。たぶん。
以下のように試してみた。
これでいいんじゃね?
ワールドの原点に empty を置いて、カメラを empty の子にして(カメラ、emptyの順で複数選択してから Ctrl+P で親子付け)、empty を回転させるアニメーションを作ってみた。ちゃんとビルボードっぽくなっている気がする。
カメラの動きを外から眺めると以下。カメラの角度が各オブジェクトにコピーされているように見える。
この設定をしたオブジェクトを ―― オブジェクトコンストレイントで「回転コピー」を設定したオブジェクトをヘアーパーティクルを使って大量に発生させてみた。
これで目的は果たせそうな気がする。
環境は Windows10 x64 22H2 + blender 3.6.21 LTS。
一般的に、blenderでビルボード相当を実現する場合は、オブジェクトコンストレイントプロパティで、トラック、または軸固定トラックを使って、オブジェクトがカメラの位置を向くように設定する解説記事が多いような気がするのだけど。考えてみたら、カメラの位置を向くようにしなくても、カメラの角度をオブジェクトにコピーするだけでビルボードになるんじゃないかと思えてきた。
そんなことを考えながら、オブジェクトコンストレイントの種類を眺めていたら、「回転コピー」という種類があることに気づいた。ひょっとして、これを使えばいいのではないか。たぶん。
以下のように試してみた。
- オブジェクトコンストレイントプロパティを表示して、「オブジェクトコンストレイントを追加」をクリック。
- 「回転コピー」を選択。
- ターゲットに、Camera を指定。
これでいいんじゃね?
ワールドの原点に empty を置いて、カメラを empty の子にして(カメラ、emptyの順で複数選択してから Ctrl+P で親子付け)、empty を回転させるアニメーションを作ってみた。ちゃんとビルボードっぽくなっている気がする。
カメラの動きを外から眺めると以下。カメラの角度が各オブジェクトにコピーされているように見える。
この設定をしたオブジェクトを ―― オブジェクトコンストレイントで「回転コピー」を設定したオブジェクトをヘアーパーティクルを使って大量に発生させてみた。
これで目的は果たせそうな気がする。
[ ツッコむ ]
#2 [blender] blender 2.7xがWindows10 x64 22H2上で動作しない
昔の blender 2.7x なら、パーティクルの中にビルボードという種類があったはず…。そう思って、blender 2.79b を Windows10 x64 22H2上で実行して動作確認してみようと思ったら、blender 2.79b が動かない状態になっていることに気づいた。
環境は以下。
blender 2.79b は以下から入手。
_Index of /release/Blender2.79/
環境は以下。
- Windows10 x64 22H2
- blender 2.79b x64 (blender-2.79b-windows64.zip)
- blender 2.79b x86、2.78c x64, 2.77.1 x64, 2.76.2 x64 も同様
- CPU : AMD Ryzen 5 5600X
- GPU : NVIDIA GeForce GTX 1060 6GB
- RAM : 32GB
- ビデオドライババージョン : 560.94 DCH
blender 2.79b は以下から入手。
_Index of /release/Blender2.79/
◎ 症状 :
スプラッシュ画面が出てきて、ウインドウ全体が表示されるところまでは実行できる。しかし、その状態で…。
要するに、blender本体のウインドウにフォーカスが当たって、再度アクティブになる時に落ちるようで…。
- 例えば、タスクバー上のblenderのアイコンをクリックしただけで、blenderが何も返さずに落ちる。
- あるいは、ユーザー設定ウインドウを表示してから、そのウインドウの右上の「閉じるボタン」をクリックすると、これもblenderが落ちる。
- 別のアプリをアクティブにしてから、blenderのウインドウを再度アクティブにすると、これも blenderが落ちる。
要するに、blender本体のウインドウにフォーカスが当たって、再度アクティブになる時に落ちるようで…。
- blender 2.7x以前(2.79b x64、2.79b x86、2.78c x64, 2.77.1 x64, 2.76.2 x64) ではblenderが落ちる。
- blender 2.8x以降(2.83.20 x64、2.93.18、3.6.21、4.2.7)なら、こういうことは起きない。
◎ 試したこと :
--debug-all というオプションをつけるとデバッグ情報が表示されるらしいので、DOS窓(cmd.exe)を開いて、blender.exe --debug-all で実行してみたところ、最後に以下のメッセージが表示されていた。
このエラーメッセージでググっても、blenderが落ちる場合はえてしてこのエラーメッセージを出して落ちるようで、参考になる話が出てこない…。
opengl32.dll を入手して blender の入っているフォルダに置くことで、動作は激遅になるもののソフトウェアでOpenGLを処理するようになるから安定動作するかも、という話を見かけた。試してみたものの、たしかに動作は遅くなったけど、相変わらずウインドウが再アクティブになる時に落ちる。全然安定動作になってくれない。
起動用のショートカットファイルのプロパティを開いて、互換性 → 互換モード → 互換モードでこのプログラムを実行する、にチェックを入れる → Windows7、を選択してみた。効果は無かった。
Error: EXCEPTION_ACCESS_VIOLATION
このエラーメッセージでググっても、blenderが落ちる場合はえてしてこのエラーメッセージを出して落ちるようで、参考になる話が出てこない…。
opengl32.dll を入手して blender の入っているフォルダに置くことで、動作は激遅になるもののソフトウェアでOpenGLを処理するようになるから安定動作するかも、という話を見かけた。試してみたものの、たしかに動作は遅くなったけど、相変わらずウインドウが再アクティブになる時に落ちる。全然安定動作になってくれない。
起動用のショートカットファイルのプロパティを開いて、互換性 → 互換モード → 互換モードでこのプログラムを実行する、にチェックを入れる → Windows7、を選択してみた。効果は無かった。
◎ Linux版でお茶濁し :
Windows版は使えなくても、Linux版が使えたらどうにかなるかなと思いついた。
Ubuntu Linux 20.04 LTS 64bit版上で、blender-2.79b-linux-glibc219-x86_64.tar.bz2 を入手。解凍して、中に入っていた ./blender を実行してみたところ、そちらなら動いてくれたので…。blender 2.7x に関して動作確認したい場合は Linux版を使ってどうにかする、ということでもいいかなと…。
Ubuntu Linux 20.04 LTS 64bit版上で、blender-2.79b-linux-glibc219-x86_64.tar.bz2 を入手。解凍して、中に入っていた ./blender を実行してみたところ、そちらなら動いてくれたので…。blender 2.7x に関して動作確認したい場合は Linux版を使ってどうにかする、ということでもいいかなと…。
[ ツッコむ ]
以上、1 日分です。


