ブログランキング・にほんブログ村へ


iPhone/iPad用潜水艦ゲームアプリ ソナーエコー iTunesにて公開中

2012年06月07日

Blender 法線反転

Blender 2.6.3。

メッシュモデルを作ってみたはいいんだけど、それをOpenGLで表示したらなんか暗いところが何カ所か。



あからさまに反転して作ったところなんで、法線なんだなってことはすぐに見当がつくんだが。

Blenderの法線反転をどうやるのかぐぐってみると、なんかわかったようなわかんないような説明で、Blender自体バージョンが2.6あたりから相当UIが変わってるらしくって古い資料でかえって惑わされたり。

自分がやってうまくいった作業の流れをメモしとく。

1)3D編集画面でNを押して(またはビューメニューの一番下プロパティを選択)プロパティを表示。

2)問題のオブジェクトをオブジェクトモードで選択。

3)TAB押して編集モードに移る。

4)Aで全選択。元々選択されてる場合はそのまま

5)ぐぐったところでよく”プロパティのNormalのところでなんたらかんたか表示する”ってあったのは2.6.3の日本語だとここ。

しかし、法線をノーマルと書くのはやめてもらいたい。頭でいくらわかっていても見落とす。
ちなみに編集モードでしかこのプロパティのこの欄自体表示されないので注意。
選ぶと、水色の線で毛が生えたみたいに法線の方向が可視化される。

6)モデルの靴の反対側もみてみると


法線は確かに逆向きになってるようだ。

オブジェクトを反転して作るとこういうことが起きるみたい。実は法線をおかしくしないで反転コピーする方法もあるのかもしれない。
当面は反転コピーした後は法線を目でチェックすることにする。

7)法線の反転はぐぐったサイトではCtrl+Nとか書いてあることが多いけどメニューではここ。



しかしおかしいのは、他のサイトで見るとCtrl+Nでなんでも直るような感じで書いてあるのに、やってみると法線が必ず外側なのがうまくいってるパターンではないってこと。このモデルの場合は耳のほうは左右とも外側が正常だったが、靴は両方内側、腕と袖は右だけが内側が正常だった。たぶんメッシュを作ったときの経緯が関係ありそう。
とにかくおかしいときは理屈を考えずに法線を反転するしてみるしかないようだ。


ぐりぐりと現物あわせで修正した結果がこれ。

やれやれよかったよかった。
posted by みこあいさ at 12:52| Blender

2012年06月06日

Blender obj export group レイヤ

Blender 2.6.3a。

Blenderでメッシュを作ってObjとしてexportしたものを中間フォーマットに変換してiOSやAndroidで使うという流れで色々やっていたのだけど。

Objはxみたいなタイプのボーンを使ったアニメがBlenderの制約かどうかよくはわかんないけどかなり向いてないか出せないっぽい。
まぁObjを使ってるのもなんか流れでそうなっただけでOpenGLの勉強のためなんでそれでもいいけど、せっかく続けてる以上は簡単でもいいのでゲームみたいなものとして一度は完結したい。

だから制約があってもいいから簡単なアニメが出来ないかと考えてみた。

使えそうだと思ったのはObjフォーマットのg記述。グループだ。
オブジェクトをいくつかまとめてグループとして扱い、それを単位にOpenGLで描画できるようにしたらレイヤ見たく扱ったり、ものによっては部分的に回転とかさせるとそれっぽくなりそう。
例えば戦車の 砲塔と車体をグル―プにわけて砲塔だけ回したりとか。

それでBlenderにグループの指定があったのでそれを使って指定して、Objにエクスポートしてみた。
…しかしグループ情報が出力されない。
色々オプションスイッチを入れたり切ったりしてみたけど、出ない。
ぐぐってみたけど、英語のサイトまで範囲を広げてもそもそも編集時のグループ指定をエクスポートするという記述にまったくぶつからない。
どうやらBlenderのobj exporterはグループの出力に対応していないと結論した。

しかしここで諦めるのはあまりに悔しい。
かといって少し使えるようになってきたBlenderをやめて他の3Dモデル編集ソフトを始めるのは勘弁願いたい。そもそもMacで使える廉価な3Dソフトが非常に少ない。

