ソラマメブログ › しのバー

2016/06/23

スキンのテンプレート公開

Secondlife や OpenSim で使えるスキンのテンプレートを公開します。ライセンスはパブリックドメイン、すなわち著作権を主張しません。どなたでも無条件でコピー、改変、再配布できます。

naoko snapshot

いずれかのファイルをベースにしたものではありませんので、いずれのライセンスの制約も受けません。インターネット上の写真や、インワールドでのスキンなどを参考にして私が手描きしたものです。私自身が著作権を主張しないのは、それら先人たちの成果の上に立ったものであり、他の方々もそうであろうと思うからです。

ZIPファイルをこちらから。

解凍すると、ナチュラルメイクの女性スキン naoko の画像と、画像処理ソフト Gimp のファイルが同梱されています。使い方の説明はまたの機会にぼちぼちと。
 Share this entry! 
  
続きを読む

Posted by シノバー at 20:12Comments(0)TrackBack(0)

2016/05/01

スクリプトの館

スクリプトの館
自作の小技スクリプトを集めた「スクリプトの館」を、JOG内 Shinobar Annex に開設しました。すべてコピー、改変、再利用できます。ポーズボールや商品の配布、ドアなどの基本的なものを公開中。今後順次拡充していきます。

Shinobar Annex へは、 JOG Center Sim にあるシノバーの看板からどうぞ。
 Share this entry! 
  

Posted by シノバー at 20:24Comments(1)TrackBack(0)OpenSIM

2016/04/07

リージョンを跨がるライドツアー

Secondlifeでよく見かけるライドツアー、OpenSim世界にもあります。しかしリージョン(SIM)を跨がってのものは、Secondlife内でもOpensim内でもあまり見掛けません。

写真は、しのぐり(Shinogrid)で走る路面電車。Welcome Area から、隣のリージョン Shopping Town との間を往復します。
Tramcar

このライドツアースクリプトは Shinobar が自作したものです。自由にコピー、改変して使えます。

この路面電車は2つの駅の間を往復運動するものですが、設定により、途中駅の設置やさまざまな動きができます。しのぐり Welcome Area から南の島へは、亀が連れて行ってくれます。
Turtle

JOG(Japan Open Grid)内の Canyon には、気球、ボート、タクシーの3種のライドツアーがあります。Canyonのものはリージョン越えしませんが、動きの参考にしてください。

リージョン越えする亀と気球の最新版は JOG内 Shinobar Annex に置いています。いずれも自由にコピー、改変、再利用できます。改変の方法は、この記事の続きをお読みください。

しのぐりへはJOG(Japan Open Grid)などから飛ぶことができます。
 Share this entry! 
  
続きを読む

Posted by シノバー at 18:12Comments(0)TrackBack(0)乗り物

2016/03/27

新規スクリプトのパーミッション

オブジェクトを作成し、コピー可に設定しても、そのオブジェクトの中身にコピー不可のものがあると、オブジェクト全体がコピー不可になります。これはときどき問題になります。

オブジェクトの中に新規スクリプトを作成したとき、標準のままだと新規スクリプトはコピー・修正とも不可となります。作成後に変更することはできますが、面倒ですし、気付かずにトラブルになることがあります。新規スクリプトが最初からフルパーになるような設定法を記します。ビューアーは Firestormの場合で説明します。

Firestormのメニューバーから、制作>オプション>権限の初期設定...を選びます。
Firestormの画面

初期状態でスクリプトなどはコピーや修正が不可となっています。
Firestormの画面

スクリプトなどのコピーや修正にチェックを入れ、OKをクリックします。
Firestormの画面

ここで設定された初期設定は完全に反映されるわけではありません。執筆時点の Firestorm最新版 4.7.7 で、アップロードのパーミッションは指定どおりにはなりません。しかし少なくとも新規スクリプトは指定どおりフルパーミッションになるようです。
 Share this entry! 
  

Posted by シノバー at 20:37Comments(0)TrackBack(0)OpenSIM

2015/10/26

Speed Boat

水上飛行機複葉機で使われたスクリプトは、設定を変更することで、他の乗り物にも使えます。
今回は Speed Boat にスクリプトを組み込んで走らせます。走る Speed Boat は JOG内の Shinobar Gate 海のあるサンドボックスに置いています。

Speed Boat

水上飛行機の台座を取り出し、Speed Boat の船体と、台座がルートプリムにしてリンクします。複葉機(1)機体の入れ替えを参考にしてください。

