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

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-19

サルにもわかる Houdini copy stamp サルにもわかる Houdini copy stamp - Nao_uの日記 を含むブックマーク はてなブックマーク - サルにもわかる Houdini copy stamp - Nao_uの日記 サルにもわかる Houdini copy stamp - Nao_uの日記 のブックマークコメント

マンガ Houdini チュートリアルーーForEachーー マンガ Houdini チュートリアルーーForEachーー - Nao_uの日記 を含むブックマーク はてなブックマーク - マンガ Houdini チュートリアルーーForEachーー - Nao_uの日記 マンガ Houdini チュートリアルーーForEachーー - Nao_uの日記 のブックマークコメント


Houdini 基本を掘り下げる Houdini 基本を掘り下げる - Nao_uの日記 を含むブックマーク はてなブックマーク - Houdini 基本を掘り下げる - Nao_uの日記 Houdini 基本を掘り下げる - Nao_uの日記 のブックマークコメント

ExpressionからAttributeを参照する

参照したいAttributeを保持するコンポーネントの型に応じて、それぞれ以下の関数を使う。

・Point

float point (string surface_node, float point_number, string attribute, float index)

・Vertex

float vertex (string surface_node, float primitive_number, float vertex_number, string attribute, float index)

・Primitive

float prim (string surface_node, float prim_num, string attrib_name, float attrib_index)

・Detail

float detail (string surface_node, string attrib_name, float attrib_index)

  • 例:Primitive Attibute"center"の0要素目をforEachの別のノードから取り出す場合
    • prim("../each1/",$PR,"center",0)
トラックバック - http://game.g.hatena.ne.jp/Nao_u/20160819

2016-08-17

パラメーターのStringの所にエクスプレッションを書く方法 パラメーターのStringの所にエクスプレッションを書く方法 - Nao_uの日記 を含むブックマーク はてなブックマーク - パラメーターのStringの所にエクスプレッションを書く方法 - Nao_uの日記 パラメーターのStringの所にエクスプレッションを書く方法 - Nao_uの日記 のブックマークコメント

Solverノードを使って実際に超簡単なソルバーを作ってみる Solverノードを使って実際に超簡単なソルバーを作ってみる - Nao_uの日記 を含むブックマーク はてなブックマーク - Solverノードを使って実際に超簡単なソルバーを作ってみる - Nao_uの日記 Solverノードを使って実際に超簡単なソルバーを作ってみる - Nao_uの日記 のブックマークコメント

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

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"のグループを追加して、サブマテリアル名を入れると使えるらしい(未確認)

道路と歩道、交差点のプロシージャル生成動画 道路と歩道、交差点のプロシージャル生成動画 - Nao_uの日記 を含むブックマーク はてなブックマーク - 道路と歩道、交差点のプロシージャル生成動画 - Nao_uの日記 道路と歩道、交差点のプロシージャル生成動画 - Nao_uの日記 のブックマークコメント

ちゃんと作ればここまでできるみたい。道のりは遠そう…。

Siggraph 2012 街を作る動画 Siggraph 2012 街を作る動画 - Nao_uの日記 を含むブックマーク はてなブックマーク - Siggraph 2012 街を作る動画 - Nao_uの日記 Siggraph 2012 街を作る動画 - Nao_uの日記 のブックマークコメント

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

2016-08-05

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

Houdini Engienの入門動画。要登録


3番目の動画。

  • ジャンプ台の側面の作り方
    • 半円でジャンプ台のカーブを作る
    • LineをCopy->いらない点をDelete、で縦軸を作る
    • 出来上がった枠をjoinで重複した点を削除して、addでポリゴン化
    • Fuseで重複した頂点を削る
    • Copyで平行移動コピーして、Deleteで元ポリゴンを消したのちにReverseで反転し、Deleteで消したポリゴンとMerge
  • ジャンプ台のジャンプ面の作り方と色塗り
    • Copyで増やした根元の側面x2をSkinでつなぐ
    • Clipで端を切り取って(距離:D_XMAX*0.1)、Colorで色を付ける

【モデリング】vertexの結合の仕方(Fuseの使い方) 【モデリング】vertexの結合の仕方(Fuseの使い方) - Nao_uの日記 を含むブックマーク はてなブックマーク - 【モデリング】vertexの結合の仕方(Fuseの使い方) - Nao_uの日記 【モデリング】vertexの結合の仕方(Fuseの使い方) - Nao_uの日記 のブックマークコメント


Houdini Engine Basics for Unity - Castle Wall Pt3 Houdini Engine Basics for Unity - Castle Wall Pt3  - Nao_uの日記 を含むブックマーク はてなブックマーク - Houdini Engine Basics for Unity - Castle Wall Pt3  - Nao_uの日記 Houdini Engine Basics for Unity - Castle Wall Pt3  - Nao_uの日記 のブックマークコメント

[]Witcher 3 Blood and Wine architectural material Witcher 3 Blood and Wine architectural material - Nao_uの日記 を含むブックマーク はてなブックマーク - Witcher 3 Blood and Wine architectural material - Nao_uの日記 Witcher 3 Blood and Wine architectural material - Nao_uの日記 のブックマークコメント