幸い自作のObjを独自中間フォーマットに変換するJavaプログラムが変換情報を記述するxmlをソースとしているので、このxmlの仕様にグループを記述する仕様を追加した。
オブジェクト名をいくつか指定してグループ何々、と指定することにした。
あまり美しくはないがまぁ必要にして十分だろう。

ちなみにBlenderのレイヤという機能を発見してそれをグループ編集に便利に使っている。
レイヤというのは3D編集画面の下にあるツールバーのGlobalとかの切り替えコンボボックスの右にある 田田田田 田田田田 みたいなスイッチ。
全部で20個しかないみたいだけど。
そのままクリックするとそのレイヤだけが選ばれて他は非表示になる。複数選ぶときはシフトキー+クリック。
既にどこかのレイヤにあるオブジェクトを他のレイヤに移したいときは移動させたいオブジェクトを選んでからツールバーの”オブジェクト”から”レイヤ移動”を選ぶ(またはMキー)。
どのレイヤへ、みたいなダイアログがツールバーとおなじみたいな田田田田 田田田田 こういうのと一緒に出るので行き先をクリック。

Objにexportすると、レイヤの表示非表示関係なく全てのレイヤのオブジェクトが出力される。まぁそうでないと使えないんだけど。
posted by みこあいさ at 15:31| Blender

2012年05月31日

Blender 使い方メモ ミラーとかテクスチャとか

Blender 2.6使い方メモ。

1)
顔とか人体とか左右対称なものはミラーというのを使って作ると便利。
ミラーという機能があちこちにあるので惑わされるけど、ここでいうミラーはモディファイアというやつのミラー。
設定の仕方。例えば顔の場合。
元になる形としてUV球を追加。正面にして編集モードで左半分の頂点を削除。
モディファイアを追加。モディファイアというのは右側のマテリアルとかあるツールボックスのちっこいアイコンが並んでるとこのスパナのマーク。
追加→種類のポップアップが出るのでミラーを選択。

2)
モディファイアのミラーがついたまんまでもobj exportとかはできる。テクスチャも貼れる(UVマップの性質上同じところを繰り返し参照したり反転参照したりが問題ないのは当然か)。でも左右対称の半分だけのテクスチャを上手く描くのが結構難しい。
そのほか左右対称を微妙に崩したい等の理由でミラーを解除してほんとうに左右全部データがあるようにしたい場合。
オブジェクトを選んで、例のスパナアイコンでモディファイアを表示させる。適用ボタンクリック。これで左右対称データが実体化する。
モディファイアは消える。
オブジェクトモードでないとエラーがでて適用処理されない。

3)
テクスチャの張り方。
基本はオブジェクト選択→編集モード→Aで全頂点選択→左のツールから展開ボタンクリック→ポップアップから展開を選択→イメージ編集。

だけどあちこちに注意点がある。
まず展開するときに切り取り線がないとうまく展開されないことが多い。展開された形が変だと対応する絵が描きにくい。
それでつける切り取り線が「UV分割線」。
編集モードで辺選択モードにして、シフトキーを押しながら分割する線を選択。ほぼ球体みたいな顔の場合、前半分と後頭部で分けるのがよさそう。ぐるり一周選択する。
ぐるり一周選択できたら、左のツールパネルの「UV分割線をつける」ボタンをクリック。選択された辺が赤っぽくなる。
ここまで来たらAで全頂点選択。「展開」ボタン→ポップアップから展開を選択
これで展開されるはず。

4)
展開された情報はどこに出てるかというと、UV画像エディタ。これはどこにあるかといえばデフォルトでは出てない。
デフォルトだと編集画面の下はタイムラインぽいのが出てるけど、これって使うのは当分先っぽいのでこのスペースをUV画像エディタにする。
手順は横一列にツールが並んでるとこ(3D編集画面だとオブジェクトモード・編集モードの切り替えとかあるとこ)の一番左のアイコンをクリック。
種類がポップアップするのでUV画像エディタを選ぶ。