メインスクリプト Aircraft の設定を次のように変更します。
integer WHEEL = FALSE; //runs with wheel on the ground
integer HIDE_WHEEL = 0; //meter altitude wheels to be hidden
integer BOAT = TRUE; // runs only on the sea
integer SUBMARINE = FALSE; //goes under the sea
integer AIRCRAFT = FALSE; // flies in the air
integer HOVERING = TRUE; //can stop in the air like helicopters
設定項目の説明は「複葉機(3)スクリプトのオプション」を参照ください。

動きの設定。2015-10-26 のもの。
「複葉機(4)動きの調整」も参照ください。
vector BASE_SPEED = <2.0, 0.3, 0.5>; // forwad, turn, up/down
float BANK_RATIO = 0.5;
float HOP_SPEED = 0.0; //x BASE_SPEED.z
integer HOP_TIME = 0; //xINTERVAL, 0:no hopping
integer MAX_FORWARD = 6; // limit of forward speed
integer MAX_SWIM = 6; // limit of forward in the sea
integer NORMAL_FORWARD = 2; // initial gear, flight mode above this
integer MAX_BACKWARD = 2; // limit of backward speed
integer MAX_YAW = 4;
integer MAX_UPWARD = 1;
integer MAX_DOWNWARD = 1;

関数 engine(integer onoff) 内の設定。2015-10-26 のもの。
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, 1.0);
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 2.0);
llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, <8.0, 0.5, 2.0>);
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 2.0);
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 1.0);

小回りのある複葉機に比べ、左右の旋回をゆっくりとしています(..._ANGULAR_...)。VEHICLE_ANGULAR_FRICTION_TIMESCALE の値は <X軸, Y軸, Z軸> です。 別の言い方でRoll-Pitch-Yaw(wikipedia ローリング)。
Roll は船体の左右への傾きで、この抵抗は小さく(時定数を大きく)、上下の揺れである Pitchへの抵抗は大きく(時定数を小さく)しました。
全体としての姿勢安定のため _VEHICLE_VERTICAL_ATTRACTION_TIMESCALE は小さめ、VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY は最大にしています。
 Share this entry! 
  

Posted by シノバー at 13:04Comments(0)TrackBack(0)乗り物

2015/10/25

複葉機を飛ばす(4)動きを調整する

水上飛行機をベースに、機体を複葉機に入れ替えました。これをさらに改造、調整してゆきます。改造された複葉機は、JOG内の Shinobar Gate 海のあるサンドボックスに置いています。

水上飛行機
複葉機を飛ばす(1)機体の入れ替え
複葉機を飛ばす(2)カメラ位置の調整
複葉機を飛ばす(3)スクリプトのオプション
複葉機を飛ばす(4)動きの調整 ←この記事です。

今回の複葉機では小回りの効いた動きに調整します。スクリプトのオプションのうち、前回に解説しなかった動きに関するものを取り上げます。

Biplane at Borabora

メインスクリプトの53-63行目あたりが速度を調節するキー操作に関するものです。参考数字は 2015-10-25 付けバージョンのもの。

vector BASE_SPEED = <2.0, 0.2, 0.2>; // forwad, turn, up/down
ギア切り替えで速度は切り替えられますが、ギア1のときの速度です。最高速度はギア段数 MAX_FORWARDとの掛け算で来ますので、この例では 2.0x8 = 16m/sec が最高速度となります。のうち xが進行速度、yは左右の旋回の最小単位、zは上下です。
float BANK_RATIO = 0.5;
左右旋回のときの機体のひねり、 ロールの程度。

float HOP_SPEED = 0.0; //x BASE_SPEED.z
integer HOP_TIME = 0; //xINTERVAL, 0:no hopping
ジェットスキーなどで、浮き上がったときにさらに飛び上がる設定です。

integer MAX_FORWARD = 8; // limit of forward speed
ギアの段数。最高速度は MAX_FORWARD x BASE_SPEED.x となります。
integer MAX_SWIM = 4; // limit of forward in the sea
主に陸上や空中を飛ぶ乗り物が水中に入ったとき、 MAX_SWIM/MAX/MAX_FORWARDの比率で減速します。
integer NORMAL_FORWARD = 3; // initial gear, flight mode above this
初期のギア段。飛行機などでは、この段数を超えないと離陸できません。離陸後の空中でギアを落とすことはできます。
integer MAX_BACKWARD = 2; // limit of backward speed
バックする場合、MAX_BACKWARD/MAX_FORWARD の比率で減速します。
integer MAX_YAW = 6;
左右キーを押しつづけた場合、この倍数まで回転角速度が増大します。
integer MAX_UPWARD = 8;
上方向キー(↑)を押しつづけた場合、上向きの角速度が増大します。
integer MAX_DOWNWARD = 3;
下方向キー(↓)を押しつづけた場合の下向き角速度の最大倍数。

