Nao_uの日記 このページをアンテナに追加 RSSフィード

2017-02-26

[]Terrainのテスト Terrainのテスト - Nao_uの日記 を含むブックマーク はてなブックマーク - Terrainのテスト - Nao_uの日記 Terrainのテスト - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20170227131215p:image

f:id:Nao_u:20170227131216p:image

Houdini16のTerrainを試してみてる。ちょっとづつコツがつかめてきた感じ。解像度を上げると一気に重くなるので、低解像度で大雑把に形を決めてから、最後に解像度を上げて仕上げるのがよさそう


f:id:Nao_u:20170227173520p:image

最初は草原と山で作ろうとしたけどちゃんと見せるのが難しかったので、誤魔化しの効きやすい雪山に修正。昔自前のエンジンでプロシージャル生成を試してた時も、雪山のほうがそれっぽく見えやすかった


f:id:Nao_u:20170227205338p:image

前回の作業中に落ちてデータが壊れたので、2km×2kmに範囲を倍増して作り直し。適当にノイズをブレンドして河を掘った後、階段をつけてから浸食で削って、法線を見て雪をブレンド。ノード構成もシンプルなので、このくらいなら慣れれば30分かからず作れそう


すごくお手軽にそれっぽい絵が出るのは楽しいんだけど、遠景はそれなりに誤魔化せても近づいた時のスケール感を合わせるのが難しい。あとUnityに持っていく方法を考えないと…。


f:id:Nao_u:20170311165449p:image

256x256のgridにマイナス方向のworleyNouseとプラス方向のWorleyNoiseを重ねて原型を作って、そこにturbNoiseとveinsを味付け程度に足して、岩肌っぽい絵を生成


これを膨らませたものを岩として地面に張り付けるのはどうか。

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20170226

2017-02-23

[]Houdini16 Houdini16 - Nao_uの日記 を含むブックマーク はてなブックマーク - Houdini16 - Nao_uの日記 Houdini16 - Nao_uの日記 のブックマークコメント

Houdini16が落とせるようになってた。


f:id:Nao_u:20170224000828j:image

複雑なモデルで何度割っても壊れない新しいbooleanが素敵


f:id:Nao_u:20170224000826p:image

ノードをつないで作った地形に浸食シミュレーションもかけられる。楽しい


f:id:Nao_u:20170224000827p:image

解像度を上げてみた。重いけど綺麗

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20170223

2017-02-06

[]煙レンダリング 煙レンダリング - Nao_uの日記 を含むブックマーク はてなブックマーク - 煙レンダリング - Nao_uの日記 煙レンダリング - Nao_uの日記 のブックマークコメント

丸2日くらいかけてレンダリングしたけど、200フレーム中の最初の50フレームは数時間で終わったのに、後になればなるほど以上に時間がかかってて、あまりに時間がかかりすぎるので150フレームくらいで止めた。何か設定を間違ってる気がする。

ライティング難しい…。

Introduction to Houdini - PyroFX for FumeFX Artists

煙の質感の違いはライティングの問題?

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20170206

2017-02-01

[]煙のレンダリング(3) Unityで爆発を出してみる 煙のレンダリング(3) Unityで爆発を出してみる - Nao_uの日記 を含むブックマーク はてなブックマーク - 煙のレンダリング(3) Unityで爆発を出してみる - Nao_uの日記 煙のレンダリング(3) Unityで爆発を出してみる - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20170205171104p:image

のチュートリアルの爆発を適当にレンダリングして、


f:id:Nao_u:20170205170915p:image

Unityに出してみた。

解像度512x512を50枚、非圧縮で21MBというとんでもないサイズのテクスチャなのに、画面に出すとボケてていまいちクオリティが低く見える。

煙へのライティング次第で見え方が全然違う。黒煙にするか白煙になるかもライティング次第だし、燃焼部の色は一次元のカラー補間で調整。爆発の動きもどこをどう触るとどう変わるのかを会得するには時間がかかりそう。道のりは遠い…。


