忍者ブログ
This is an official blog of Orange Forest who is the aircraft developer in the Secondlife virtual world.

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

気まぐれスクリプト講座 Vol.1 - 物理なブランコ

こんにちわ。ミューズです。
今日のエントリは、先日オビワンさんが紹介して下さった ブランコ のスクリプトについて、たまたま題材にしやすそうだったので、ちょっと気まぐれで、LSL初心者+α位な方を想定して御紹介したいと思います。
これであなたも物理スクリプトデビュー?!

ブランコ
::: ブランコ :::

物理で動くブランコです。
設置位置について物言いがついていますwwww
置き場所はコチラ → Airship Caravan/32/83/255
ランディングポイントは飛行船ショップ店内なので、飛行船付属のエレベータで下に下りて頂くとすぐ行き着きます。

ブランコは複数名が好きな着座位置にsitでき、sit後に座席をタッチすると加速が掛かかってブラーンブランします。ブランコは2個のオブジェクトから構成されています。個々の構造については現物を御覧下さいネ

■物理なブランコスクリプトの説明

ここで説明するスクリプトの使用についてオレンジフォレストは一切の損害や、サポートに対する責任を負いません。あくまで自己責任で参照下さい。
スクリプトのCopyrightを保持した上で改変、再販は御自由に。



LSLの基本的な文法や使用方法についてはすぐれた解説書が出回っているのでここでは割愛します。

■ブランコスクリプトの構造

LSLはその言語仕様にステートの概念が入っているちょっと変わった言語ですよね。個人的にはあとはロボット用の動作記述言語でしか見たことが無いです。今回はそのステートを多用したので構造を説明するのに状態遷移図を使ってみます。
ブランコスクリプトは4つのステートから構成されています。

  • default : 初期状態
  • waiting : 誰も乗っていない待機状態
  • active : 誰かが乗ってくれた状態
  • accel : ブランコ加速中‥連続的な加速防止


::: 状態遷移図 :::

それでは、スクリプトです。
間違いとか、改善とかのツッコミは歓迎です。
日本語のコメントは後から書き足しました。普段はココまでやりません><

//================================================================================
// Physical Swing Seat
// All rights reserved, Copyright(C) 2008, Orange Forest
// $Id: seat.lsl 243 2008-09-09 15:04:22Z myuse $
//================================================================================

// グローバル変数 : 'g' は global を示す接頭語
// 変数を識別しやすくするためのローカルルール

integer gDefaultPrims; // 座席のプリム数
vector gDefaultPos; // 座席のホームポジション
rotation gDefaultRot; // 座席の据付時の角度

//---------------------------------------------------
// default state
// 座席のプリム数のカウントと、復帰座標の取得
// アバターが座ったかどうかをプリム数で判定するため
//---------------------------------------------------
default {
state_entry () {
gDefaultPrims = llGetNumberOfPrims();
gDefaultPos = llGetPos();
gDefaultRot = llGetRot();
state waiting;
}
}

//---------------------------------------------------
// waiting state
// 搭乗待ち状態
// SIM負荷軽減のため、人が乗らない場合は非物理
//---------------------------------------------------
state waiting {
state_entry () {
llOwnerSay("Enter waiting");

// 物理off
llSetStatus(STATUS_PHYSICS, FALSE);

// 初期位置に戻る - 後続のステートから戻った時用
llSetPos(gDefaultPos);
llSetRot(gDefaultRot);
}

// リンク状態の変化を検出
// 誰か乗ってくれたかどうかのチェック
changed (integer chgParam) {
if ((chgParam & CHANGED_LINK) && (llGetNumberOfPrims() > gDefaultPrims)) {
llOwnerSay("Enter active");
state active;
}
}

// 再rez 時はリセット
on_rez (integer rezParam) {
llResetScript();
}
}

//---------------------------------------------------
// active state
// 物理でぶらぶらしている状態
//---------------------------------------------------
state active {
state_entry () {
// 物理ON
llSetStatus(STATUS_PHYSICS, TRUE);
}

// リンク状態の変化を検出
// 全員降りちゃったかのチェック
changed (integer chgParam) {
if ((chgParam & CHANGED_LINK) && (llGetNumberOfPrims() == gDefaultPrims)) {
state waiting;
}
}

// 誰かがブランコをタッチして押した?
touch_start (integer numTouches) {
state accel;
}
}


//---------------------------------------------------
// accel state
// 加速状態 : 連続加速で暴走するのを防ぐため、
// 次回加速を受け付けるのは2秒後
//---------------------------------------------------
state accel {
state_entry () {
// 回転力を添加
llApplyRotationalImpulse(<0.0, 0.0, 100.0>, TRUE);
// 2秒毎にタイマーイベント
llSetTimerEvent(2.0);
}

// リンク状態の変化を検出
// 全員降りちゃったかのチェック
changed (integer chgParam) {
if ((chgParam & CHANGED_LINK) && (llGetNumberOfPrims() == gDefaultPrims)) {
state waiting;
}
}

timer () {
// タイマー停止
llSetTimerEvent(0.0);
state active;
}
}



いかがですか?
今回のスクリプトはアニメーション使うつもりが無かったので、着座位置を強制せず、誰かが座ったかどうかの判定をオブジェクトのプリム数で行っています。
そして物理のブランコは誰かが座ってオブジェクトにタッチしたら回転のモーメントを加えるだけです。非物理でブランコを作る場合は連続的な回転を演出しなければならないのでもっと大変ですよね。
また、タッチしたら回転‥というだけなので、応用が効くと思います。ミューズがパッと思いつくのは、鉄棒とか、ボール状のジャングルジムみたいなものかなぁ