BASE_SPEED や MAX_xxx の数字で動きが変わりますが、もう一つ大事なものは、乗り物パラメータ群の調整です。179行目あたりから engin(onoff) という関数の中で、それらは設定されます。

直線運動と回転運動のそれぞれについて、TIMESCALE と DECAY 、それに FRICTION があります。推進力は瞬時に発生するのではなく、TIMESCALEにより、0から時間を掛けて所定の速度に達します。また、DECAY(減衰)によって時間とともに推進力は低下します。また FRICTION (抵抗)により時間とともに速度を減少させます。いずれも単位は秒です。TIMESCALEにしたがって速度が増しているところで減衰や抵抗が起き、所定の速度に達しない場合があります。

llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_TIMESCALE, 1.0*INTERVAL);
llSetVehicleFloatParam(VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE, 2.0*INTERVAL);
llSetVehicleVectorParam(VEHICLE_LINEAR_FRICTION_TIMESCALE, <4.0*INTERVAL, 2.0, 2.0>);
直線速度に関して、飛行機などの場合はINTERVALの間隔で推進力が自動的に与えられるので、諸数値もこれに併せておきます。X方向にしか動かないので抵抗の Y、Zは関係しません。

llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_TIMESCALE, 0.3);
llSetVehicleFloatParam(VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE, 0.5);
llSetVehicleVectorParam(VEHICLE_ANGULAR_FRICTION_TIMESCALE, <1.0, 1.0, 1.0>);
上下左右の回転に属するもの。今回の複葉機では小回りを効かせるために、時間を短めに取っています。

llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_TIMESCALE, 4.0);
llSetVehicleFloatParam(VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY, 0.5);
上下左右に旋回などをすることによって、機体の姿勢は傾きます。機体を水平姿勢に戻すものが VERTICAL_ATTRACTION です。TIMESCALEを 2秒くらい、EFFICIENCY を 1とすると姿勢が安定します。今回は宙返りなどのアクロバティックな動きをするために、 TIMESCALE は長く取り、EFFICIENCY も小さくしてみました。

今回で「複葉機を飛ばす」シリーズは完結です。
 Share this entry! 
  

Posted by シノバー at 13:30Comments(0)TrackBack(0)乗り物

2015/10/24

複葉機を飛ばす(3)スクリプトのオプション

水上飛行機をベースに、機体を複葉機に入れ替えました。これをさらに改造、調整してゆきます。改造された複葉機は、JOG内の Shinobar Gate 海のあるサンドボックスに置いています。

水上飛行機
複葉機を飛ばす(1)機体の入れ替え
複葉機を飛ばす(2)カメラ位置の調整
複葉機を飛ばす(3)スクリプトのオプション ←この記事です。
複葉機を飛ばす(4)動きの調整

Biplane

メインスクリプトは水上飛行機のものから改変し、名称を Aircraft としています。2015-10-24 の日付のあるバージョンで以下説明します。

スクリプトの冒頭71行くらいにさまざまな設定項目があります。主なものを説明していいきます。最初のほうはメッセージの文章で、説明がなくても分かるでしょう。
27行-39行目あたりに基本機能の設定があります。カメラについては前回説明しました。今回関係するのは、車輪まわり。

基本機能設定
integer SHOW_STATUS = TRUE; // status on floating text
 ギアの位置など、さまざまな状態をフローティングテキストで表示するかどうかです。フローティングテキストの表示があってもなくても、メッセージはチャットに流れます。
integer SHOW_ALTITUDE = 2; //meters step to show altitude, 0:no display
飛行高度を表示するのに、何メートル刻みで表示するか。0だと高度を表示しません。高度は地上高あるいは海抜です。したがって水平飛行していても地形の起伏で変動します。

integer WHEEL = TRUE; //runs with wheel on the ground
地上で滑走する場合に車輪を使うかどうか。水上飛行機には車輪が付いていなかったので、FALSEでしたが、この複葉機には車輪があるので TRUEとします。地上で左右に曲がるとき、車輪のありなしで動きが変わります。車輪がないときは静止したままその場で向きを変えることができますが、車輪がある場合は前後に動きながらでないと曲がれません。
integer HIDE_WHEEL = 10; //meter altitude wheels to be hidden
車輪を格納する機能がある場合(後述)高度何メートルで格納するか。

integer BOAT = FALSE; // runs only on the sea
ボートなど水上の乗り物で陸に登れない場合に TRUEとし、それ以外はFALSEとしてください。
integer SUBMARINE = FALSE; //goes under the sea
潜水艦など水中に潜れる乗り物は TRUE。FALSEであれば、水面に浮きます。
integer AIRCRAFT = TRUE; // flies in the air
空を飛べるかどうかです。
integer HOVERING = FALSE; //can stop in the air like helicopters
ヘリコプターのように空中で静止できるかどうかかです。

