SuiTechLog

Unity,Arduino,RaspberryPiなど、モノづくり系を気ままに書き残すブログ。

Houdini CGwiki サンプルを翻訳と解説。その2:Attribute transfer とcolour

勉強もかねてこちらを一個ずつ翻訳

Houdiniのシーンファイルはこちら

File:attribute_transfer_color_and_position.hip

 

 これまでと同じようにして、転送アトリビュートのリストにCdと入力しただけです。もし、複数のアトリビュートを転送したければ、半角スペースで区切ってください。例えばカラーとnormalとpscaleを転送したければ、「Cd N pscale」と入力します。

gridを赤色に、もう一方のsphereは緑色にするために、カラーノードを追加して、何がおこるか確認します

 

なぜ「Cd」なのか。Houdiniはprman(※1)から派生した多くの命名規則があります。Cdは「Colour diffuse」です。「P」はPosition,「N」はNormal、などです。

 

定義済みのhoudiniアトリビュートのリストはこちら(量に驚いています。私はこの中の10%程度しか使っていませんでした。)(※2)

 http://www.sidefx.com/docs/houdini14.0/model/attributes#idm140573562786112

 

比較のために、renderman SL 変数のリストはこちら。

http://renderman.pixar.com/view/shader-global-variables-tables

 

 

~~ 翻訳終わり ~~

 

補足解説。

※1.文中のprmanとはPhotoRealistic Render Manの略で、つまりピクサーが開発したレンダラーRenderMan の正式名称です。(正確には、RenderManはシステム、インターフェース全体のことを指して、皆がレンダーマンレンダーマンといっているレンダラー部分のコアは本来はPRManと呼ぶ・・・んだろうなあと思ってます。)

 

※2.これは14版なので、Houdini16版はこちら

Geometry attributes

 

 どうでもいいですけど、カラーをColourとつづっているので、イギリス英語ですね。

Houdini CGwiki サンプルを翻訳と解説。その1:Attribute transfer とposition

自分の勉強用にhoudini wikiを翻訳します。ただ、wikiなので、日々更新される可能性がありますので、そこまで保障はできません。単なるメモ程度のものです。

  

Attribute transfer と position

 

 

 sphereの座標値をgridのそれぞれのポイントの座標値へスムーズなフォールオフ(減衰)を与えた上で転送(Transfer)します。

1.gridノードを作成

2.sphereノードを作成

3.attribute transfer ノードを作成

4.attribute transferノードの第一引数にgridノードをつなぐ。第二引数にsphereノードをつなぐ

5.attribute transferノードのAttributeタブ 'Match P Attribute'にチェックを入れる

 

 ここで、いくつか注意点があります。(もういくつかの他のサンプルを試した後で戻ってきてもいいです。)

  • Pは位置座標を表すのに標準的に使われているアトリビュート名です。通常はポイントの位置座標を表すのに使われます。Mayaでは、これが頂点座標だと言うでしょう。mayaを使っている上では、めったにこれらを直接修正しません。(たいていは1レベル上の階層でオブジェクトトランスフォームを操作します。)Houdiniでは、全ての情報が下層レベルにあり、散らばせたり、乱雑に配置したりできます。
  • このセットアップでは、sphereから座標を読み込んで、その位置をgridの各ポイントそれぞれにフォールオフをかけて転送しています。もしフォールオフをかけなければ、元のgridはsphereの中心の単一ポイントへむけて全て消えるでしょう。(実際には、あなたがdistanceを変更し、ブレンドする前にこれが起こることがわかります。)
  • 「しかし、あなたは基本的に頂点を操作しているといっていますが、この手順がどうやってsphereのトランスフォームを魔法のように読み込んでいるのでしょうか?そして、そのgridの頂点はsphereの表面の全頂点にむけてワープするのではないでしょうか?」良い質問です。その答えは、houdiniデフォルトのsphere(primitive sphereと呼ばれています)は、mayaのnurbs sphereやpoly sphereのようではないということです。それはshpereモードでレンダリングされた1つのmayaパーティクルに近いです。すなわち、位置とスケールを持っていますが、表面を構成する頂点を持っていません。それを知ると、この手順にはすこし意味がでてきます。mayaでいうならば、私たちは(sphere型にビジュアライズされた)1つのパーティクルを読みこんで、その位置をgridの各頂点と比較し、それらの距離がとても近い時にそれら頂点をパーティクルに向かってワープさせます。
  • sphereSOPの'primitive type'ドロップダウンを見ると、houdiniには通常のポリゴン球とnurbs球も存在します。'match P attribute'のチェックは必須です。なぜならば、通常のユーザはこれを望まないからです。つまり彼らがカラーやその他のアトリビュートを転送することになりますが、実際に動くポイントを望まないのです。