それでは第1回スクリプト講座は終了です。
第2回があるかどうかはわっかりませーん
ではでは
PR

Custom Speeder Metabirds Concierge "White Cat's" 其の2


☆Custom Speeder Metabirds Concierge "White Cat's"☆

みなさまこんばんわっ。
 前回から引き続きスピーダのカスタマイズに励んでいます。

コンシェルジュ ハルちゃんさんからいただいたお題は、「白い機体で猫ちゃんワンポイントシルエットで後はお任せ!」でした。

 これはまた絶対零度のチビーダとは違う緊張の波が押し寄せて来ます。。w

今回もテーマに合わせて機体サイズも若干の変更をしているのですがウインドウサイズのバランスとプリムの接続部分の処理に手こずったりもしていますw

猫足(猫羽)をイメージして、やさしく穏やかに見えたり、俊敏でもあったりする白猫の優美な感じをテーマに立てて作っていますが、細部に凝り出すと時間ばかりが過ぎてしまします。おまたせして申し訳ございません(^_^; )

機体もほぼ完成したので、そろそろミューズさんに機体外装技も仕込んでもらって、穏やかさと俊敏さが同居できるのか試してみないとです。

こちらはコンシェルジュのスタッフさんが、お客様のおもてなしにお使いになる機体ですから、カスタマイズの終盤はいつもながらに緊張してしまいますね。。


☆Texture / sheet back☆

操縦時に目につくシートバックの試作テクスチャです。
猫のゆるやかな身体のラインと俊敏に動く時に立てる爪をイメージしてみました....が、う〜んむずかしいですっw

 そういえば Speeder もそろそろ 新型 Model-206の製作に手を付けて行かないと....

by オビワン


Airship Sky Garden にて。。


☆O.F Airship Sky Yard Geadenにて ☆ 飛行船旅団 Airship Caravan/32/83/255 <製作中!>


    本日の朝のこと....

つづく。。

Sky Yard Garden park♪♪






☆O.F Airship Sky Yard Geaden ☆ 飛行船旅団 Airship Caravan/32/83/255 <製作中!>

みなさまこんにちわっ!
 この週末はスピーダのカスタマイズをこなしながらも、ミューズさんがスカイ・ヤード 飛行船の下に、スカイガーデンパーク(仮名)を作っていたので、装飾やテクスチャでお手伝いをしていました!

こちらはまだ製作中なのですが、飛行船旅団のロケーションに合わせてSFとファンタジーを融合させた様な、スカイボックス型 浮上公園という感じのコンセプトで作っています。

計画では、チョット技を仕込んだエンジン(ハリボテのメカエンジン)を搭載して、足のすくむ様なプールwやフリービィのもらえる飛行安全祈願祠wとか色々と流動的に考えています。。
 
今時は...
 寒蝉鳴 緑いろあせ 夏芝や 旬の茸が 芽でる秋かな
 ...などと

アッパーデッキには色あせて伸びた夏芝をひき、オレンジの二人とも大好きなキノコなんぞを植えまして季節がらも演出w みなさまにもユックリと遊んでいただいたり、お話を楽しめるスカイガーデンにしたいな!と、思っています。

[JPN/ENG] O.F Freebie - Missile Surf Released

[English text follows]

2008年9月、Orange Forestは新しいフリービーの飛行機 (O.F missile surf) をリリースしました。


::: Missile Surf Vendor :::

これは武器ではありません。飛行機です。爆発したり、他者を傷つけるようなことはありません。
O.F missile surf には Orange Forest の最新の飛行機向け物理エンジンを搭載しており、
いつもの動的な物理特性制御やフローティングカメラの制御機能もサポートしています。
誰でも missile surf の簡単な操作で大空のダイナミズムをお楽しみ頂けます。
O.F missile surf は 1prim の sculpted で出来ているのでSIMにとても優しいのですw


::: Airship caravan SIM :::

O.F Missile Surf はオレンジフォレストの各店舗で配布中です。
さぁみんな! O.F missile surf をゲットして大空に飛び立とおう!
SLMarketplaceでは贈答向けにL$2に設定しています。

使用方法
1. "O.F missile surf" をインベントリから rez
2. 右クリックしてパイメニューから"Fly"を選択

操作方法
W or up arrow : 機首下げ
S or down arrow : 機首上げ
E or PgUp : エンジン出力 up
C or PgDn : エンジン出力 down
A or left arrow : 左旋回
D or right arrow : 右旋回
mouse wheel / Ctrl-0,8,9 : カメラ距離の調整
b : 緊急ブレーキ

[ENG]

In September 2008, Orange Forest released a new freebie aircraft "O.F missile surf".
This is not an weapon but airplanes. And this doesn't explode or damage others.
"O.F missile surf" uses the latest version of O.F physical aircraft script engine
which also supports the floating camera and dynamic physical property control.
You can enjoy the dynamism of the sky by it's easy operation.
Since it is made by 1 sclupted prim, "O.F missile surf" is very light load for SIM.

O.F Missile Surf is distributed in all stores of "Orange Forest".
Let's get "O.F missile surf" and fly away to the sky !!
O.F Missile Surf is sold with L$2 in SLMarketplace for the gifts.


::: Youtube Movie :::

USAGE
1. Rez "O.F missile surf" from your inventory.
2. Right click "O.F missile surf" and select "Fly" from PI menu.

OPERATION
W or up arrow : nose down
S or down arrow : nose up
E or PgUp : increase throttle
C or PgDn : decrease throttle
A or left arrow : bank left
D or right arrow : bank right
mouse wheel / Ctrl-0,8,9 : adjust camera distance
b : emergency brake