integer SCREW = 6; //screw speed
スクリューあるいはプロペラがある場合、数値を設定します。あまりいじってもビューアーの問題で、そのとおりには見えませんので、このままでよいでしょう。ジェット機などでは 0にするか、そのままでもどうせプロペラはないので問題はありません。

integer CAMERA_FIX = FALSE; // TRUE: fixed camera angle / FALSE: follow
さきの記事で説明しました。TRUEだと SITCONFIG で、FALSEだと、このスクリプト中のinit_followCam() で設定されます。

integer OWNERONLY = FALSE; //only the owner can drive
持ち主だけが使えるのか、誰でも乗れるようにするかです。

integer DISPOSAL = FALSE; // disappears after PARKING_TIME
これを TRUE にすると、乗り捨てた場合に自動的に消えます。これをTRUEに設定するときは、あらかじめコピーをとっておくことを忘れずに。

41-63行目あたりにさまざまな数値の設定があります。FLOATING_LEVEL は前々回に説明しました。一部を説明し、動きに関する多くのものは次回に譲ります。

諸数値(前半)
float NEAR = 20.0; //meters from the original position
float DOCK = 10.0; //meters from the original position, auto docked
出発点から NEARの範囲を出て、DOCKの範囲に戻ってきたときをツアーの終了とみなし、パイロットや乗客を強制的に降ろします。この機能を無効にするには DOCKを 0.0にしてください。

float TOOHIGH = 500.0; //meters max z, maybe less than 1500
上昇できる最高高度。試してみたけど、1500m以上にはどうしても行けなかった。

float GROUND_LEVEL = 0.0; //meters above ground from the lower edge of the prim
float FLOAT_LEVEL = -0.8; //meters above water, minus means sink
float ALLOWANCE = 0.4; //meters
複葉機を飛ばす(1)機体の入れ替えで説明しました。FLOAT_LEVELが水上に不時着したときに沈む深さ(マイナス値)です。

float BOUNDARY_MARGIN = 8.0; //meters apart from the boundary
float AHEAD_MARGIN = 1.0; // x INTERVAL
リージョン境界に近づかないようにする設定です。 ノートカード Regions xxx で複数リージョンをゾーンにしている場合は、その間をまたぐことはできます。(危険ですが。)

float INTERVAL = 1.0; //seconds
着陸判定などを行う頻度。あまり小さくすると操作性に支障をきたします。
integer LAND_TIME = 2; //xINTERVAL to see landing or sinking
離着陸などを判定する尤度。たとえば地表を離れて LAND_TIMExINTERVAL経過して離陸とみなす。
integer IDLE_TIME = 8; //xINTERVAL to see stopping
自動車などの場合に一定時間キー操作をしないとエンジンを停止し、サーバーの負荷を最小にします。自動車以外では、地上や水上ではギア3速(設定による)以下のときに働きます。空中ではホバリングが有効で、ギアを最小にしたときのみ。
integer PARKING_TIME = 60; //second waiting pilot returns, 0:no return
出発地を離れた場所でパイロットが降りた場合にこの秒数だけ再搭乗を待ちます。0だと、ずっと待ちつづけます。

サウンド
設定の最後 65-71行目あたりはサウンドの設定です。書かれているサウンドはスクリプトと同じルートプリム(台座)の中になければなりません。

string ENGINE_SOUND = "engine2";
ベースとなるエンジン音。 FAST_SOUND や CAR_SOUNDが無いときは、これが使われます。
string FAST_SOUND = "";
ギアが4速(設定による)以上のときのエンジン音。
string CAR_SOUND = "";
水陸両用車などで、水上を地上でエンジンを切り替える場合に、地上を車輪で走るときのエンジン音。
string START_SOUND = "Startup";
エンジンを掛けたときの音。長さは2秒くらい。
string IDLE_SOUND = "s_idle";
アイドル状態のエンジン音。
string ATTENTION_SOUND = "airplane-pa";
メッセージの注意を喚起する「ポ〜ン」という音。
float ENGINE_VOL = 1.0; //loudness of the engine sound
音量。

なお、着水したときに出る「バシャーン」という音 bashaan は、別のスクリプト WaterSplash で設定されています。