トラックバック - http://game.g.hatena.ne.jp/Nao_u/20170201

2017-01-30

[]煙のレンダリング(2) 法線の描画 煙のレンダリング(2) 法線の描画 - Nao_uの日記 を含むブックマーク はてなブックマーク - 煙のレンダリング(2) 法線の描画 - Nao_uの日記 煙のレンダリング(2) 法線の描画 - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20170202224212p:image

out → mantra_ipr の右上の歯車アイコンから、Edit Rendering Parameters...を開く


f:id:Nao_u:20170202225650p:image

Mantra->Geometry->Compute Normals for Volumes を右側のrootにD&Dして追加する


f:id:Nao_u:20170202230613p:image

追加した Compute Normals for Volumes のチェックをONにする

mantra_ipr のExtra Image Planes でShading Normal(N)をチェックして法線を出力する設定に。

ついでにDepthも出してみる。

f:id:Nao_u:20170202225652p:image



f:id:Nao_u:20170202225653p:image

MPlayにレンダリングしたときにNに法線が出力されている。

ここからフィルタリングとか工夫する必要がある?

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20170130

2017-01-29

[]煙のレンダリング(1) 煙のスプライトシート生成 煙のレンダリング(1) 煙のスプライトシート生成 - Nao_uの日記 を含むブックマーク はてなブックマーク - 煙のレンダリング(1) 煙のスプライトシート生成 - Nao_uの日記 煙のレンダリング(1) 煙のスプライトシート生成 - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20170201215203p:image

レンダリングの手順:

(1) 適当に作ったSphereを選択した状態で、Pyro FX → Billowy Smokeをクリック

(2) レンダリングの為のカメラを作って、いい位置に置く

(3) カメラのviewタブのResolutionで解像度を設定

(3) Outのmantra_iprから、Valid Frame Rangeでレンダリングしたいフレームを選んで Render to MPlay を押すとMPlayウインドウにレンダリング結果が表示される


f:id:Nao_u:20170201221741p:image

レンダリング結果からスプライトシートを作る手順:

(1) MPlayのFileメニューから、Save Sequence As...を選択

(2) Filenameを設定して、Frame Rangeに書き出したいフレームの範囲を指定して、Saveを選ぶと連番ファイルが保存される

(3) imgのcomp1に入って、Fileノードを作る

(4) パラメータパネルのFileの右側のファイル選択ボタンを押すと、画像が選べる。先ほど保存した連番ファイルを選ぶ

(4) Composite View に切り替えると、フレーム指定することで連番ファイルの該当の絵が見える

(5) FileノードをMosaicノードにつなぐことで、連番ファイルをアトラス化できる。Images per Lineで一行の枚数、Max Images/Flameで全体の枚数を指定

(6)Mosaicノードを右クリックして、Saveを選ぶと生成した画像を保存できる

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20170129

2016-09-04

[]Flipによる水のシミュレーション Flipによる水のシミュレーション - Nao_uの日記 を含むブックマーク はてなブックマーク - Flipによる水のシミュレーション - Nao_uの日記 Flipによる水のシミュレーション - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20160904160835p:image

とりあえずチュートリアルだけ。DOPと連動して動く

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20160904

2016-09-03

[]VDB Fructure VDB Fructure - Nao_uの日記 を含むブックマーク はてなブックマーク - VDB Fructure - Nao_uの日記 VDB Fructure - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20160903233346p:image

やってみた。

計算重い。ボリューム化するときの解像度とか、切断側のプリミティブや分割数をちょっと間違うと簡単に帰ってこなくなる…。

切断プリミティブは閉じてる必要があるので、XZ平面に面が来るようにしたboxをMountain+Fractalで凹凸をつけてる

元ネタはこちら


[]VDB Fructureで板を割る VDB Fructureで板を割る - Nao_uの日記 を含むブックマーク はてなブックマーク - VDB Fructureで板を割る - Nao_uの日記 VDB Fructureで板を割る - Nao_uの日記 のブックマークコメント

