2007年04月06日
椅子を作ろう(初級スクリプト第四回)
まずはbuild
今回は椅子を作ってみましょう。
第一回でも触れましたが、buildで椅子を作っただけでは、正しく座ることができません。
椅子はやっぱり座れたほうが心休まりますので、座れる椅子を作ることにします。
スクリプトで椅子を作り出すことも不可能ではありませんが、いきなりでは難しいので、buildツールを使って椅子の形を作ってください。
椅子の形についてはどんなものでもかまいません。
ソファであろうが、スツールであろうが、buildの練習のために好みの形の椅子を自作してみるのが良いかもしれません。
「スクリプトだけ勉強したいんだ!」
という方は、とりあえず円柱なり立方体なりで間に合わせてもOKです。
もちろん、以前に椅子を作ったことがあって、
「ちゃんと座れるようにしたいのになぁ・・・」
という方は、ぜひその椅子に今回のスクリプトを組み込んでみてください。

私はこんなのを作ってみました。
今回は椅子を作ってみましょう。
第一回でも触れましたが、buildで椅子を作っただけでは、正しく座ることができません。
椅子はやっぱり座れたほうが心休まりますので、座れる椅子を作ることにします。
スクリプトで椅子を作り出すことも不可能ではありませんが、いきなりでは難しいので、buildツールを使って椅子の形を作ってください。
椅子の形についてはどんなものでもかまいません。
ソファであろうが、スツールであろうが、buildの練習のために好みの形の椅子を自作してみるのが良いかもしれません。
「スクリプトだけ勉強したいんだ!」
という方は、とりあえず円柱なり立方体なりで間に合わせてもOKです。
もちろん、以前に椅子を作ったことがあって、
「ちゃんと座れるようにしたいのになぁ・・・」
という方は、ぜひその椅子に今回のスクリプトを組み込んでみてください。