車輪の格納
メインスクリプト側は HIDE_WHEEL で指定した高度を境に車輪の格納指示を出します。これを受けて車輪を出し入れする機構が必要です。この複葉機では車輪まわりのプリムにスクリプト HideWheel を仕込んでおり、"wheel" というキーワードでリンクメッセージを受け、併せておくられる整数値が0の場合、プリムを透明にするということで実装しています。
この複葉機の足まわりは合計7プリムでできていて、そのすべてに同じスクリプト HideWheelを入れています。

次回は動きを調整してみます。
 Share this entry! 
  

Posted by シノバー at 22:03Comments(0)TrackBack(0)乗り物

2015/10/23

複葉機を飛ばす(2)カメラの調整と助手席

「飛行機を改造」の続きです。
水上飛行機をベースに、機体を複葉機に入れ替えました。これをさらに改造、調整してゆきます。改造された複葉機は、JOG内の Shinobar Gate 海のあるサンドボックスに置いています。

水上飛行機
複葉機を飛ばす(1)機体の入れ替え
複葉機を飛ばす(2)カメラ位置の調整 ←この記事です。
複葉機を飛ばす(3)スクリプトのオプション
複葉機を飛ばす(4)動きの調整

Biplane

(パイロットの)カメラ位置の調整
メインスクリプトの最初のほう 37行目あたりに
integer CAMERA_FIX = TRUE; // TRUE: fixed camera angle / FALSE: follow
があります。これがTRUEだと、カメラは機体に固定され、パイロットのカメラは SITCONFIG のほうで決まります。
vector CAMERA_POS = <-8.0, 0, 3.0>;
vector CAMERA_DIR = <0, 0, 1.0>;
CAMERA_POS がカメラ位置、CAMERA_DIRは視野中心点です。例によって台座プリム中心から x は東方向、yは北方向、 zは上方向です。カメラの仰角はこの例で tan-1 (-2m/8m)ということになります。およそ -15度。このくらいが自然です。

CAMERA_FIX = FALSE の場合は、カメラは機体後方からついてゆく感じになります。メインスクリプト側の162行目あたりの関数 init_followCam() で設定されます。llSetCameraParams 関数でいくつかを設定していますが、そのうち CAMERA_DISTANCE の値だけを機体の大きさに合わせて調整し、他はそのままにしておくことをおすすめします。


座席を増やす
パイロットは台座に座り、位置だけを操縦席の位置に合わせてそれらしく見せます。台座の中にあるノートカード SITCONFIG で位置を調整しました。
他の乗客は別のプリムに座らせます。ボックスで作った座布団が簡単です。機体と座布団の向きを揃えます、座布団の回転角をxyzともに0としておきます。機体というか台座の回転角もxyzとも0とします。機首は東に向くはずです。そうでなければ、先の記事の要領で機体と台座の角度を合わせておいてください。
台座の中からノートカード SITCONFIGと、スクリプト sitpose2をコピーして、座布団の中に入れます。乗客用の座りポーズのアニメがあるなら、それも座布団の中に入れます。アニメが無ければ標準の座りポーズとなります。
ノートカード SITCONFIGを修正します。座り位置は POSITION です。<0, 0, 0.7> あたりで調整してください。パイロットはカメラ位置も設定していますが、乗客はカメラ位置を決めないほうが良いでしょう。

vector POSITION = <0.0 ,0, 0.7>; // meters offset when the agent face to the east
//vector ANGLE = <0, 0, 0>; // degrees
vector CAMERA_POS = <0, 0, 0>;
vector CAMERA_DIR = <0, 0, 0>;

追加した座席の位置を調整し、飛行機とリンクさせます。編集モードでShiftキーを押しながら、追加座席を、複数あるときは順次選択に加え、最後に飛行機をクリックして、全体をリンクします。飛行機の台座がルートプリム(輪郭が黄色で表示される)となっていることを確認してください。
全体のリンクができたら、メインスクリプト (Seaplane あるいは Aircraft) をリセットしてください。

次回はスクリプトのオプションについて解説します。
 Share this entry! 
  

Posted by シノバー at 16:41Comments(0)TrackBack(0)乗り物

2015/10/17

複葉機を飛ばす(1)機体の入れ替え

水上飛行機の続きです。
今回以降、この飛行機スクリプトを利用して、他の飛行機や乗り物が飛べるよう改造する方法を解説します。もとになる水上飛行機は Shinobar Gate サンドボックスにあり、コピーで入手できます。

水上飛行機
複葉機を飛ばす(1)機体の入れ替え ←この記事です。
複葉機を飛ばす(2)カメラ位置の調整
複葉機を飛ばす(3)スクリプトのオプション
複葉機を飛ばす(4)動きの調整

編集画面