VDB Fructureで割って、10000ポリゴンまでリダクションしたもの

f:id:Nao_u:20160904000330p:image

ギザギザの板を使ってBreakで割ったもの(394ポリゴン)

f:id:Nao_u:20160904000313p:image

ポリゴンモデルを作るのであれば、普通にポリゴンのまま割ったほうが早いし高品質なような。


ボリューム化したものは破壊前に継ぎ目が見えてしまう

f:id:Nao_u:20160904001115p:image

ポリゴンで割ったものだと継ぎ目は完全に一致する。

ちゃんと理解できてないだけかもだけど、ボリューム化するメリットがいまいち見えない…。

と思ったら、

VDB Fructureが必要な理由

f:id:Nao_u:20160904151737p:image

Breakで割るのは一回なら綺麗に割れるけど、何度も割るとポリゴンが壊れることが分かった。細かいポリゴンを細かいポリゴンで割り続けるのは問題があるらしい。

たぶん、VDB Fructureではこういうのが起こりにくいんだろう。

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20160903

2016-08-26

[]ビル壁面差し替えのノードの構成を整理メモ ビル壁面差し替えのノードの構成を整理メモ - Nao_uの日記 を含むブックマーク はてなブックマーク - ビル壁面差し替えのノードの構成を整理メモ - Nao_uの日記 ビル壁面差し替えのノードの構成を整理メモ - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20160826172256p:image

前回のビル構築は手探りで作っててノード構成やアトリビュートに無駄が多かったので、整理と理解のために作り直したので経過をメモ。


全体のノード構成

f:id:Nao_u:20160826172257p:image

  • attributeCreate1で、プリミティブにprimIdxという名前で$PRのプリミティブ番号を設定
  • create_PolyDataでForeachでprimIdx毎にループして、面ごとの高さと幅、回転のデータを生成
  • foreach1ノードで面に第二引数のモデルを割り当てる

第二引数の右側ツリーは適当。


create_PolyData(Foreachノード)の中身

f:id:Nao_u:20160826172258p:image

  • polyframe1 で法線Nを生成
  • create_center で$CEX,$CEY,$CEZを使ってcenterという名前のアトリビュートにプリミティブの中心をセット
  • vop_points_create_sideVec で、VOPを使って横方向の基準ベクトルを生成(ポリゴン毎の幅を計算するのに使う)
  • vop_pimitive_create_size でポリゴンの幅と高さをプリミティブのアトリビュートとして計算
  • create_rotY で、ポリゴンのY軸回転の向きを atan2(@N.x,@N.z) で計算

vop_points_create_sideVec

f:id:Nao_u:20160826172259p:image

Y軸ベクトルとNの外積を取ってるだけ。

add attributeで生成して、set attributeに値を設定。setはi1にptnumを入れるのを忘れないように。


vop_primitive_create_size

f:id:Nao_u:20160826172300p:image

各頂点からcenter(ポリゴン中心)を引いたベクトルを、法線とsideVecそれぞれ内積をとって、最大値から最小値を引くことで幅と高さを求めて、プリミティブのアトリビュートに突っ込む

get attiributeはinputを「First Input」にするのをよく忘れるので注意。

foreach1(生成した面の情報を使って壁面を並べる)

f:id:Nao_u:20160826172301p:image

第2引数に生成したプリミティブのアトリビュートを使ってtransformするだけ。

prim("../each1/",$PR,"size",0) とかでeach1ノードの値をとってきてるが、こんなのでいいのか?という感覚が。もうちょっといいやり方はないものか。

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20160826

2016-08-20

[] 2016-08-20 - Nao_uの日記 を含むブックマーク 2016-08-20 - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20160820170410p:image

ビルの壁面の構築の仕方を変えてる。

先週はcopy SOPで縦横に並べて反転して裏返す、みたいなことをやってたが、今回は元プリミティブのそれぞれのポリゴンの大きさと向きを調べて、1x1mで構築した壁面をちょうどいいサイズに拡縮してして貼り付けている。

