2011年9月27日火曜日
Houdini Automatic BallRolling System
ポジションアニメーションを与えると自動で転がるシステムです。
クォータニオンを使っているので、どの方向にもいつでも回転できる所がポイントです。
こんなシステム使う仕事一生なさそうだけど、、、
Tweet
2011年9月26日月曜日
Recursive Tree in maxscript
先週末、今週末と「スクリプトのすすめ」の続きを、と思ったのですが、
友人の仕事がピンチ!事で少しお手伝いをさせて頂いておりました。
その為全く時間が無く、更新できずでした。
飽き性の自分ですが、タイムラプスに夢中で飽きたわけでは無いです。。。
今回のヘルプで、出来たスクリプトありますのでご紹介。
木みたいな構造を組んだオブジェクトを作るスクリプトです。
ブランチの数、点滅のタイミング、Lineの太さ 、アニメーションカーブ等を操作出来るようになっています。
四角いオブジェクトを繋ぐLineはLinkedXformでつながっていてオブジェクトの位置の変更も可能です。
枝が分かれて先からまた分かれて、、、を繰り返して階層構造になっていくので
その為の再帰関数を書いています。
「スクリプトのすすめ」でも解説できたらと思います。
実は、もうそろそろオムニバスを辞めてから、もうすぐ1年になります。
多分1年前の自分ではこれは作れなかった。
この1年色々勉強でき、それが在ってのこのツールなので、自分自身成長出来た、と思いもかけず
認識出来る事になり、少し嬉しい今日この頃でした。
Tweet
友人の仕事がピンチ!事で少しお手伝いをさせて頂いておりました。
その為全く時間が無く、更新できずでした。
飽き性の自分ですが、タイムラプスに夢中で飽きたわけでは無いです。。。
今回のヘルプで、出来たスクリプトありますのでご紹介。
木みたいな構造を組んだオブジェクトを作るスクリプトです。
ブランチの数、点滅のタイミング、Lineの太さ 、アニメーションカーブ等を操作出来るようになっています。
四角いオブジェクトを繋ぐLineはLinkedXformでつながっていてオブジェクトの位置の変更も可能です。
枝が分かれて先からまた分かれて、、、を繰り返して階層構造になっていくので
その為の再帰関数を書いています。
「スクリプトのすすめ」でも解説できたらと思います。
実は、もうそろそろオムニバスを辞めてから、もうすぐ1年になります。
多分1年前の自分ではこれは作れなかった。
この1年色々勉強でき、それが在ってのこのツールなので、自分自身成長出来た、と思いもかけず
認識出来る事になり、少し嬉しい今日この頃でした。
Tweet
2011年9月24日土曜日
2011年9月18日日曜日
2011年9月17日土曜日
2011年9月15日木曜日
2011年9月14日水曜日
2011年9月13日火曜日
scriptのすすめ5 ~カラー値とマテリアル~
今回はカラーとマテリアル周りをやっていきましょう。
その前に、少しプロパティの説明を。
以前、showproperties $ を紹介しましたが
これは、$(選択オブジェクト)の持っているプロパティをリスナーに表示してくれるメソッドでした。
maxでは、様々な値は階層構造になっています。
例を出すと、
$.pos.controller.X_position.controller.value
$.material.diffuseの様に、ドットで区切って階層を潜ってアクセスできます。
少し特殊ですが、こんな書き方もできます。
$.parent.rotation.contoller選択オブジェクトの親の回転のコントローラーにアクセスできます。
(親オブジェクトが無い場合はエラーになると思います。)
Twitterでも少し書きましたが、showpropertiesはどの階層でも使えるので
showproperties $.parent.materialの様な書き方もできます。
(プロパティを持たない場合はエラーになります。)
では、前回のスクリプトで作ったオブジェクトのワイヤフレームの色を変えてみようと思います。
別ソフトで作った多くのオブジェクトをmaxにインポートした場合、全て同じワイヤーフレームの色で
見づらいなんて事が起きますね。
他のソフトはそれがデフォルトですが、max育ちの自分にはあーやだやだってな感じです。
なので、ランダムにカラーを割り当てようと思います。
for o in selection do
(
Rr= random 0 255
Rg= random 0 255
Rb= random 0 255
o.wirecolor = color Rr Rg Rb
)
カラーの値の基本は、
color 赤 緑 青
の様に書きます。前回同様ランダムを3つ用意したのはRGBに全て同じ値が入ると
グレースケールになってしまうからです。逆にそのようにしたい場合は同じランダム値を
アサインすると良いと思います。
では、次にマテリアル版です。
maxではオブジェクトが作られた段階では、何もマテリアルが割り当てられていないので
そこから書く必要があります。
for o in selection do
(
Rr= random 0 255
Rg= random 0 255
Rb= random 0 255
m = standardmaterial()
m.diffuse = color Rr Rg Rb
m.selfillumination = 100
o.material = m
)
ついでに、自己照明の値も100にしてみました。
まず、スタンダードマテリアルを用意してその値を変更し
最後に選択オブジェクトに割り当てするといった流れです。
今回はこの辺で。
次回はアニメーション周りを解説したいと思います。
Tweet
その前に、少しプロパティの説明を。
以前、showproperties $ を紹介しましたが
これは、$(選択オブジェクト)の持っているプロパティをリスナーに表示してくれるメソッドでした。
maxでは、様々な値は階層構造になっています。
例を出すと、
$.pos.controller.X_position.controller.value
$.material.diffuseの様に、ドットで区切って階層を潜ってアクセスできます。
少し特殊ですが、こんな書き方もできます。
$.parent.rotation.contoller選択オブジェクトの親の回転のコントローラーにアクセスできます。
(親オブジェクトが無い場合はエラーになると思います。)
Twitterでも少し書きましたが、showpropertiesはどの階層でも使えるので
showproperties $.parent.materialの様な書き方もできます。
(プロパティを持たない場合はエラーになります。)
では、前回のスクリプトで作ったオブジェクトのワイヤフレームの色を変えてみようと思います。
別ソフトで作った多くのオブジェクトをmaxにインポートした場合、全て同じワイヤーフレームの色で
見づらいなんて事が起きますね。
他のソフトはそれがデフォルトですが、max育ちの自分にはあーやだやだってな感じです。
なので、ランダムにカラーを割り当てようと思います。
for o in selection do
(
Rr= random 0 255
Rg= random 0 255
Rb= random 0 255
o.wirecolor = color Rr Rg Rb
)
カラーの値の基本は、
color 赤 緑 青
の様に書きます。前回同様ランダムを3つ用意したのはRGBに全て同じ値が入ると
グレースケールになってしまうからです。逆にそのようにしたい場合は同じランダム値を
アサインすると良いと思います。
では、次にマテリアル版です。
maxではオブジェクトが作られた段階では、何もマテリアルが割り当てられていないので
そこから書く必要があります。
for o in selection do
(
Rr= random 0 255
Rg= random 0 255
Rb= random 0 255
m = standardmaterial()
m.diffuse = color Rr Rg Rb
m.selfillumination = 100
o.material = m
)
ついでに、自己照明の値も100にしてみました。
まず、スタンダードマテリアルを用意してその値を変更し
最後に選択オブジェクトに割り当てするといった流れです。
今回はこの辺で。
次回はアニメーション周りを解説したいと思います。
Tweet
2011年9月4日日曜日
scriptのすすめ4 ~forループとrandom関数~
forループの解説です。
maxscriptで使うforループの書き方は、基本的にはこのような↓2種類しかありません。
for i = 1 to 100 do
for o in selection do
場合によっては、iやoやselectionが別のものに置き換わったりしますが。
(以前書きましたが、iやoは何の文字でも良いです。)
では、forループでboxを10個作ってみましょう。
for i = 1 to 10 do
(
box()
)
これでは、同じ場所に出来てしまうので、一個ずつ位置をずらします。
for i= 1 to 10 do
(
b=box()
b.pos = [i*25,0,0]
)
forループの中では、iという値を使うことが出来ます。
iの値はforループの回数毎に、1,2,3.....10と順番に変化していくので
上記の様なことが出来ます。
とこんな感じで基本は出来ました。
次にランダム関数を使ってみましょう。
ランダム関数は、実行される度にランダムな数字を返すメソッドです。
書き方は以下の様な感じです。
random 最小値 最大値
random 1 20 -- 1から20のうちのランダムな値を返す。
random 0.2 25.5 -- 0.2から25.5のうちのランダムな値を返す。
なぜ、2つ例を出したかというと、整数か小数点という違いです。
欲しいランダムな値を、整数値が欲しい場合は整数で書き、
小数点が欲しい場合は、小数点で書かないといけません。
では、boxをランダムに平面状に並べてみます。
for i = 1 to 10 do
(
r = random -100 100
b = box()
b.pos = [r,r,0]
)
思った結果と違うかと思います。
これは、b.pos = [r,r,0]と書いてあるように、xとyの座標が同じランダム値が
入っている為に上記の様な結果になってしまいます。
なので、
for i = 1 to 10 do
(
r1 = random -100 100
r2 = random -100 100
b = box()
b.pos = [r1,r2,0]
)
この様に書くと望んだ結果になるかと思います。
ランダム関数は同じ書き方をしても、毎回毎回ランダムな値を返します。
ランダム関数を使うと、やっとスクリプトっぽい感じ(自動で行っている感)が
出てくると思います。
今回はこの辺で。
Tweet
maxscriptで使うforループの書き方は、基本的にはこのような↓2種類しかありません。
for i = 1 to 100 do
for o in selection do
場合によっては、iやoやselectionが別のものに置き換わったりしますが。
(以前書きましたが、iやoは何の文字でも良いです。)
では、forループでboxを10個作ってみましょう。
for i = 1 to 10 do
(
box()
)
これでは、同じ場所に出来てしまうので、一個ずつ位置をずらします。
for i= 1 to 10 do
(
b=box()
b.pos = [i*25,0,0]
)
forループの中では、iという値を使うことが出来ます。
iの値はforループの回数毎に、1,2,3.....10と順番に変化していくので
上記の様なことが出来ます。
とこんな感じで基本は出来ました。
次にランダム関数を使ってみましょう。
ランダム関数は、実行される度にランダムな数字を返すメソッドです。
書き方は以下の様な感じです。
random 最小値 最大値
random 1 20 -- 1から20のうちのランダムな値を返す。
random 0.2 25.5 -- 0.2から25.5のうちのランダムな値を返す。
なぜ、2つ例を出したかというと、整数か小数点という違いです。
欲しいランダムな値を、整数値が欲しい場合は整数で書き、
小数点が欲しい場合は、小数点で書かないといけません。
では、boxをランダムに平面状に並べてみます。
for i = 1 to 10 do
(
r = random -100 100
b = box()
b.pos = [r,r,0]
)
思った結果と違うかと思います。
これは、b.pos = [r,r,0]と書いてあるように、xとyの座標が同じランダム値が
入っている為に上記の様な結果になってしまいます。
なので、
for i = 1 to 10 do
(
r1 = random -100 100
r2 = random -100 100
b = box()
b.pos = [r1,r2,0]
)
この様に書くと望んだ結果になるかと思います。
ランダム関数は同じ書き方をしても、毎回毎回ランダムな値を返します。
ランダム関数を使うと、やっとスクリプトっぽい感じ(自動で行っている感)が
出てくると思います。
今回はこの辺で。
Tweet
2011年9月1日木曜日
Houdini CardStick System
Houdiniでこれをやるのに3日間色々調べたり、試行錯誤しようやく出来た。
maxなら5分で出来ましたorz
でも、ベクトルとクォータニオンの勉強になったので良しとします。とポジティブな書き込みで
気分を紛らわそうと思います。
もうちょっと詰めてみるか。
Tweet
登録:
投稿
(
Atom
)