サンドボックスなどで、水上飛行機を Rezします。右クリックで「編集」を選びます。機体の下に小判状の透明な台座があることが分かります。
機体はじつはこの透明な台座に乗っているというか、めり込んでいます。主要なスクリプトは台座部分に含まれています。この台座部分を流用し、機体部分を他のものと取り替えることで、任意の機体を飛ばせることができるというわけです。以下、ビューアーはFirestormで説明します。

必要な部品を手に入れます。
・「リンク部分を編集」にチェックを入れ、小判形台座を選択し、以降の作業がやりやすいように、「透過度%」を50%程度にしておきます。
・作業中にスクリプトが動くとややこしいので、「中身」からスクリプト Seaplane を抜いておくか、これをクリックして出てくるスクリプト編集画面で「実行中」のチェックを外してスクリプトを停止しておきます。
・「リンク部分を編集」で台座を選択し、「リンクを外す」で、これを単一プリムとして全体から取り外し、いったん横にどけておきます。
・同じ要領で、もとの機体からプロペラの羽根を外し、Takeしておきます。後にこれを流用するためです。
・台座とプロペラを確保すれば、残りの機体部分は必要ないので、削除します。

機体を入れ替えます。
・新たに飛ばせたい機体にはスクリプトは入っていないものとします。この機体を台座の上にRezしたのち、位置合わせします。まず向きは、東が進行方向になりますので、それに合わせます。台座の回転はxyzとも 0 であることを確認します。xyの位置は基本的に台座の中心に合わせ、高さ方向zは、機体の下端を台座の下端に合わせます。機体の大きさと台座の大きさはだいたい合わせておきます。
・機体のプロペラの羽根を、さきほど水上飛行機から取り出したものに置き換えます。羽根が他の部分と合体していて取り外せないときは、水上飛行機からのプロペラを追加で加えることでごまかします。
・「リンク部分を編集」のチェックを外し、Shiftキーを押しながら、プロペラ、機体、台座を、この順番に選択。「リンク」ボタンで全体をリンクします。
・「リンク部分を編集」にチェックを入れ、小判形台座を選択し、「透過度%」を90%程度に戻します。

次に操縦席の位置を調整します。パイロットは機体の操縦席に直接座るのでなく、台座に座り、操縦席に座っているかのように見せるだけです。

・オブジェクトを編集、「中身」にある SITCONFIG という名前のノートカードをクリックして開きます。この中の
vector POSITION = <0.7, 0.0, 1.0>; // meters offset when the agent face to the east
とある行が位置を表します。x,y,z の値は、台座の中心から、パイロットの腰までの距離をメーター単位で表したものです。xのプラスは東、マイナスは西方向です。変更しては立ったり座ったりを繰り返して調整します。

次にメインスクリプト Seaplaneを、必要に応じて変更します。スクリプトの最初のほうに各種の設定がありますが、とりあえずは次の1行の調整だけでよいでしょう。
float FLOAT_LEVEL = -0.7; //meters above water, minus means sink
この値は、水上に着水したときに機体の沈む深さです。普通は沈み込むので、マイナスの値を取ります。ゼロは台座下面が水面すれすれになるという状態です。
ただし次の行に float ALLOWANCE = 0.4; があるので、FLOAT_LEVEL を中心に±0.4m は浮き沈みがあります。気になるようなら ALLOWANCE を 0.2 なり 0.1 に減らしてみてください。

・変更したメインスクリプト Seaplaneを保存し、「実行中」にチェックを入れてください。

これで、入れ替えた機体で飛ぶことができます。

次回はカメラ位置の調整と、座席を追加してみます。

 Share this entry! 
  

Posted by シノバー at 17:19Comments(0)TrackBack(0)乗り物

2015/10/17

水上飛行機

水上飛行機
JOGなどOpenSIM上で動作する乗り物のスクリプトを作っています。その成果として水上飛行機ができました。JOG内 Shinobar Gate 北東部分のサンドボックスに置いています。自由にコピーし、たとえば別の機体に入れ替えるなど改変もできます。

この水上飛行機を例に、開発した乗り物スクリプトをシリーズで解説していきます。初回は、操縦の方法から。

シリーズ(1) 水上飛行機の操縦法
・水上飛行機にタッチすると操縦席に座れます。数秒間、準備が終わるのを待ちます。
・上方向矢印キー(↑)でエンジンが掛かります。
・[Page Up]キーでギアチェンジします。 GEAR=4 になります。
・上方向矢印キー(↑)で離陸します。
・離陸後は左右キー(←→)で左右へ旋回。上(↑)で上昇、下(↓)で下降。[Page Up]/[Page Down]でギアチェンジ。ギアは最大8速。
・海上や陸上でも左右キーやギアチェンジは同じですが、上下キーの動きはギアの段階によって異なる動作をします。ギアが4速以上での上(↑)キーは離陸(空中と同じ動作)。ギアが3速以下では、キーを放していると停止し、上(↑)キーを押している間だけ前進、下(↓)キーでバックします。
・出発位置付近10m以内に戻ると、機体は出発点に戻り、強制的に降ろされます。