5)
UV画像エディタはいまいちよくわかんないけど、ぐりぐりさわっておぼろげにわかったことを描いとく。

デフォルトだとなんかレンダー結果イメージとか表示するようになってるっぽい。
ビュー、選択、画像って並んでるとこの「画像」ってことを押して新規とかやるとなんとかなるっぽい。もうどこかにあるはずなのにってときは同じ並びのちっこいピクチャのアイコンをクリックするとどれを表示するの?ってが出るみたいなんでそれっぽいのを選ぶ。

6)
UV画像エディタにメッシュが展開されたそれっぽいのが出たら今度はアタリを付ける。どうするかというと直接描くのが一番いいみたい。
「画像」ボタンを押すとメニューの一番上にImage Paintingという項目がある。これをチェックしてやると直接描けるモードになる。
直接描いたのが3D編集画面にリアルタイムの反映されるようにするためには、3D編集画面のいつもワイヤフレームとかソリッドとか切り替えてるところで「テクスチャ」を選ぶ必要がある。

7)
UV画像エディタに描くのに、いくらアタリとはいっても線の太さとか色とか多少は変えたい。
そういう画像エディタとしてのツールはどこにあるのか?これで凄い悩んだ。答えはUV画像エディタの一番左上にひっそりとある「+」ボタン。ボタンにさえ見えないほど地味。こいつをクリックして右にひっぱるとなんかそれっぽいのが色々出る。
かなり癖があるようだけど、フォトショとかいじってる人ならアタリの絵を描くくらいならなんとかなるレベル。

8)
アタリの絵を描いたら、それを外部のエディタで描いたり、きちんとマテリアルに貼り付ける必要がある。
ひょっとするとまずマテリアルに貼り付けてないと上のアタリ自体リアルタイムで見えないかも。このへん順序がまだよくわかんない。
まずファイルとして保存。
UV画像エディタの「画像」ボタンで別名保存とかそんな感じでpng保存する。
これで保存されるpngにはメッシュ情報がない。これだとアタリの絵だけで厳しいので、メッシュの絵も別に保存する。
UV画像エディタの「UV」ボタンを押して出るポップアップの一番上。Export UV Layout。これを選ぶと展開メッシュの絵を適当に透明度つけてpngにして保存してくれる。
保存した2つのpngを自分の使ってるビットマップエディタに2レイヤとして読んで、作業する。

9)
テクスチャが出来たら、それをマテリアルに貼り付ける。
対象となるオブジェクトを選び、右のマテリアルとかモディファイアとか選ぶアイコンのとこでテクスチャを選ぶ。
まだマテリアルがついてないときは先に付けておく。
テクスチャは空なので「+新規」で追加する。なんかクラウドとかいう雲みたいのが出るけど気にしない。
タイプ:クラウド となってるプルダウンをクリック。 Image or Movieを選ぶ。下のほうがごそっと変わって
新規:開く みたいなボタンが出る。これの開くを押して作ったpngファイルを指定する。

10)
テクスチャファイルの微調整がしたいとき、テクスチャ画像を外部のビットマップエディタで編集・更新したら、UV画像エディタの「画像」→画像の再読込でテクスチャの適用結果を確認できて便利。もちろん3D編集画面はテクスチャ表示モードになってないとダメ。



※まだわかんないので随時調べること

A)
展開したUVメッシュの位置をうまく調整する方法。UV画像エディタ上の点を複数選択するまではよくても複数のまま移動させる方法が不明。回転とかも操作方法不明。

B)
複数オブジェクトを1つの展開UVメッシュにする方法。Aがわかれば画像エディタ側でなんとか共通化できないでもないが。


2012/6/4 展開したUVメッシュの位置の調整の仕方が判明。 展開UVメッシュが表示されてる状態(頂点編集モード)で
頂点を選択、Rキーで回転、Sキーで拡縮、Gキーで移動。メニューをみたらUV画像エディタのメニューにはそういうコマンドはなかったけど。
Bで範囲選択Aで選択・解除も使ってうまく調整できそう。
posted by みこあいさ at 12:45| Blender