思いつくままを綴る雑記帳

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Blender Baking

以前(数年前・・)に某gameの装備modを作ったことがありますが
この前古いデータを覗いていたらその時のデータがありました。
Textureデータを見ていたら、あるわ・・あるわ・・不完全なnormalデータがわんさかと。
実はあの頃BlenderのBakingの事あまりよくわかってなくて・・・。
公式サイトのマニュアルを見ながら適当に作ってくっつけてたんですよね・・。
一目見てこれ違うだろ・・と思いつつもないよりはいいかという感じでmodにくっつけていたよね。

というわけで、BlenderのBakingについて少し・・。
基本的な説明は公式サイトのここ

通常は自分のマテリアルデータとして焼くと思いますが
幾つかのデータはそれでは使えるものになりません。
Normalもその内のひとつだと思います。
今回は猫さんなのでこれを使います。
Fig1.png
text objectで猫(cat)を作成しました。
text objectでExtrudeとDepthをいじって厚みを出してます。
これをMeshに変換した時に余分な処理を減らしたいので・・・。
このパラメータをいじりすぎると画の交差する所でNormalが食い込んだりするので注意が必要です。
Fig2.png
これとPlaneを用意します。
これらをBoolean Modifierで融合させるんですね・・。
Fig3.png
左上を見れば分かりますがいらない部分があるので、それは別途削除する。
Fig4.png
で、こんな感じに・・。
次に本題のNormalをBakeする素材を作ります。
Fig5.png
何も処理していないDefaultのPlaneです。
このPlaneにBake結果を書き込むためのTextureファイルを作ります。
右上にあるやつね。
単に新規作成しただけです。
それにDefault PlaneのUVを設定します。
用意はこれだけ。
別にマテリアルを作成したりする必要はない。
Normalファイルを作るだけなので・・。
次に、最初に作った猫文字付きのPlaneを選択して、続いてSHIFT選択で
このDefault Planeを選択して
Fig6.png
こんな設定でBakeすると・・。
では確認のためにDefault Planeにマテリアルを設定して
Fig7.png
作成したNormalを確認します。
Fig8.png
こんな感じです。
Default Planeに猫文字のNormalが出ています。

最後に、これをLoop cutしてHookを付けてアニメさせるとこんな風に・・。



続きを読む
スポンサーサイト

calc_face_angle/calc_vert_angle(改めcalc_edge_angle)

猫さんの拙い英語の理解力では
calc_face_angle: そのedgeを共有する2つのfaceの成す角度を返す。
calc_vert_angle: そのvertexを共有する2つのedgeの成す角度を返す。
という風に解釈していたのだが・・・。
Blenderの開発者のCampbellさんが言うには、そうではないとのこと。
calc_face_angleの場合:
これが猫さんのイメージの値。
returnvalue1.png

でも、実際にはこれが正解との事。
returnvalue2.png

猫さんには使い道がわからん・・というか、直感的にわからん。
実際にない線上からの角度なんて・・・。
まぁ、猫さんには必要のない関数ということで・・・。
calc_vert_angleについても、名称がcalc_edge_angleに変更になり
これまた直感的にわかりにくい答えが返るだけ・・・。
そして、両方とも対象が2つでなければエラー例外が発生するように・・。
益々持っていらねぇぇぇぇ関数に・・・。

返す値云々以前に対象を共有するedge/faceが2つの場合のみ値を返すという仕様の時点で使えねぇ。
この関数のために例外処理書くの?
2つ以外の場合に自分で計算しないといけないなら
こんな関数使わないで自分で計算する。

元々これ使えんの? と、調べたら使えなかったので・・・。
どこにも使ってないんだけどね・・・ぷっ。

これはあくまで個人的主観なので
これ使えるねと思われる方がいてもおかしくはありませんし、
それを否定するものではありません。

Vertex Angle

前回、投影に関する記事を書いたら
何となくObjectの輪郭に関する事を考えたので少し書きます。
Meshの周囲を取り巻く輪郭ですがEdgeが表現するものとFaceの稜線が
表現するものがあると思います。
又直接関連性のない物同士が遠近差を覗いて目視されて見えるものなど・・。
で、いろいろと考えたら面倒臭そうなので・・・。
途中で放棄して別の事を調べてました。
それはVertexのAngleです。(ここから本題・・・)
Blenderにはcalc_vert_angleというAPIがあります。
説明書きが詳しくないので詳細は不明ですが
vertexを共有する2辺の角度を取得すると・・・猫さんには読めますが・・・。
しかし、これちゃんと答えを返してなさそう・・・。
引数はないので、該当するvertexから呼び出すだけなんですが・・・。
ちなみにbmeshのAPIですが・・。
で、仕方がないのでmathutilのAPIを使ってangleを計算するのを作成。
これはvertexを共有する全てのedge間のangleの総和を計算します。

また、これに関連してvertexが閉じているか/開いているかを調べて
指定した選択パターンのvertexを選択する物も作ってみました。
閉じたvertexとは周囲を囲まれていないvertexの事、つまり外縁部のvertexです。

Addon形式にはしていません・・。
使う場合はText Editor画面に読み込んで該当object名称を書き換えてスクリプトを走らせると実行されます。
幾つかのパターンは検証しましたが万能かどうかは分かりません。

Blenderの作成物置き場(4Shared/MediaFire)にVertexAngle.7zというファイルがあります。
続きを読む

勘違いしないように(Knife Project)

タイトルに書いたようにBlenderのKnife Projectについてである。
公式サイトの説明には注意書きがあるが、今回の話はそれではない。
もっと最初の方に書いてある部分。
Outlines can be wire or boundary edges.
日本語版では
ワイヤーか境界辺を輪郭線に使えます。

使い方は下記URLを参照すればわかります。
Blender公式マニュアル

で、何が勘違いしそうなのかというとProjectの部分に注意です。
基本的に形状を投影した物を切り出しているのではない。
ちなみに何も加工していないCubeでやってみると
使用する物が選択されていないとなるはず。
使用可能なのは開いたMesh又はワイヤー形状です。
またKnife Projectで使用されるのは開いたEdgeと考えた方がいい。
MeshのCircleが使用できるのは基本的にワイヤーだから。
Monkey(Suzanne)がエラーにならないのは、あれは完全に閉じたMeshじゃないから。
閉じたMeshという点では殆どのデフォルトMeshは使用出来ない。

Monkey(Suzanne)で切り出して上手く外見が切り出せないのはそのせいです。
例えばCubeの全てのFaceを削除して枠組みだけにすれば切り出せます。
但し枠組みに沿った切り出しになるけどね・・・。
(部分的にEdgeを複製すれば、その部分だけを使用して切り出せる)

注意書きにありますが、分割されていないFaceに対して行うと上手く切り出せないと書かれていますが、その通りで。
但し、たくさん分割する必要がない場合が殆どだと思います。
2分割すれば綺麗に切り出せたりしますから。

お題はcatらしい

Blenderの次のバージョンのSplashの話。
お題はcatで募集しているらしい。
まぁ猫さんには関係のない話ですが・・・。
と、気にもしてなかったのですが。
昨晩、猫ねぇ・・と、ふと思い出しました。
で、おもむろに適当に作成・・・。

Cat.png

で、ここで中断・・・。
元々何も考えなしにやったので・・・。
で、少し考えて・・・適当にやったのがこれ・・・。

Cat2.png

尾、耳、目の周りは影です。
これでは到底応募できないので当然ボツですが・・・。
製作時間2時間の暇つぶし・・・。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。