Shinobar Gateから隣のBoraboraへのリージョン越えもできますが、遭難も多く、危険ですw。

他のリージョンで飛ばす
コピーしたものを、他のリージョンに持っていき飛ばせることもできます。リージョンのサイズは 256x256を基本とします。256x256を超える Varreginでは、リージョン名を Regions xxx ('xxx'の部分は任意)の名前のノートカードで登録するか、あるいはリージョンの北ないしは東端付近でRezすれば、サイズを自動認識します。

・Regions xxx ('xxx'の部分は任意)の形式は、中身にある他のノートカードを参考にして作ってください。SOL や Game などがすでに登録されています。
・一つのリージョンに対して一つのノートカー,ド、あるいは隣接するリージョン群を一つのノートカードに書いてください。
・複数のリージョンを含む場合、すべてのリージョンは同じサイズであることと、全リージョンの集合体が凸凹なく方形になっていなければなりません。
 Share this entry! 
  

Posted by シノバー at 10:06Comments(0)TrackBack(0)乗り物

2015/02/28

JOG自治会?

Park commons
SLではなくJOGの話です。いっぽうSL内では火曜夜 スナック潮騒 に一部の JOGユーザーが集います。

JOG自治会?準備会のようなものを、来る 3月4日(水)午後10時から、Total SIM で開きたいと思います。自由な話し合いや情報交換ができたらと思います。お時間のある方は、ぜひご参加ください。

JOGに関して集まる機会を一覧にしておきます。
(毎週)
月曜 午後3時のお茶会 Liwson Cafe hop://jogrid.net:8002/Shinobar%20Gate/205/103/30
火曜 午後10時 SL内 昭和スナック 潮騒 http://maps.secondlife.com/secondlife/Junapel/121/233/23
水曜 午後10時 Total Sim 集会場 hop://jogrid.net:8002/E02/41/67/22
木曜 午後3時のお茶会 Liwson Cafe hop://jogrid.net:8002/Shinobar%20Gate/205/103/30
金曜 午後10時 Blender勉強会 hop://jogrid.net:8002/Tomoyo/128/127/26
 Share this entry! 
  

Posted by シノバー at 21:27Comments(0)TrackBack(0)OpenSIM

2015/02/06

SLを撤退します

SLのアバタは残しますが、シノバーSL支店は閉店したいと思います。今後はJOGを拠点に移して営業を続けますので、引き続きご愛顧ください。

シノバーSL支店跡地をレンタルしたい方は、 MANGA Fantasy Resort Japan にお問い合わせください。広々として素敵な南国リゾートです。現在はシノバーが陣取ってますが、すぐにでも空けることができます。

http://tecmac.slmame.com/e1446954.html
↑この情報は古いので、レンタル条件などは変わっているかもしれません。
 Share this entry! 
  

Posted by シノバー at 21:45Comments(0)TrackBack(0)ビーチ

2014/11/24

3時にお茶しませんか?

SLでも同じだけど、昼間に開いてるカフェって、少なくないですか?
ましてJOGにはカフェらしきところがありません。
そこで、平日の午後にカフェを開くことにしました。

poster

その手始め。11月27日(木)午後3時(日本時間)より、カフェを開きます。開きました。当面、毎週月曜と木曜の午後3時から。

景色の良いオープンカフェで、ただ、まったりしましょうと、いうだけです。JOGの情報交換もできるといいかもしれませんね。お暇な方はお越しください。場所はJOG内のコンビニLIWSONの横。

コンビニLIWSONへは、JOG内で shinobar を検索し、着地点で Cocoタクシーに乗ってください。あるいはCenter SIMにある看板からLIWSONへ直接テレポートできます。
SLからは行けません。
 Share this entry! 
  

Posted by シノバー at 22:10Comments(0)TrackBack(0)OpenSIM

2014/11/23

水上バンガロー

ボラボラ島に水上バンガローを建設しました。
バンガローから海へ、また海から上がって直接バスルームへ直行できるように間取りも考えました。
Bangalow

ボラボラ島へはJOG内で brabora を検索してください。 SLからは行けません。
 Share this entry! 
  

Posted by シノバー at 20:01Comments(0)TrackBack(0)ビーチ

2014/11/17

水中レストラン

水中レストランを建設しました。
restaurant

