Houdini シーン内の各種コンテキスト

Scene以下には、何種類かのコンテキストがある。

ch

モーションやオーディオを処理するコンテキスト

img

画像合成のコンテキスト。
非常にパワフルな画像合成をこの中で行える

obj

シーン内オブジェクトを処理するコンテキスト

out

レンダリング処理のコンテキスト

part

パーティクル処理のコンテキスト

shop

シェーダ処理のコンテキスト

vex

Houdiniの高速スクリプト言語。
GUIでラップされていて、ビジュアルプログラミング(VOP)での構築もできる。

Houdini Network Viewの使い方

見ている場所のレベル

Network View右上に表示されている

20140413_03_0
Sceneレベル表示中

ビュー操作

スペースキー+
LMB/MMB = 移動
RMB = 拡大縮小

ノードのフラグ操作

ノード右側の青いエリアは表示のオンオフ
左側の緑のエリアはビューポート内での選択の可否を決定する

ノードの整頓、再配列

Lキーを押すことで、再配置される

ノードのコネクション作成/削除

ノード上下にあるコネクタをクリックし、続けて接続先をクリックで接続
コネクションを表すラインの上で右クリックからDisconnectで接続解除

ノードの内側に入る

ノードを選択し、Iキーを押す
ノードをダブルクリック
ポリゴンメッシュなどをダブルクリックすると、Geometryレベルに入る

20140413_03_1
ジオメトリレベル表示中

Houdini オブジェクトの作り方

インタラクティブ作成

シェルフからBoxやSphereなど、任意のオブジェクト作成ボタンを選択。
ビューポート内で作成したい場所にカーソルを置き、左クリックで作成。
この時、Shiftを押しながらカーソルを動かすとY方向の作成場所を指定できる。Y位置が決まったらShiftを離し、任意の位置へカーソルを移動して左クリックで作成できる。

原点作成

インタラクティブ作成中に左クリックを押さず、Enterキーを押すことで原点に作成できる。

Network Viewでノードを直接作成

Network View上で Tabキーを押し、FilterでBoxなどと入力し、フィルタ結果にあるBoxをクリックすることでノードを作成。
View内での配置先を決め、左クリックで決定すると、オブジェクトが原点に作成される。

Houdini 基本

データ階層に関して

20140413_04_1

root直下にはch,objなどの大きなカテゴリがあり、その中に各種ノードがぶら下がる。
オブジェクトは、トップが配置情報(Mayaでいうとtransformノード)
下に実際のメッシュ形状など、オブジェクトの振る舞いを決定づけるノード群がぶら下がる。(MayaでいうとShapeノード)
この中には編集履歴となるノードが並ぶ。

Network View

ノード同士の関連を見るには、Network Viewを使う
はじめに見えているのはオブジェクト階層と呼ばれる階層。
オブジェクト階層には
基本的には、ノードのタブルクリックでそのノードの中に入る。

20140413_04_2

↓ ダブルクリック

20140413_04_3

box1がボックスの初期形状を決めるノード
polyextrudeで面の押し出しを2回行い、そこで作られた形状の表面に沿うように、scatterノードを使って点を発生させている。

上位階層に戻るにはNetwork View左上の矢印を使う

20140413_04_4

または、以下の操作でも階層を行き来できる。

選択ノード内に入る i
一つ上の階層に上がる u

他のNetwork Viewホットキー

L 再レイアウト
A 全選択

など、後で別の項にまとめるかも

バージョン管理ツールを導入した

作業場にバージョン管理ツールを導入した。
プログラムの世界では当たり前に用いられている Subversion という Linuxアプリと、TortoiseSVN というWindowsアプリを組み合わせて使う。
サーバのファイル構成をミラーリングのようなことをしつつローカル環境内で作業できるので、作業PCのHDDが逝っても、サーバが生きてればデータの復旧が出来るし、その逆もまたしかりで、もの凄く安心。
今回、この設定でいくつか躓いたので、今後また同じような状況に直面したときのためにメモをとっておく。

■参考サイト
http://fedorasrv.com/subversion.shtml