~~ 翻訳終了 ~~

 

 つまるところ、アトリビュートの転送ノードを使うことで、今回は一定の距離に入ったポイントを対象に座標値を転送させて、吸いつかせるような表現を実現しています。これ以外にもtransferはいろんなアトリビュートを転送できるので応用範囲が広いです。

 

とくに難しいことはないので、追加で解説はなしです。

Unity スクリプトから複数のシェーダーの値を一気に変更する

概要

シェーダーに記述したフォグの数値を、複数のオブジェクトで変更しようと、スクリプトにシーン内のマテリアルの数だけ繰り返すスクリプトを書いたのですが

どうやらそれよりもっとイージーな方法があったようです。

 

Shader.SetGlobalFloat("パラメータ名", 値 );

 

続きを読む

Z77H2-A3 マザーボードでGeforce GTX 1050ti が動かない事件

事件概要

 今まで、Z77H2-A3 マザーボードにGTX670を刺しており、そろそろ流石に新時代のグラボにかえようとGTX1050tiを買ってきたときのことです。

いざ取替えさしてみたところ、ピッ・・・・ピッ・・・と10秒前後の間隔をあけてBeep音が鳴るだけで、BIOS画面からすすまないのです。

もちろんオンボードグラフィックボードや以前のグラボでは正しく動作するのです。

 

続きを読む

Unity 身体を交換するゲーム 英語版リリース English Version Chicken mini Game Released !!!!!!

 

英語版をリリースしました。English Version Chicken mini Game Released 

 

f:id:sui332015:20170603123215j:plain

 

Unity3Dで制作しています。

内容は日本語版と変わりありません。

翻訳をしていただいたTodor Nicolovさんに感謝します。

Maya Python メモ

よく使うMaya Python関数のメモ

cmds.ls() 

#カッコ内の条件でシーン内の○○の名前一覧を取得

例:

list = cmds.ls(sl=True)   #選択中のものの名前一覧がlistに入る

cmds.ls(" *:root ",type="joint")    #シーン内にある:rootという文字が入るジョイントを取得する

 

cmds.select("root")

#rootを選択

cmds.select("root",add=True)#rootを追加選択今まで選択したものが解除されない

cmds.select("root",deselect=True)#rootの選択状態を解除

 

cmds.listRelatives()


#指定したオブジェクトに関連するものを取得する

 

続きを読む

Houdini SOPノードについてメモ

Peak SOPノード

頂点を法線方向に移動(スケール)する

 

Attribute Promote SOP

AttributeをVertexからPointに転送

例:Cd(カラー)をPointからVertexに。

むろんVertexからPrimitiveや

PointからPrimitiveなども可能。

 

Clean SOP

隠れたPrimitiveや同じ位置に重なったPointなどをまとめて消去することができる。

例:Cubeをきれいに整列して積み上げた状態でCleanをかけると、外側のメッシュだけが殻のように残る。

 

続きを読む

13B-REWエンジン ターボ制御をCGでつくる ブースト計の追加

追加要望

というわけで、はい。ブースト計を追加しました。

不慣れなPhotoshopでブースト計をつくって。

メーターの動きは中村さんに口頭(ジェスチャー)も交えて伝えてもらった感覚で

作ってみました。

・・・というわけで、こんな感じです。

 

 WEBアプリケーションはこちら  Unity WEB App is here.  

f:id:sui332015:20170528171156g:plain

 

続きを読む

Unity Editor拡張 複数のオブジェクトからメッシュレンダラーをもったやつだけ選択したい!

事の経緯。

 空のゲームオブジェクトなども含まれた複雑な親子構造のFBXを読み込んで

meshrendererコンポーネントのもつプロパティ(cast Shadowsの設定など)をまとめて編集(multi-edit)したい。というお話。

 

で、普通にHierarchyからShiftおしながらまとめて選択すると、だいたいこうなります。

f:id:sui332015:20170528162646j:plain

 書いてある通りなんですが、meshrendererコンポーネントを持っていないオブジェクトも選択にまざっているので、multi-editできないよ。とのこと。当然空のゲームオブジェクトだったり、ボーンだったりmeshrenderer持ってないのも選択に混ざっちゃいますよね。

 

 手動で膨大な親子構造からmeshrendererをもつオブジェクトだけを選択するのはアホらしいので、Editorスクリプト作ってみました。そもそもヒューマンエラーがでそうですし。 

続きを読む