私はこんなのを作ってみました。
座るための仕組み
椅子スクリプトの構成は、実にシンプルです。
やりたいことは「正しい位置に座れるようにする」ことです。
つまり、今まで説明してきたスクリプトの構成要素のうち、「反応」に当たる部分が、
「正しい位置に座れるようにする」
ということになります。
これを実現するためのスクリプトの命令を調べて見ましょう。
2007年4月現在、最も充実しているスクリプトの辞典は「lsl Wiki(英語)」です。
英語はどうも我が心の流儀に合わぬのだ・・・という方には、「SL用語の基礎知識」の「LSL関数」のページが良いかもしれません。
簡単な日本語の説明付きで、lslで使える関数(命令)の一覧が掲載されています。
まあ、ここ見ている方はほとんど日本人だと思いますので、「SL用語の基礎知識」の「LSL関数」のページで今回の目的にかなうスクリプト命令を探してみることにしましょう。
かなり下のほうまで見ないと出てきませんが、
「座る位置の調整」
をする命令が見つかるでしょうか。
llSitTargetという名前の命令です。
今回はこのllSitTargetを「反応」として使います。
次にステート(状態)についても考えます。
単に「正しい位置に座れるようにする」だけですので、ステートは一つだけで良いでしょう。
「初期状態」であるdefaultステートを使います。
最後はイベント(きっかけ)ですが、素直に考えると、
「座ったとき」
というきっかけにしたいところです。
ところが、残念ながらlslには「座ったとき」のイベントそのものはありません。
「オブジェクトが変化したとき」のイベントを使って、誰かが座っているかどうかの判定をすることができますが、今回は別のイベントを使います。
実は今回使うllSitTargetという命令は、一度実行しておけば、あとは何度座っても、誰が座っても、同じ位置、同じ角度に座るようになる命令です。
座るたびに実行するものではありません。
一度実行しておけば良いのですから、ここは素直に、
「スクリプトが開始されたとき」
に実行すべきでしょう。
これでスクリプトの構成については決まりました。
「初期状態」で「スクリプトが開始されたとき」に「正しい位置に座れるようにする」スクリプトです。
これを意識しながら、実際にコードを書いていきましょう。
Sit Script
まずは椅子の中にスクリプトを作ります。
前回書いたように、コンテンツタブで「New Script」です。
ハロー・アバター・スクリプトが作成されますが、使えるところは残し、いらないところを消していくとしましょう。
まずはステートですが、すでにdefaultステートが書いてあるはずです。
これをそのまま利用しましょう。
イベントについても「開始されたとき」に発動するstate_entry()があります。
これも残しておきます。
state_entry()の中にあるllSay()や、touch_start()イベントなどは不要な部分です。
まずはこれらを消してしまいましょう。
こんなふうになります。
すでにステートとイベントについては完璧ですw
あとは「正しい位置に座れるようにする」命令を書き込むだけです。
llSitTargetを使うときは、「位置」と「角度」を指定します。
llSitTarget(<0.0,0.0,0.5>, <0.0,0.0,0.0,1.0>);
<>で囲まれた数字が何やら二つありますが、最初の<>が位置、二番目の<>が角度です。
ここに指定する数字は、皆さんが作った椅子によってそれぞれ異なります。
ひとまず数字の意味を説明しておきましょう。
位置を示す<0.0,0.0,0.5>は、vector(ベクタ)型と言われるデータです。
,で区切られた3つの数字が並んでいます。
最初の数字はX値、真ん中はY値、最後はZ値です。
XYZと聞くと、buildツールに出てくる赤と緑と青の矢印を思い出す方もいるでしょう。
まさにアレです。
今回使うこのvector型のデータは、椅子の座標から、XYZ方向にどれだけズレた位置に座るか、を意味します。
単位はmです。
<0.0,0.0,0.0,1.0>は回転を示すrotatin(ローテーション)型のデータです。
数字が増えて4つになっています。
最初の三つはvector型と一緒で、X,Y,Zですが、最後の一つはSという隠れキャラです(謎
サンバルカンに白バラ仮面がついているようなものです・・・いや、よくわかんないんですが(^^;
少々専門的になりますが、この4つの数の組み合わせは「四元数(クォータニオン)」と言い、3D座標系において回転の計算をする上で非常に便利な行列です。
SLでは内部的に回転のデータは全てこの四元数で管理されています。
ですが、4つの数字を見て、どのような回転をするのかパッとイメージできる人は多くはないでしょう。
buildツールのように、XYZのそれぞれの角度を度数で指定するほうがやはり馴染みがあります。
そのあたりは当然考慮されており、X,Y,Zの回転角度からrotation型のデータを作り出すための命令が用意されています。
llEuler2Rotという関数がそれで、この関数に<X,Y,Z>の回転角度を指定すると、<X,Y,Z,S>のrotation型に変換してくれます。
私は3D回転のエキスパートではないので素直にこのllEuler2Rotを使うことにします。
しかし難点がもう一つあります。
llEuler2Rotに指定する<X,Y,Z>は度数ではなく、ラジアンなのです。
ラジアンは高校の数学で出てくるのでなんとなくわかる人もいるかもしれませんが、やはり度数のほうがわかりやすいでしょう。
そこでもう一つ小細工をします。
度数で<X,Y,Z>を指定し、そこにDEG_TO_RADという呪文をかけると、なんと、ラジアンに変わるのです。
以上2つの小細工をすることによって、
度数>ラジアン>四元数
の変換ができます。
具体的にはこんなふうに書きます。
llEuler2Rot(<0.0, 0.0, 90.0> * DEG_TO_RAD)
lslで角度を扱うときにはこの方法が便利ですので、この書き方は覚えてしまったほうが早いです。
さて、これでようやく位置と回転の設定ができます。
llSitTargetに位置と回転を指定して、スクリプトに追加しましょう。
この例では、Y軸のマイナス方向(後ろ)に30cm、Z軸の+方向(上方向)に40cmずれた位置で、Z軸まわりに270度回転した格好で座るようになります。
皆さんの作った椅子ではこの数字はそれぞれ違ってくると思いますので、書き換えて試してみて下さい。
正しい位置に座らなかった場合は、スクリプトの数字を調整し、保存してから座りなおします。
座ったままですと位置は変わりませんので注意しましょう。

きちんと座れるようになったら、椅子のスクリプトは見事完成です。
うまくできたら、家の中に置くのも良いですし、商品にさえなるでしょう。
ぜひ素敵な椅子を作ってみて下さい。
次回は「ドア」のスクリプトを作ってみたいと思います。
椅子スクリプトの構成は、実にシンプルです。
やりたいことは「正しい位置に座れるようにする」ことです。
つまり、今まで説明してきたスクリプトの構成要素のうち、「反応」に当たる部分が、
「正しい位置に座れるようにする」
ということになります。
これを実現するためのスクリプトの命令を調べて見ましょう。
2007年4月現在、最も充実しているスクリプトの辞典は「lsl Wiki(英語)」です。
英語はどうも我が心の流儀に合わぬのだ・・・という方には、「SL用語の基礎知識」の「LSL関数」のページが良いかもしれません。
簡単な日本語の説明付きで、lslで使える関数(命令)の一覧が掲載されています。
まあ、ここ見ている方はほとんど日本人だと思いますので、「SL用語の基礎知識」の「LSL関数」のページで今回の目的にかなうスクリプト命令を探してみることにしましょう。
かなり下のほうまで見ないと出てきませんが、
「座る位置の調整」
をする命令が見つかるでしょうか。
llSitTargetという名前の命令です。
今回はこのllSitTargetを「反応」として使います。
次にステート(状態)についても考えます。
単に「正しい位置に座れるようにする」だけですので、ステートは一つだけで良いでしょう。
「初期状態」であるdefaultステートを使います。
最後はイベント(きっかけ)ですが、素直に考えると、
「座ったとき」
というきっかけにしたいところです。
ところが、残念ながらlslには「座ったとき」のイベントそのものはありません。
「オブジェクトが変化したとき」のイベントを使って、誰かが座っているかどうかの判定をすることができますが、今回は別のイベントを使います。
実は今回使うllSitTargetという命令は、一度実行しておけば、あとは何度座っても、誰が座っても、同じ位置、同じ角度に座るようになる命令です。
座るたびに実行するものではありません。
一度実行しておけば良いのですから、ここは素直に、
「スクリプトが開始されたとき」
に実行すべきでしょう。
これでスクリプトの構成については決まりました。
「初期状態」で「スクリプトが開始されたとき」に「正しい位置に座れるようにする」スクリプトです。
これを意識しながら、実際にコードを書いていきましょう。
Sit Script
まずは椅子の中にスクリプトを作ります。
前回書いたように、コンテンツタブで「New Script」です。
ハロー・アバター・スクリプトが作成されますが、使えるところは残し、いらないところを消していくとしましょう。
まずはステートですが、すでにdefaultステートが書いてあるはずです。
これをそのまま利用しましょう。
イベントについても「開始されたとき」に発動するstate_entry()があります。
これも残しておきます。
state_entry()の中にあるllSay()や、touch_start()イベントなどは不要な部分です。
まずはこれらを消してしまいましょう。
こんなふうになります。
default
{
state_entry()
{
}
}
すでにステートとイベントについては完璧ですw
あとは「正しい位置に座れるようにする」命令を書き込むだけです。
llSitTargetを使うときは、「位置」と「角度」を指定します。
llSitTarget(<0.0,0.0,0.5>, <0.0,0.0,0.0,1.0>);
<>で囲まれた数字が何やら二つありますが、最初の<>が位置、二番目の<>が角度です。
ここに指定する数字は、皆さんが作った椅子によってそれぞれ異なります。
ひとまず数字の意味を説明しておきましょう。
位置を示す<0.0,0.0,0.5>は、vector(ベクタ)型と言われるデータです。
,で区切られた3つの数字が並んでいます。
最初の数字はX値、真ん中はY値、最後はZ値です。
XYZと聞くと、buildツールに出てくる赤と緑と青の矢印を思い出す方もいるでしょう。
まさにアレです。
今回使うこのvector型のデータは、椅子の座標から、XYZ方向にどれだけズレた位置に座るか、を意味します。
単位はmです。
<0.0,0.0,0.0,1.0>は回転を示すrotatin(ローテーション)型のデータです。
数字が増えて4つになっています。
最初の三つはvector型と一緒で、X,Y,Zですが、最後の一つはSという隠れキャラです(謎
サンバルカンに白バラ仮面がついているようなものです・・・いや、よくわかんないんですが(^^;
少々専門的になりますが、この4つの数の組み合わせは「四元数(クォータニオン)」と言い、3D座標系において回転の計算をする上で非常に便利な行列です。
SLでは内部的に回転のデータは全てこの四元数で管理されています。
ですが、4つの数字を見て、どのような回転をするのかパッとイメージできる人は多くはないでしょう。
buildツールのように、XYZのそれぞれの角度を度数で指定するほうがやはり馴染みがあります。
そのあたりは当然考慮されており、X,Y,Zの回転角度からrotation型のデータを作り出すための命令が用意されています。
llEuler2Rotという関数がそれで、この関数に<X,Y,Z>の回転角度を指定すると、<X,Y,Z,S>のrotation型に変換してくれます。
私は3D回転のエキスパートではないので素直にこのllEuler2Rotを使うことにします。
しかし難点がもう一つあります。
llEuler2Rotに指定する<X,Y,Z>は度数ではなく、ラジアンなのです。
ラジアンは高校の数学で出てくるのでなんとなくわかる人もいるかもしれませんが、やはり度数のほうがわかりやすいでしょう。
そこでもう一つ小細工をします。
度数で<X,Y,Z>を指定し、そこにDEG_TO_RADという呪文をかけると、なんと、ラジアンに変わるのです。
以上2つの小細工をすることによって、
度数>ラジアン>四元数
の変換ができます。
具体的にはこんなふうに書きます。
llEuler2Rot(<0.0, 0.0, 90.0> * DEG_TO_RAD)
lslで角度を扱うときにはこの方法が便利ですので、この書き方は覚えてしまったほうが早いです。
さて、これでようやく位置と回転の設定ができます。
llSitTargetに位置と回転を指定して、スクリプトに追加しましょう。
default
{
state_entry()
{
llSitTarget(<0.0, -0.3, 0.4>, llEuler2Rot(<0.0, 0.0, 270.0> * DEG_TO_RAD));
}
}
この例では、Y軸のマイナス方向(後ろ)に30cm、Z軸の+方向(上方向)に40cmずれた位置で、Z軸まわりに270度回転した格好で座るようになります。
皆さんの作った椅子ではこの数字はそれぞれ違ってくると思いますので、書き換えて試してみて下さい。
正しい位置に座らなかった場合は、スクリプトの数字を調整し、保存してから座りなおします。
座ったままですと位置は変わりませんので注意しましょう。

きちんと座れるようになったら、椅子のスクリプトは見事完成です。
うまくできたら、家の中に置くのも良いですし、商品にさえなるでしょう。
ぜひ素敵な椅子を作ってみて下さい。
次回は「ドア」のスクリプトを作ってみたいと思います。
タグ :sit
衝突判定(スクリプト初級第二十三回)
カメラ制御(スクリプト初級第二十二回)
デモ商品を作ろう(スクリプト初級第二十一回)
センサーを使おう(スクリプト初級第二十回)
ステートのこと(スクリプト初級第十九回)
rez!(スクリプト初級第十八回)
カメラ制御(スクリプト初級第二十二回)
デモ商品を作ろう(スクリプト初級第二十一回)
センサーを使おう(スクリプト初級第二十回)
ステートのこと(スクリプト初級第十九回)
rez!(スクリプト初級第十八回)
Posted by Miz at 23:38│Comments(21)
│初級スクリプト
この記事へのトラックバック
リンデンスクリプトを学ぶのに便利なサイトを紹介。一番わかりやすいのはソラマメというセカンドライフ専門ブログサイトにあるMakapuというブログ。 Makapuhttp://miz.slmame.com/ 初心者向け...
リンデンスクリプト リンク集【セカンドライフとリンデンスクリプト】at 2007年08月22日 14:28
この記事へのコメント
とってもわかりやすかったです。
>これでスクリプトの構成については決まりました。
>「初期状態」で「スクリプトが開始されたとき」に「正しい位置に座れるようにする」スクリプトです。
これをまず最初に考える必要があるということがしっかり理解できたのが一番の収穫です。次回の記事も楽しみにしてます。
>これでスクリプトの構成については決まりました。
>「初期状態」で「スクリプトが開始されたとき」に「正しい位置に座れるようにする」スクリプトです。
これをまず最初に考える必要があるということがしっかり理解できたのが一番の収穫です。次回の記事も楽しみにしてます。
Posted by Tak Nishi at 2007年04月07日 02:45
コメントありがとうございます(^^
なるべく実用的なスクリプトを、詳しく解説しながら進めていきたいと思っています。
何か質問等あったら遠慮なくコメント下さい~。
なるべく実用的なスクリプトを、詳しく解説しながら進めていきたいと思っています。
何か質問等あったら遠慮なくコメント下さい~。
Posted by Miz at 2007年04月07日 19:13
じっくり読み直していて気づいたのですが、
llSitTarget(<0.0, -0.3, 0.4>, llEuler2Rot(;<0.0, 0.0, 270.0> * DEG_TO_RAD));
の行の llEuler2Rot の開き括弧の直後の ; はどういう意味ですか?
llSitTarget(<0.0, -0.3, 0.4>, llEuler2Rot(;<0.0, 0.0, 270.0> * DEG_TO_RAD));
の行の llEuler2Rot の開き括弧の直後の ; はどういう意味ですか?
Posted by Tak Nishi at 2007年04月11日 19:04
Nishiさん
>llSitTarget(<0.0, -0.3, 0.4>, llEuler2Rot(;<0.0, 0.0, 270.0> * DEG_TO_RAD));
>の行の llEuler2Rot の開き括弧の直後の ; はどういう意味ですか?
記述ミスです(^^;;;;
llSitTarget(<0.0, -0.3, 0.4>, llEuler2Rot(<0.0, 0.0, 270.0> * DEG_TO_RAD));
が正しいですね。
直しておきます~。
>llSitTarget(<0.0, -0.3, 0.4>, llEuler2Rot(;<0.0, 0.0, 270.0> * DEG_TO_RAD));
>の行の llEuler2Rot の開き括弧の直後の ; はどういう意味ですか?
記述ミスです(^^;;;;
llSitTarget(<0.0, -0.3, 0.4>, llEuler2Rot(<0.0, 0.0, 270.0> * DEG_TO_RAD));
が正しいですね。
直しておきます~。
Posted by Miz at 2007年04月11日 21:09
こんにちは。^^
>英語はどうも我が心の流儀に合わぬのだ・・・
カッコイー言い方。
私は「あ、あの ア リトル スピーク イングリッシュ OK?」 なんてやってるんで感激しちゃいました。
ちょっとずれた所を参考にしちゃいました。
今回の椅子の座り方納得しました。
ありがとうございます。
では、失礼します。
>英語はどうも我が心の流儀に合わぬのだ・・・
カッコイー言い方。
私は「あ、あの ア リトル スピーク イングリッシュ OK?」 なんてやってるんで感激しちゃいました。
ちょっとずれた所を参考にしちゃいました。
今回の椅子の座り方納得しました。
ありがとうございます。
では、失礼します。
Posted by やも at 2007年04月18日 14:21
>やもさん
どうしても英語の資料が多いSLですが、英語が心の流儀に合わない方のために、日本語でスクリプトを理解する助けになれば幸いです(^^
どうしても英語の資料が多いSLですが、英語が心の流儀に合わない方のために、日本語でスクリプトを理解する助けになれば幸いです(^^
Posted by Miz at 2007年04月18日 14:52
こんばんはー。
やもです。
教えて頂きたいのですが
DEG_TO_RADと記述するとエラーとでてName not defined within scope
と表示されるのですけどこれはこれで正しいのでしょうか?
よろしくお願いします。
やもです。
教えて頂きたいのですが
DEG_TO_RADと記述するとエラーとでてName not defined within scope
と表示されるのですけどこれはこれで正しいのでしょうか?
よろしくお願いします。
Posted by やも at 2007年04月19日 23:17
>やもさん
それはどこか間違いがありますね・・・。
DEG_TO_RADはlslにもとから用意されている定数(値の決まっている変数)なのですが、
「Name not defined within scope」は、
「そんな名前のものは無いよ」
というエラーです。
名前を書き間違えてDEG_TO_REDとか書いてしまったりすると起こるエラーですが、名前に間違いがなければスクリプトのエディター側のバグである可能性もあります。
たまに、目に見えない変な文字が紛れ込むことがあるようで・・・。
その場合は新しいスクリプトを作成し、同じ内容を書き直すとうまくいったりすることもあります。
解決しない場合は、スクリプト全コードを見せていただければもう少し何かわかるかもしれません。
それはどこか間違いがありますね・・・。
DEG_TO_RADはlslにもとから用意されている定数(値の決まっている変数)なのですが、
「Name not defined within scope」は、
「そんな名前のものは無いよ」
というエラーです。
名前を書き間違えてDEG_TO_REDとか書いてしまったりすると起こるエラーですが、名前に間違いがなければスクリプトのエディター側のバグである可能性もあります。
たまに、目に見えない変な文字が紛れ込むことがあるようで・・・。
その場合は新しいスクリプトを作成し、同じ内容を書き直すとうまくいったりすることもあります。
解決しない場合は、スクリプト全コードを見せていただければもう少し何かわかるかもしれません。
Posted by Miz at 2007年04月20日 14:41
こんばんは。
レスありがとうございます。
もういちどトライしてみます。
ありがとうございました。
では、しつれいします。
レスありがとうございます。
もういちどトライしてみます。
ありがとうございました。
では、しつれいします。
Posted by やも at 2007年04月21日 23:09
ふたたび、こんばんは。
ご指摘のとおりでした。
試しにコピー&ペーストしたらすんなりサクセスしました。
ありがとうございます。
いま70年代風のカプセルタイプの椅子にトライしているのですが
やっぱり狙ったとうりにすわらせるの難しいですね。
では失礼します。
ご指摘のとおりでした。
試しにコピー&ペーストしたらすんなりサクセスしました。
ありがとうございます。
いま70年代風のカプセルタイプの椅子にトライしているのですが
やっぱり狙ったとうりにすわらせるの難しいですね。
では失礼します。
Posted by やも at 2007年04月22日 02:06
>やもさん
うまく動作して何よりです(^^
座る位置と角度を調整するのは結構面倒な作業ではあります。
比較的楽にするためのコツとして、可能であればルートプリムの回転角度を0,0,0にしておくのが良いかもしれません。
ルートプリムの角度が0,0,0であれば、座るときの角度はほとんどいじらなくても済みます。
まぁ・・・椅子の形によってはどうしても0,0,0には出来ない場合もありえますが(^^;
うまく動作して何よりです(^^
座る位置と角度を調整するのは結構面倒な作業ではあります。
比較的楽にするためのコツとして、可能であればルートプリムの回転角度を0,0,0にしておくのが良いかもしれません。
ルートプリムの角度が0,0,0であれば、座るときの角度はほとんどいじらなくても済みます。
まぁ・・・椅子の形によってはどうしても0,0,0には出来ない場合もありえますが(^^;
Posted by Miz at 2007年04月23日 12:00
こんばんは。^^
>比較的楽にするためのコツとして、可能であればルートプリムの回転角度を0,0,0にしておくのが良いかもしれません。
>ルートプリムの角度が0,0,0であれば、座るときの角度はほとんどいじらなくても済みます。
なるほど、勉強になりました。
トライしたいとおもいます。
では、失礼します。
>比較的楽にするためのコツとして、可能であればルートプリムの回転角度を0,0,0にしておくのが良いかもしれません。
>ルートプリムの角度が0,0,0であれば、座るときの角度はほとんどいじらなくても済みます。
なるほど、勉強になりました。
トライしたいとおもいます。
では、失礼します。
Posted by やも at 2007年04月23日 22:24
はじめまして^^まったくの初心者ですがすごく勉強になります
でもX,Y,Z,の数値が0だとだめなんですね^^;
でもX,Y,Z,の数値が0だとだめなんですね^^;
Posted by hitomi juran at 2007年07月03日 23:35
>hitomi juranさん
そうですね、その点説明しておくべきだったかもしれません(><;
X,Y,Zが全部ゼロというのは、llSitTargetの設定を解除するのと同じ意味になります。
llSitTargetを解除するということは、sitしたときにアバターの位置や向きに応じて座るようになるということです(=デフォルトの状態)。
そうですね、その点説明しておくべきだったかもしれません(><;
X,Y,Zが全部ゼロというのは、llSitTargetの設定を解除するのと同じ意味になります。
llSitTargetを解除するということは、sitしたときにアバターの位置や向きに応じて座るようになるということです(=デフォルトの状態)。
Posted by Miz at 2007年07月04日 14:21
こんばんは!
この前このホームページにたどり着いてじっくりよまさせて頂いてます。
椅子にはちゃんと座れるようになったのですが、足を伸ばして座らせたいなどポーズ(姿勢?)をとるスクリプトなどもあるのでしょうか??
いきなりこんな質問ですいません。ド初心者なもので・・・
宜しくお願いします(><;
この前このホームページにたどり着いてじっくりよまさせて頂いてます。
椅子にはちゃんと座れるようになったのですが、足を伸ばして座らせたいなどポーズ(姿勢?)をとるスクリプトなどもあるのでしょうか??
いきなりこんな質問ですいません。ド初心者なもので・・・
宜しくお願いします(><;
Posted by tadashi at 2007年07月10日 21:43
>tadashiさん
こんにちは。
うまく座れるようになると、次は違うポーズもやってみたくなるのは当然の欲求かと思います(^^
ちょっと長くなりますが、SLのポーズについて説明しますね。
アバターのポーズや動きは、全部「アニメーション」と呼ばれるデータで管理されています。
座ったときのポーズもそうです。何かに座ると、SLにあらかじめ用意されている「足をそろえて行儀よく座るアニメーション」が再生されて、アバターはそのポーズをとります。
違うポーズで座るためには、例えば「足を伸ばして座るアニメーション」のデータを用意して、それを再生してやる必要があります。
「アニメーション」のデータさえ用意できれば、どんなポーズで座らせることもできます。
座ったときにダンスを始めるとか、逆立ちをするようなものも作ることが可能です(そこまで行くともはや「座って」ないですがw)。
そのように、「座ったときに何かアニメーションを実行する」仕組みのことを、「ポーズボール」と言います。
ポーズボールについてはスクリプト初級第十四回
http://miz.slmame.com/e2814.html
で解説してますので、そちらを参考にしてみてください。
こんにちは。
うまく座れるようになると、次は違うポーズもやってみたくなるのは当然の欲求かと思います(^^
ちょっと長くなりますが、SLのポーズについて説明しますね。
アバターのポーズや動きは、全部「アニメーション」と呼ばれるデータで管理されています。
座ったときのポーズもそうです。何かに座ると、SLにあらかじめ用意されている「足をそろえて行儀よく座るアニメーション」が再生されて、アバターはそのポーズをとります。
違うポーズで座るためには、例えば「足を伸ばして座るアニメーション」のデータを用意して、それを再生してやる必要があります。
「アニメーション」のデータさえ用意できれば、どんなポーズで座らせることもできます。
座ったときにダンスを始めるとか、逆立ちをするようなものも作ることが可能です(そこまで行くともはや「座って」ないですがw)。
そのように、「座ったときに何かアニメーションを実行する」仕組みのことを、「ポーズボール」と言います。
ポーズボールについてはスクリプト初級第十四回
http://miz.slmame.com/e2814.html
で解説してますので、そちらを参考にしてみてください。
Posted by Miz at 2007年07月11日 11:26
ありがとうございます!!
いきなり第十四回に飛んでやってたらギリギリできました!
ん~スクリプト奥がふかいっすね~
頑張って初級スクリプトを読破します!!
丁寧な対応ありがとうございました。^^
いきなり第十四回に飛んでやってたらギリギリできました!
ん~スクリプト奥がふかいっすね~
頑張って初級スクリプトを読破します!!
丁寧な対応ありがとうございました。^^
Posted by tadashi at 2007年07月11日 14:14
いつもよませていただいて、
おべんきょさせてもらってます。
LSLとは直接関係無いBuild関連で困っているので、
質問させてください~。
Objectを編集するために、
いったん地面に置いて編集後Takeしたり、
リンク・アンリンクをしたりすると、
(コンテンツも含めて、すべて自作のオブジェクトで、
貼り付けたテクスチャはライブラリ内のもの。)
結構な頻度でCreatorが消えるよな気がするです。
それで、こまっているです。
最悪なケースでは、
リンク内部のObjectのOwnerが消えて、
編集不可能になったこともあります。
重いからでは?ときいたので、
編集場所をかえてみようと、
サンドボックスを転々として、実験してみました。
編集してると、試してみた全てのサンドボックスで、
発生しました。
また、Ownerが消えるのは、
稀にしか、発生しないみたいなのれ、
編集できなくなったのは、
頻発しないからましといえばまし・・・・Σ(゜д゜|||)
コンテストなどで、
オリジナルですかと問われたときに、
Creatorが消えてると、
応募できなくなったりとか、
結構、致命的な気もするですが・・・o(ToT)o
あまり、他でも取り上げられてない障害?
のようなのれ、もしかしたら、
他の方には起きなかったりとか、
SLMaYoだけ発生するとか!?(;゜0゜)
環境のもんだいなんでしょか;-;
おべんきょさせてもらってます。
LSLとは直接関係無いBuild関連で困っているので、
質問させてください~。
Objectを編集するために、
いったん地面に置いて編集後Takeしたり、
リンク・アンリンクをしたりすると、
(コンテンツも含めて、すべて自作のオブジェクトで、
貼り付けたテクスチャはライブラリ内のもの。)
結構な頻度でCreatorが消えるよな気がするです。
それで、こまっているです。
最悪なケースでは、
リンク内部のObjectのOwnerが消えて、
編集不可能になったこともあります。
重いからでは?ときいたので、
編集場所をかえてみようと、
サンドボックスを転々として、実験してみました。
編集してると、試してみた全てのサンドボックスで、
発生しました。
また、Ownerが消えるのは、
稀にしか、発生しないみたいなのれ、
編集できなくなったのは、
頻発しないからましといえばまし・・・・Σ(゜д゜|||)
コンテストなどで、
オリジナルですかと問われたときに、
Creatorが消えてると、
応募できなくなったりとか、
結構、致命的な気もするですが・・・o(ToT)o
あまり、他でも取り上げられてない障害?
のようなのれ、もしかしたら、
他の方には起きなかったりとか、
SLMaYoだけ発生するとか!?(;゜0゜)
環境のもんだいなんでしょか;-;
Posted by SLMaYo at 2007年07月25日 06:23
>SLMaYoさん
むむ、そういう問題があるのですか。
ごめんなさい、知りませんでした(^^;
私はその問題に遭遇したことがないので何とも言えませんが、オーナー情報まで消えてしまうと言うのは困ったバグですね・・・。
「教えて!セカンドライフ」あたりで質問してみては・・・と思ったらすでに投稿なさっているようですね(^^;;;
お役に立てず申し訳ないです。
何気に世の中のことを知らないMizでした(><;
むむ、そういう問題があるのですか。
ごめんなさい、知りませんでした(^^;
私はその問題に遭遇したことがないので何とも言えませんが、オーナー情報まで消えてしまうと言うのは困ったバグですね・・・。
「教えて!セカンドライフ」あたりで質問してみては・・・と思ったらすでに投稿なさっているようですね(^^;;;
お役に立てず申し訳ないです。
何気に世の中のことを知らないMizでした(><;
Posted by Miz at 2007年07月25日 11:33
むむ、そういう問題があるのですか。
ごめんなさい、知りませんでした(^^;
ごめんなさい、知りませんでした(^^;
Posted by jordan sneakers at 2011年05月18日 10:44
椅子の形についてはどんなものでもかまいません。
ソファであろうが、スツールであろうが、buildの練習のために好みの形の椅子を自作してみるのが良いかもしれません。
「スクリプトだけ勉強したいんだ!」
という方は、とりあえず円柱なり立方体なりで間に合わせてもOKです。
もちろん、以前に椅子を作ったことがあって、
ソファであろうが、スツールであろうが、buildの練習のために好みの形の椅子を自作してみるのが良いかもしれません。
「スクリプトだけ勉強したいんだ!」
という方は、とりあえず円柱なり立方体なりで間に合わせてもOKです。
もちろん、以前に椅子を作ったことがあって、
Posted by louis vuitton mens wallets at 2011年06月17日 16:46