f:id:Nao_u:20160820170411p:image

なので、元プリミティブを変えるだけでビルの形を任意に変えられるようになった。(ただ「ポリゴンが地面に垂直」という前提だけは持ってる)

先週より見た目は地味だけどHoudiniの使い方としては進歩があったはず


Foreach SOPの使い方がだいぶわかってきたおかげで柔軟にモデル生成ができるようになった。

最初はAttribute Createだけでそれぞれのポリゴンの縦横サイズを$BBXなどから強引に縦横のサイズを出そうとしていたが、あまりにめんどくさいのでいっそVOPを使ってポリゴン重心とtangentから横幅を求めたほうが簡単、ということでVOPも自然に使えるようになってきあたりは収穫。


だんだんSOPノードとエクスプレッションだけで頑張るよりも、素直にVEXで組んだほうが早い、という感覚になってきた。そのうちWrangle書いたほうが早い、ということになってきそう。

最初は何をするにしてもそんなめんどくさいことしなくても何かうまいやり方があるのでは?と思ってたけど、柔軟性を考えるとプログラムを組むのと変わらない粒度でVEXで捏ね回すことになってくるのかな。

今日のハマりポイント

  • Attribute VOPの中でアトリビュートを足したいときは、Add Attribute と Set Attribute を組み合わせ必要がある。Addはデフォルト値は設定できるが、値は足せないっぽい?
  • Get Attribute や Set Attribute を使うときは、i1にptnumを入れないと、欲しい番号に出力されない。これでずっとはまってた
トラックバック - http://game.g.hatena.ne.jp/Nao_u/20160820

2016-08-14

[]新ビル建設中 新ビル建設中 - Nao_uの日記 を含むブックマーク はてなブックマーク - 新ビル建設中 - Nao_uの日記 新ビル建設中 - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20160814230448p:image

プロシージャル生成でビルのアセットを作り中。

入口のところだけパーツを変えたりなど、どう組めばいいか?

現実のビルと比べて単調に見える理由

  • 一階部分は高さもデザインも違うものが多い
  • 最上階のところも高さが違っていたり、意匠が入っている
  • 側面の窓の構成が違ったり、そもそも窓がなかったりも
  • 窓のデザインのパターンを増やす必要がある
  • エッジ部分の意匠もいろんなパターンがある

この辺りも考慮して、パターンを増やせるアセットが必要

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20160814

2016-08-13

[]ビル破壊+Unityでレンダリング ビル破壊+Unityでレンダリング - Nao_uの日記 を含むブックマーク はてなブックマーク - ビル破壊+Unityでレンダリング - Nao_uの日記 ビル破壊+Unityでレンダリング - Nao_uの日記 のブックマークコメント

既存のアセットをHoudiniで破壊したものをfbxでUnityにそのまま出力。


ちゃんとした破壊感を出そうと思ったら、単にパーツをばらすのでなく、構造物の中身や強度を考慮した骨組みをちゃんと作る必要がありそう。

あと、ボロノイの形がそのまま出てしまうのも確かに気になる。Glueの強度を変えたものでつながりっぱなしになるパーツなどをうまく組むべきか。


fbx化したときに、アニメーションの終了あたりでくるくる回ってしまう破片が出てたが、原因は不明。


fbxを読み込んでマージする方法

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20160813

2016-08-07

[]家 家 - Nao_uの日記 を含むブックマーク はてなブックマーク - 家 - Nao_uの日記 家 - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20160807154844j:image

f:id:Nao_u:20160807154845j:image

HoudiniでCookieで抜くと、Unityに持っていったときにUVが壊れる。

NormalとTangentをインポート時に生成すると再計算したところだけは治るので、FBXに吐かれているデータが壊れてる?


[]崩れる壁 崩れる壁 - Nao_uの日記 を含むブックマーク はてなブックマーク - 崩れる壁 - Nao_uの日記 崩れる壁 - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20160807220745j:image

