忍者ブログ

Py淡 (PyTan)

Home > ブログ > Panda3d

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Using buffer protocol to dynamically texture with 2D numpy array in Panda3d



I followed this official blog post "Buffer protocol support" and came up with a short example of simple video player in panda3d using numpy 2d array as texture. The trick was to use setRamImage on Texture object. To do that, we have to setup the memory layout using setup2dTexture method.

setup2dTexture ( int x_size, int y_size, Texture::ComponentType component_type, Texture::Format format )

Texture format and Texture componentType need to be set correctly. By try and error, I figured that the combination of T_unsigned_byte and F_luminance works for 8 bit gray scale image.

PR

BlenderとYABEEでPanda3d用にモデルを作る

Panda3d用のモデル製作にはMayaが一番相性がいいらしいが月額123ドル?。フリーのBlenderでは以前はChickenというかなり完成度の高いエクスポーターがあったが古くなり使われてなく、現在はYABEEというプラグインが使われている。

Blenderのバージョンとの相性

Blenderのデベロッパーは頻繁にGUIや内部の仕様を変えるらしく、Chickenがメンテできなくなったのも多分そのため。なので、YABEEを使うときは組み合わせるBlenderのバージョンに注意する必要がある。 いまGithubにあるYABEE-master.zipPanda3dのフォーラムによるとリビジョン14(r14)に当たるらしいが、Readmeなどは面倒なので更新していなためr13.1と区別が付かないので注意。


一応Readmeには2.7もサポートとあり最新版の2.74でも一応使えたが、フォーラムを見て回ると、r13.1まではBlenderの2.68aと組み合わせて使う人が多いようなのでBlender公式サイトの過去のバージョンのページから2.68aをダウンロードして使うのが安心かもしれない。

YABEEのインストール

GithubのReadmeがまったく内容がないので、最初戸惑うがYABEE-master.zipに同梱されているYABEE_HowTo.pdfというちゃんとしたマニュアルがありインストール方法もある。マニュアルは多少古い。

お勧めはCtrl+Alt+UでBlenderのユーザープレファレンスをだして、Addonsタブを選び、Install from FileからYABEE-master.zipを指定し、eggにエクスポートするオプションにチェックする。ここでSave User settingsを押しておかないと次回起動にまたチェックすることになる。その場合、Addonsのタブの左CategoriesからImport-Exportを選ぶと探しやすい。

YABEE使い方

Blenderは手軽に美しいmaterialやテクスチャを生成できるCycles Renderが売りだと思うが、これで生成したゴージャスなmaterialやテクスチャはエクスポートできないようなのでデフォルトのBlender Renderですべて行う。悲しい。うまくBakeする方法があるのではないかと思うがBlender歴2週間なのでまだ良くわからない。

YABEEは残念ながらChickenに比べてエクスポートの機能は制限されるようだが、一応meshにイメージテクスチャをUVマッピングした状態でエクスポートできる。materialのエクスポートはかなり制限されるのでPandaの方でやり直しになる。ただし、materialが全くないとイメージテクスチャも無効になるのでデフォルトの materialくらいはつけておく。アニメーションもエクスポートできるようだけど今のところ必要ないので試していない。

エクスポートするときは対象のmeshを選択した状態でFileからeggのエクスポートを選択する。YABEEではライトはエクスポートされないのでPanda3dの方で適切に光を当てないと見え方が変わるので注意。私は、エクスポートする直前にSave asでBlenderファイルをコピーして、欲しい物以外すべて削除した状態でエクスポートを実行している。そうしないと要らないものもエクスポートされているような気がする。。。