・httpd.conf
apacheの動作を制御する設定ファイル。
IP単位でのアクセス制御とか、個別ユーザのディレクトリ(http://domain/~userName)ではなく、ドメインへの直接のアクセスをした場合に表示されるページの置き場だとか、色々設定できる。
その辺の説明を読みながらいじれば何の問題もない

・subversion.conf(鬼門)
ApacheにおけるSubversionの動作を決める設定ファイル
Subversionをapache経由で動かす場合、apache側がSubversionを認識できていなくてはいけない。
指定ディレクトリへのアクセスがあった場合、apacheを使ってデータの出し入れを行うように設定する。

(1)<Location /repos>
SVNParentPathを使う場合、後ろから2番目のディレクトリに相当するフォルダ名を指定。
SVNPathを使う場合はちょっと不明。(たぶん、上記と同じ考え方で良い)
Locationの後に書かれたディレクトリは、実際にこのリポジトリにアクセスする際に使われる文字列で、実体を持っていなくても構わない。

(2)SVNParentPath /var/www/svn
SVNParentPathは、プロジェクトをまとめているフォルダの指定
SVNPathは、各プロジェクトを羅列していく場合に使う。だいたい、面倒なので、SVNParentPAthを使うのがよさそう。

(3)
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 192.168.1.0/24 ← 内部ネットワークアドレスを指定(範囲指定)

Orderは、大ざっぱな許可条件と拒否条件の評価順。
deny,allowであれば、先に拒否する条件を評価し、あとからピンポイントで許可設定を行う。
allow,denyであれば、先に許可する条件を評価し、あとからピンポイントで拒否設定を行う。
上の例の場合は、先にまず、すべてを拒否した後でローカル内のアクセスを全許可している。
各項目の頭文字は、大文字でも小文字でも良いようだ。

(4)
<LimitExcept GET PROPFIND OPTIONS REPORT>

Require SSL connection for password protection.

SSLRequireSSL

AuthType Basic
AuthName “Authorization Realm”
AuthUserFile /etc/httpd/conf/.htpasswd
Require valid-user
</LimitExcept>

SSLRequireSSLは、アクセスをSSL接続専用にする。
AuthType Basicは、ベーシック認証と呼ばれる認証によってリポジトリへのアクセスを行う宣言(古典的なWEB認証と同じ)
AuthNameは、認証ウインドウに表示するメッセージっぽい。
AuthUserFile は、アクセス用パスワードファイルのパスを記入。
Requireは、どのユーザーのパスワードを有効化し、認証を通すか設定する。
ここで指定している .htpasswd は以下のコマンドで生成できる。

htpasswd -c [FILE PATH] [USER NAME]

-b をつけた場合は以下のように指定し、パスワードの入力も同時に行える。

htpasswd -c -b [FILE PATH] [USER NAME] [PASSWORD]

この .htpasswd は、通常のWEB認証の物とは別に作成しても良く、リポジトリ単位で個別に生成するようなことも可能っぽい。

(5)
[root@fedora ~]# mkdir /var/www/svn ← リポジトリ格納ディレクトリ作成
[root@fedora ~]# chown apache:apache /var/www/svn ← リポジトリ格納ディレクトリ所有者をApache実行ユーザーに変更
[root@fedora ~]# /etc/rc.d/init.d/httpd reload ← Apache設定反映

新しく作成するリポジトリ格納ディレクトリは、apache経由でアクセスする場合、オーナーとグループをapacheにしておく必要がある。
また、restorecon -R [REPOSITORY PATH] や chcon -R [REPOSITORY PATH] を使い、SELinux向けの設定を行う必要がある。(SELinuxについては詳しく知らない)

・ssl.conf
その辺の説明を読みながらやれば問題はない。
設定は、しっかり全部の問いに答えた方が止さそう。

今回一番詰まったのはSubversionの(1)。
非常に単純だけど、わかりにくかった。
エラーも、403 forbiddenErrorだし、Permission deniedと表示されるから、SELinuxやhttpd.confあたりに問題があると思い込み、酷く無駄な時間を過ごしてしまった。

とりあえずこれで、バージョン管理システムが導入できたので、明日はどのようにリポジトリを構成するかしっかり考えよう。