たくさん積んだブロックを物理計算に突っ込むやり方を模索中

  • オブジェクトの中に、固めたい単位でpeace0 みたいな連番の名前を付けて、setup_packed_primsで処理する
  • Glue付きのも同様の方法で行けそう

expressionを使用して数値を文字列に組み合わせる

ftoa --- 数値を文字列に変換

ftoa(number)

//sample

 タイムが20frameの場合

 `ftoa($F)`Frame = 20Frame

メモ

Copyで増やしたboxのそれぞれのプリミティブに peace0 みたいな連番の名前の文字列attributeを割り当てたいときは、

attribute Create で index という名前で

($PT-2)/8

としたあと、

peace`@index`

という書き方ができる。たぶんもっといいやり方がありそうだけど。

参考リンク

最初は本のやり方を参考にしてたが、AutoDopNetwork に入れるほうが管理はしやすそう

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20160807

2016-08-06

[]Houdini Engineで使えるアセットを作る Houdini Engineで使えるアセットを作る - Nao_uの日記 を含むブックマーク はてなブックマーク - Houdini Engineで使えるアセットを作る - Nao_uの日記 Houdini Engineで使えるアセットを作る - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20160806172410p:image

Houdini Engineでジャンプ台アセットを作ってみた。Houdiniで作ったアセットを使って、Unity上でカーブ具合やポリゴンの分割数などのパラメータを調整できる。


http://www.gametutor.com/live/tutorials/houdini/intro-procedural-asset-creation/ の、カーブ付きのジャンプ台を参考に。

このくらいの単純な形のものでもいろんな作り方ができるため、今の段階では実際に手を動かしてみてわかることが多いのでやる価値が大きいと実感。

  • ハマりポイント
    • 側面のポリゴンを張るのにカーブと直線をaddで組み合わせるときに、頂点の順番が重要だった。組み合わせるときは注意。
    • 側面から引っ張って台の面を生成するとき、SweepはできるがSkinはうまくいかなかった。頂点を組み合わせて面を張るあたり、まだ理解できてないことがありそう
    • Houdiniでは側面が見えてるが、Unityに出力してみると側面のポリゴンがなかったり、裏面になってたりしてた。
      • →最後にFacetを噛まして、Cusp Polygonsで65度を設定すると通った。三角形分割が必要

コリジョンモデルの出し方

  • "collision_geo"という名前のグループで、別途モデルを出す
  • コリジョンモデルはマテリアルごとに分割されている必要はないので、途中経過のモデルを出すほうがポリゴン数が少なくて済む。リダクションして出すことも可能
  • UnityのHoudini Engine→Setting Window→Advancedの項目に、コリジョンやマテリアルを出したいときのグループ名が記述されているので、それに合わせる

マテリアルの出し方

  • "unity_material"という名前のグループを生成して、stringにUnityで使いたいマテリアル名を入れる
  • Unity側では、Assets→Resourcesフォルダにリソースを入れておくと、Rebuild時にここから検索して割り当てられる。見つからなければ生成時にエラーが出る
  • SubStanceのマテリアルを使いいときは、"unity_sub_material_name"のグループを追加して、サブマテリアル名を入れると使えるらしい(未確認)
トラックバック - http://game.g.hatena.ne.jp/Nao_u/20160806

2016-07-30

[] 2016-07-30 - Nao_uの日記 を含むブックマーク 2016-07-30 - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20160731225730p:image

ようやく道を回転で捻ることができるようになった。これでレースゲームのコースやジェットコースターのレールが作れる。カーブ上に球をcopyで置くことで点に回転の情報を持たせられるようにして、球の集合をadd→convertでカーブに再度変換し、upベクトルとNを持たせた状態でsweepする。


f:id:Nao_u:20160731225729p:image

とりあえずノードの構成をメモ。とはいえ、このくらいはさくっと組めるようになりたい。なんかUVがずれてるのはまた次回。

どうやってHoudiniEngineに持っていくのかも試さないと。

トラックバック - http://game.g.hatena.ne.jp/Nao_u/20160730