建物の参考画像に。


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

いい崩れ方

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

2016-07-31

[]気分転換その3 気分転換その3 - Nao_uの日記 を含むブックマーク はてなブックマーク - 気分転換その3 - Nao_uの日記 気分転換その3 - Nao_uの日記 のブックマークコメント

シン・ゴジラ見てきた。

アセットの10式戦車が素敵だったのでやってみたら、思ってた以上に時間がかかってしまった。

ありものの素材を並べて10秒の動画をでっち上げるだけでもこんな手間がかかるんだから、CGの映画を作るのって果てしなく大変な作業なんだなぁ、と

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

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

2016-07-29

[]テクスチャを頂点カラーに転写 テクスチャを頂点カラーに転写 - Nao_uの日記 を含むブックマーク はてなブックマーク - テクスチャを頂点カラーに転写 - Nao_uの日記 テクスチャを頂点カラーに転写 - Nao_uの日記 のブックマークコメント

  • https://www.sidefx.com/forum/topic/18597/
    • vertexuv_to_point-2.hipnc
    • vopsopで、uvとcmapを取得してからcolormapに突っ込んでテクスチャをサンプリングし、outputのCdに入れることでテクスチャの模様の頂点カラーを生成

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

Game Development Toolset は SideFX が提供するゲームコンテンツ制作で便利なツール集。Github から提供されている。ここでは、そのインストール方法と主要なツールを紹介する。


[]VOPの中でアトリビュートを生成して値を入れる方法 VOPの中でアトリビュートを生成して値を入れる方法 - Nao_uの日記 を含むブックマーク はてなブックマーク - VOPの中でアトリビュートを生成して値を入れる方法 - Nao_uの日記 VOPの中でアトリビュートを生成して値を入れる方法 - Nao_uの日記 のブックマークコメント

  • https://twitter.com/_shohey_/status/567700950249242625
    • 値を入れるのはSet Attributeで。i1にptnum、valueに値を繋ぐ
    • アトリビュートの生成は add Attributeで。新規の時はこのノードで生成しないとSetできない。ノードが存在すればつなぐ必要はない

[]カーブ上の先頭からの距離を求める(1) カーブ上の先頭からの距離を求める(1) - Nao_uの日記 を含むブックマーク はてなブックマーク - カーブ上の先頭からの距離を求める(1) - Nao_uの日記 カーブ上の先頭からの距離を求める(1) - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20160730145641p:image

カーブ上の距離を求める準備段階として、一つ前の点との距離を新規Attributeで追加するPoint VOPを作るとこうなった。

  • ptnumをsubConst→importPoint(P)でひとつ前の頂点座標を取得
  • Pからひとつ前の頂点を引いてlengthで距離を計算
  • ひとつ前の頂点との差分はptnum==0で破綻するので、ptnumをcompare==0して、two Wayでptnum==0のとき0を返すように
  • addAttributeしておいたアトリビュートに、setAttributeで値を入れる。このとき、i1には頂点番号を入れる必要がある

[]カーブ上の先頭からの距離を求める(2) カーブ上の先頭からの距離を求める(2) - Nao_uの日記 を含むブックマーク はてなブックマーク - カーブ上の先頭からの距離を求める(2) - Nao_uの日記 カーブ上の先頭からの距離を求める(2) - Nao_uの日記 のブックマークコメント

You can get the length of a curve primitive with the arclen expression function. Example:

arclen(“../curve1”, 0, 0, 1)


You could also use a Resample SOP after the curve, choose the Maximum Segment Length option, specify a segment length, and use the resampled curve as a template geometry (second input) in the Copy SOP, using the box you wish to duplicate along the curve as the first input of the Copy SOP.

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

2016-07-27

[]気分転換その2 気分転換その2 - Nao_uの日記 を含むブックマーク はてなブックマーク - 気分転換その2 - Nao_uの日記 気分転換その2 - Nao_uの日記 のブックマークコメント

f:id:Nao_u:20160730122230p:image

Wiiバランスボードをつないでホバーボードっぽいものを試してみた。

VRにするとやっぱり酔うし、スノボ風に前後に足を並べると背後にターンするときに倒れそうで危なくて、正面に向くと安定するけど楽しさが減った。

いっそVRなしでやったほうが楽しいかもしれない。Zロールも使えるし。

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

2016-07-24

ポケモンGo ポケモンGo - Nao_uの日記 を含むブックマーク はてなブックマーク - ポケモンGo - Nao_uの日記 ポケモンGo - Nao_uの日記 のブックマークコメント

奥さんがはまった。Lv12になってマスターボールが使えるようになった

UnityはComputeShaderを試してる。コンパイルエラーが出ないのが不便だけど、インテリセンスは人をダメにするということを実感

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

2016-07-17

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

f:id:Nao_u:20160717225555p:image

地面に鏡を置いてdofでぼかすとそれっぽい絵が出ることがわかった

これのコースエディタをHoudiniで、とか


あとINSIDEクリアした

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