シノバーJOG支店の南、ボラボラ島です。どこにあるかは探してください。
ボラボラ島は JOG(Japan Open Grid)内で borabora を検索してください。
シノバーJOG支店から空の直行便も出ています。

SLからは行けません。
 Share this entry! 
  

Posted by シノバー at 22:14Comments(0)TrackBack(0)OpenSIM

2014/11/15

ブティック Southern Star

シノバーJOG支店 南のビーチ Southern Star にブティックを建てました。水着やビーチ用のグッズを今後増やしていきたいと思います。お作りになったものを提供いただけると、ありがたいです。

Boutique

屋上にはプールがあり、泳ぐことができます。体が冷えたら温水プールで温めましょう。

Hot bath

SLではありません。JOG(Japane Open Grid)内です。
 Share this entry! 
  
続きを読む

Posted by シノバー at 16:04Comments(0)TrackBack(0)OpenSIM

2014/11/03

マンタだって飛べる

Flying Manta

南の海に棲むマンタは巨大なエイですが、おとなしくて人懐っこく、掴まっていっしょに泳がせてくれるそうです。
普段はゆったりと泳いでいるのですが、聞いた話によれば、なぜか、まれに海面上にジャンプするそうです。

JOG内ボラボラ島のほか、隣のマーレ環礁にも群生してるとか。

SLの話ではありません。OpenSIMによるJOG(Japan Open Grid)内です。
 Share this entry! 
  
続きを読む

Posted by シノバー at 14:20Comments(0)TrackBack(0)乗り物

2014/11/02

Shinobar マーレ環礁

SLではなく、JOG(Japan Open Grid)内です。
ジェットスキーを存分に乗り回すために、海を主体の地形を作りました。
モルディブにある南マーレ環礁の一部にある、花のように島(環礁)が点在しているものから採りました。

Mare

自由に島を作れるのは、OpenSIMならではの贅沢ですね。

Shinobar Mare へは、JOG内で borabora を検索、そこからジェットスキーで訪ねてください。ジェットスキーは乗り捨てすると、勝手にもとの位置に戻ります。

Mareからボラボラへ戻る手段は、まだ用意していません。
 Share this entry! 
  
続きを読む

Posted by シノバー at 16:59Comments(0)TrackBack(0)地形

2014/11/01

リージョン越えするジェットスキー

SLではあたりまえにありますが、OpenSIMにはありません。なので作りました。

Jetsuki



JOG(Japan Open Grid)内のボラボラ島に置いてます。JOG内で borabora を検索ください。SLからは行けません。

ジェットスキーを乗り回すには、広い海が必要。SIM越え、正確にはリージョン越えができないと、面白くありません。ちょっとたいへんでした。

ところで物理で乗り物を動かしてみると、動きがぎごちないことがあります。どうもプリム数が関係してるみたいです。プリム数は極力、10プリム程度に収めるのが良いようでした。
 Share this entry! 
  
続きを読む

Posted by シノバー at 23:04Comments(0)TrackBack(0)乗り物

2014/11/01

Gimpで作るボラボラ島(8) 出来上がり

Gimpで作るボラボラ島シリーズも、やっと完結。

borabora

1. 全体の合成と最終の明度調整
- ぼかしの入った地形画像と、ぼかしの入らない峯、枠を重ねて可視部分コピー。
- これから新たな画像を生成します。
- これを 色>レベル で、今度は出力レベルの最大値を 128して、OK。
- 画像モードはRGBのまま.png 画像にエクスポートします。圧縮レベルを 0とします。

2. OpenSIMにアップロード
地形ファイルを読み込むのは terrain load コマンドですが、その前に、対象とする Region がどれであるかを指定しなければなりません。複数の島(Region)があるとき、コマンドはそれら共通の root の位置にあります。change region コマンドで対象 Region を指定します。地形ファイルは、あらかじめコマンドラインで打ち込みやすいよう、/root などにコピーかリンクを作っておきます。

端末から mono OpenSim.exe でシミュレータを起動し

Region (root) # change region "Shinobar East"
Currently selected region is Shinobar East
Region (Shinobar East) # terrain load /root/borabora.png

これでめでたく地形が現れます。じっさいに島のあちこちを歩いて点検してください。不具合や気に入らないところがあったれ、その部分の形、高さ(明度)、傾斜(ぼかし)を変更して、制作のステップをやり直しします。

グラデーションやボカシの程度、手書き部分を細かく調整すると、いろいろ表情が付けられます。納得のいくところまで、何度もやり直して経験を積んでください。
 Share this entry! 
  
続きを読む

Posted by シノバー at 17:51Comments(0)TrackBack(0)地形