2010年3月31日水曜日

BlenderにPrimstar 1.0.0 + 0.5.0

前、Primstar 1.0.0をインストールしたら、Blender Sculptie Import & Export Scripts(Primstarになる前のスクリプト)で作った古いデータはUVマップ出力できなかったので、Primstar 0.5.0で我慢しようかなって迷ってたんですが、1.0.0インストールして0.5.0のスクリプトも入れたら何となくできるみたいです。。。何か無理矢理って感じですけどw

以下簡単ですけどインストール手順メモしときますね。
Primstar 1.0.0と0.5.0をhttp://dominodesigns.info/node/4/release(Domino Designsさん)へ行ってダウンロードします。0.5.0はblender_scripts_rc_0.zipっていうファイル名になってます。

そして、まずPrimstar 1.0.0を解凍して普通にインストールします。
インストール方法は付属のreadme.txt見たらわかると思いますが、Windowsだったらコマンドプロンプトを開いて、付属のインストールスクリプトを下記のようにブレンダーで実行ですね^^
"c:\Program Files\Blender Foundation\Blender\blender" -P install.py

(ブレンダーが起動して小さなダイアログが出るので、ダイアログを閉じた後にCtrl+Uで設定を保存してからブレンダーを終了させる)

Primstar 1.0.0のインストールが完了したら、Primstar 0.5.0を解凍して、render_sculptie.pyっていうスクリプトを取り出します。(他のは要りません)

Linuxの場合は/home/ユーザー名/blender_scripts、WindowsはC:\Documents and Settings\ユーザー名\blender_scripts内に先ほどのrender_sculptie.pyを入れます。そのまま入れてもいいですが、何かフォルダを作ってそこに入れたらいいと思います。私はPrimstar_0.5.0っていう名前のフォルダを作ってその中に入れました。

これでBlenderを起動してRenderメニューにスカルプのベイクが2種類出たらOKです。

ちょっとややこしいですけどBake Second Life Sculptiesのほうが、Blender Sculptie Import & Export Scriptsの古いデータ用ですw

2011年11月21日追記: インストールスクリプトを実行したときの処理を一応書き加えました。ブレンダーは新しいバージョンが出てるけど、Blender 2.49b+Python 2.6系?(Windowsだと2.6.6とか)でないと動かないと思います。

2012年1月19日追記: Windows 7はC:\Documents and Settings\ユーザー名\blender_scriptsC:\Users\ユーザー名\blender_scriptsになるはずなんですが、64ビットWindows 7になぜかエラーが出たりして上手くインストールできないんですよね。Blender、Python共に64ビット版でやっても32ビット版でやっても。。。;
両方32ビット版でhttp://dominodesigns.info/node/302に図示されてるhttp://dominodesigns.info/sites/default/files/21.pngのスクリプトのパスをC:\Users\ユーザー名\AppData\Roaming\Blender Foundation\Blender\.blender\scriptsにしてCtrl+Uで設定を保存してからインストールスクリプトを実行したら何とかできたみたいなんですけど、PrimstarのスクリプトはC:\Users\ユーザー名\blender_scriptsじゃなくて先ほどスクリプトのパスとして設定したフォルダのほうにインストールされてました。

2010年3月27日土曜日

ショッピングモールKONEKO

昨夜チャット中にキーボード入力(日本語変換かも)がおかしくなってしまって、めっちゃ焦ってしまった千尋です。Linuxだったんですがソフトウェアをアップデートした後、再起動しなきゃいけなかったのをそのまま使ってたから変になっちゃったんでしょうかね?^^;;

Selphieさんにお誘い頂きまして、Shopping Mall KONEKOに出店させてもらいました^^ モールのオーナーはATさんという方です。大きいスカイボックスの中がショッピングモールになってて、全体はちょっと撮れなかったんですが、こんな感じで結構ゆったりして広かったです^^

店舗の建物は思いっきり改造して使ってもいいみたいに言われたんですが、建物ってあまりいじくったことがないので、狭かった出入り口を広くする程度にちょっとだけ改造してみました。他に出店されてるお店を見たら、もう全然違う建物みたいになってたりってのがほとんどだったんですがw

うちの店舗はこの辺りです。宜しくお願いします^^
http://slurl.com/secondlife/Little%20Cat%20Japan/113/197/3441

2010年3月26日金曜日

1プリム定額販売用ベンダーのスクリプト

今回はこの前のアニメーションベンダーと同じで、100L$均一みたいな同じ価格の商品だけ扱えるベンダーです。色違いや柄違いの商品とかには、こういうベンダーがお手軽でいいかもですね^^

本体はチューブをパスカット(B:0.250,E:0.550ぐらい)して、カットした側がベンダー正面になるように薄くします。それで商品表示用の面の番号が5、操作パネル用の面は0になります。操作パネルは「← →」って感じのテクスチャを作って貼り付けてくださいね。。。写真のと同じでよかったら llSetTexture("2f3d3767-0c2e-b646-2ae7-c7c1a4946a46",0); をstate_entryに追加して表示させてください。

// 均一価格商品ベンダー
integer price=50;  // 価格
string item;  // 表示中の商品名用変数
string texture;  // 商品のテクスチャ用
integer number;  // アイテム数
integer cur=0;  // ポインタ用

string get_texture(string name)
{
    integer i;
    integer j=llGetInventoryNumber(INVENTORY_TEXTURE);  // テクスチャ数
    string str;
    for (i=0; i < j; i++) {
        str=llGetInventoryName(INVENTORY_TEXTURE,i);  // テクスチャ名
        if (str == name+".pic") return str;  // 商品名.picが見つかったらテクスチャ名を返す
    }
    llWhisper(0,"Texture not found.");  // 商品名.picが見つからない><
    return TEXTURE_BLANK;  // ブランクのテクスチャでリターン
}

set_item()
{
    item=llGetInventoryName(INVENTORY_OBJECT,cur);  // 選択された商品名
    if (number) {  // コンテンツ内に商品が入ってるとき(総数が0じゃない)
        llSetText(item+"\n("+(string)(cur+1)+"/"+(string)number+")",<1,1,1>,1.0);  // フローティングテキスト表示
        texture=get_texture(item);  // 商品のテクスチャ取得
    }
    else {  // 商品が入ってないとき
        llSetText("",<1,1,1>,1.0);  // フローティングテキスト消去
        texture=TEXTURE_BLANK;  // テクスチャはブランク
    }
    llSetTexture(texture,5);  // 上側(面番号5)にテクスチャを表示
}

init()
{
    llSetPayPrice(PAY_HIDE,[PAY_HIDE,PAY_HIDE,PAY_HIDE,PAY_HIDE]);  // 支払い不可にする
    number=llGetInventoryNumber(INVENTORY_OBJECT);  // コンテンツ内の商品(オブジェクト)の数
    cur=0;  // ポインタ初期化
    set_item();  // set_itemへ
    if (number) llSetPayPrice(PAY_HIDE,[price,PAY_HIDE,PAY_HIDE,PAY_HIDE]);  // 商品が入ってたら支払い金額を設定
}

default
{
    state_entry()
    {
        init();  // initへ
    }

    changed(integer change)
    {
        if (change & CHANGED_INVENTORY) {
            init();  // コンテンツ内が変わったらinitへ
        }
    }

    touch_start(integer total_number)
    {
        key id=llDetectedKey(0);  // タッチしたアバターのキー
        if (id) {
            integer i=llDetectedTouchFace(0);  // タッチした面番号チェック
            if (i == -1) llWhisper(0,"Sorry, your viewer not support.");  // 古いビューワーは諦めてもらう^^;
            else if (i == 0) {  // 面番号0
                vector v=llDetectedTouchUV(0);  // タッチされた位置
                if (v.x > 0.5) {  // 中央よりも右だったら次の商品
                    cur++;
                    if (cur >= number) cur=0;
                }
                else {  // そうでないときは前の商品になるようポインタをセット
                    cur--;
                    if (cur < 0) cur=number-1;
                }
                set_item();  // set_itemで商品表示
            }
        }
    }

    money(key id, integer amount)
    {  // 支払いがあったら
        if (amount == price)
        {
            llGiveInventory(id,item);  // 商品を渡す
            llInstantMessage(id,"Thank you for your purchase.");  // あざーす!!
        }
    }
}

スクリプト最初の価格のところだけ設定して、商品(オブジェクト以外は箱詰めして)とテクスチャをコンテンツに入れてくださいね。そしてテクスチャ名は「商品名.pic」になるようにしてください。

この前のアニメーションベンダーと同じく、どの商品が売れたか通知する部分や、価格を表示する部分は書いてないですが、価格は各商品のテクスチャに描き入れるかベンダーのオブジェクト名や説明に付け加えたらいいと思いますw

2010年3月24日水曜日

無言の1L$

昨日、ログインしてない間に全然知らない人から1L$の送金があったんですよ。ギフトとして支払われてるだけでIMとかは無しです。その方は生まれて2ヶ月くらいのアバターで、プロフには写真も無くて何も書かれてませんでした。それで、うちの商品を買ってくださったお客様でもなさそうだったし。。。ううぅ、何なんでしょう? こういうのってちょっと怖いですよね? なので、その件についてこちらからは問い合わせていません^^;

昔ギター弾きのキャンプしたときは、通りがかった人から1~5L$程度のチップ貰ったことがあったんですが、今回そういうのとは全く違うしw

2010年3月21日日曜日

ラッキーレターに足跡のパーティクル

ラッキーレターに猫の足跡みたいなパーティクルを追加しました^^

海外のお客様からそういうパーティクル付けられないかって聞かれて作ってみたんですが、これって結構かわいいですね^^ 動物とか扱ってるお店なんかは特に良いんじゃないでしょうか^^

それからついでにパーミッションチェックの部分にコピー権限もチェックするようにしました。コピー不可のものは持ち物から出すときに何となくわかるかなって思ってたので、そこまでチェックしてなかったんですよ。でもオブジェクトの中に入ってるアイテム(スクリプトとか)とオブジェクトのパーミッションが異なる場合は、持ち物から出したとき中のものの影響を受けるような気がするんですね。なので今後は他の製品も同様に修正していく予定です。

ラッキーレターの現在のバージョンです。
Lucky letter V1.6.4
Lucky letter one V1.0.7
旧バージョン(オートアップデート対応版~)を持ち物から出したときに、アップデート品が届くと思いますので宜しくお願いします^^

2010年3月19日金曜日

均一売りアニメーションベンダーのスクリプト

今回は全部同じ価格のポーズ・アニメーションに限り販売できる簡単なAnimation vendorのスクリプトです。価格が同じだと不正な金額の支払いが起きる心配がない(返金する仕組みがいらない)のと、リスト使わなくてもいいので、仕組みが簡単にできるんですよ^^

ベンダー本体は1プリムで作ります。プリムの面番号1の面が斜めになるようにして、その面に操作パネルのテクスチャ(左右に矢印があるようなの)を作って貼り付けてください。

// 均一価格アニメーションベンダー
integer price=10;  // 価格
string anim;  // 現在のアニメーション記憶用
string tmp;  // 一時記憶用
integer number;  // アニメーション数
integer cur=0;  // 選択されたアニメのポインタ用

set_item()
{
    tmp=anim;  // ポーズ中のアニメ
    anim=llGetInventoryName(INVENTORY_ANIMATION,cur);  // 新しく選択されたアニメ
    // フローティングテキスト表示
    if (anim) llSetText(anim+"\n("+(string)(cur+1)+"/"+(string)number+")",<1,1,1>,1.0);
    else llSetText("",<1,1,1>,1.0);
    if (llAvatarOnSitTarget()) {  // 誰か座ってたら
        if (tmp) llStopAnimation(tmp);  // ポーズ中のアニメ停止
        if (anim) llStartAnimation(anim);  // 新しいアニメ再生
    }
}

init()
{
    llSetPayPrice(PAY_HIDE,[PAY_HIDE,PAY_HIDE,PAY_HIDE,PAY_HIDE]);  // 支払い不可に
    number=llGetInventoryNumber(INVENTORY_ANIMATION);  // コンテンツ内のアニメの数
    cur=0;  // ポインタを初期化
    set_item();  // set_itemへ
    if (number) llSetPayPrice(PAY_HIDE,[price,PAY_HIDE,PAY_HIDE,PAY_HIDE]);  // アニメが入ってたら支払い金額を設定
}

default
{
    state_entry()
    {
        llSitTarget(<0,0,1.0>,llEuler2Rot(<0,0,-90>*DEG_TO_RAD));  // 座る位置、角度
        init();
    }

    changed(integer change)
    {
        if (change & CHANGED_LINK)
        {  // リンクが変化
            key id=llAvatarOnSitTarget();  // 座ってるアバターのキー
            if (id) llRequestPermissions(id,PERMISSION_TRIGGER_ANIMATION);  // アニメーション実行リクエスト
        }
        else if (change & CHANGED_INVENTORY) {
            init();  // コンテンツ内が変わったらinitへ
        }
    }

    touch_start(integer total_number)
    {
        key id=llDetectedKey(0);  // タッチしたアバターのキー
        if (id) {
            integer i=llDetectedTouchFace(0);  // タッチした面番号チェック
            if (i == -1) llWhisper(0,"Sorry, your viewer not support.");  // 古いビューワーはお断りしまーす
            else if (i == 1) {  // 面番号1
                vector v=llDetectedTouchUV(0);  // タッチされた位置
                if (v.x > 0.5) {  // 中央よりも右だったら「→」
                    cur++;
                    if (cur >= number) cur=0;
                }
                else {  // そうでないときは「←」
                    cur--;
                    if (cur < 0) cur=number-1;
                }
                set_item();  // set_itemへ
            }
        }
    }

    run_time_permissions(integer perm)  
    {
        if (perm & PERMISSION_TRIGGER_ANIMATION)
        {  // アニメ実行が許可されたら
            llStopAnimation("sit");  // デフォルトsit停止
            if (anim) llStartAnimation(anim);  // 現在のアニメ実行
        }
    }

    money(key id, integer amount)
    {  // 支払いがあったら
        if (amount == price)
        {
            llGiveInventory(id,anim);  // 現在のアニメを渡す
            llInstantMessage(id,"Thank you for your purchase.");  // ありがとぉおおお^^
        }
    }
}

簡略化してるのでどのアニメーションが売れたか通知する部分はありません^^;
価格は特に表示するようにしてないので、ベンダーの名前や説明に付け加えるとかしてくださいね。

操作パネルのテクスチャ作成が面倒だったら
llSetTexture("2f3d3767-0c2e-b646-2ae7-c7c1a4946a46",1);
これをstate_entry内に入れてもらったら写真と同じのが表示されます。。。手抜きなパネルですけどw

2011年8月23日追記: 不正な金額の支払いが起きる心配がないとは言っても、たぶんllSetPayPriceに縛られず任意の金額を支払えるような改造ビューワーを作ることも不可能じゃないと思うので、一応支払われた金額が一致したときだけ商品(アニメ)を渡すようにしてます。

2010年3月16日火曜日

マルチパネル商品ベンダー、1プリムベンダーにグループ限定機能とか追加

マルチパネルベンダーシリーズ4機種と1プリムベンダーをバージョンアップしました。主な改良点はアイテムリスト記入不要で簡単に使えるようにしたのと、一括割引セール、グループ限定割引(キャッシュバック)、グループ限定販売機能の追加です^^

アイテムリストの書き方が間違ってて、ベンダーが動かないっていう苦情が時々あるんですね。説明として書いてある部分(1st line: とか)までコピペされてたり、テクスチャをドロップして直接リストに埋め込んだりされてた例もあって、この前も海外の方から、見てもわからん!混乱する!って言われてヘコみました>< なので、もっと簡単に使えるように改良したいって思ってたんですよ。

マルチパネルベンダーの最近のバージョンで、アイテムが入ってないとき変なメッセージ出てたのもバグフィックスしました。それから、この4機種はうちでは高めのベンダーなので、今回オートアップデートも取り付けたんですね。それで旧バージョン購入者様にはたぶん今夜~明日くらいに最新版をお送りしたいと思います。バージョンはV1.4.0になります。

9panels vendor(12プリム9アイテム表示) L$400
7panels vendor(10プリム7アイテム表示) L$350
5panels vendor(8プリム5アイテム表示) L$300
4panels vendor(7プリム4アイテム表示) L$280

1プリムベンダーのほうはV2.3.0になりました。この機種は今まで価格据え置きだったんですが、今回のバージョンアップに伴い100L$に値上げしました。。。最近売れ行きがイマイチなので今後もうちょっと値上げするかもですけどw

1prim vendor L$100

割引セール、グループ限定キャッシュバック、グループ限定販売機能は結構前から実装予定だったんですが、他の部分で先に直したいところや改良したいところがあったので、ずっと先送りになってたんですよ^^; よくセールとかされる方には結構便利な機能だと思いますので、どうぞ宜しくお願いします^^

14時20分頃追記: その他のベンダー(アニメーションベンダー、1プリム9アイテム/16アイテムベンダー)はアイテムリストを外すのは無理っぽいので、説明書やメッセージ周りだけ修正の予定です。これらの機種は今のところは割引やグループ限定機能の実装も特に考えてませんが、しばらく様子を見て需要が高そうだったら検討します。

3月17日追記: マルチパネルベンダーのアップデート品発送作業完了しました。思ったよりも結構数出てたのでめっちゃ疲れてしまいました; 1プリムベンダーのほうはもっと多いのでアップデート希望者のみ対応させて頂きます。ご希望の購入者様はお問い合わせくださいね。

2010年3月12日金曜日

ガーデンボラードライト

2ヶ月ぐらい前に作ってたランプを発売しました。何で遅くなったかって言うと、こういう棒みたいなランプの名前がわからなかったんですよwww 道路脇なんかによく生えてますがボラードって聞いたことないですよね?_?

スイッチや自動点灯はオーナーのみメニューで操作できるようにしました。コピー不可、譲渡可でお値段はL$15です。玄関やお庭、歩道などにどうぞ^^

Mansion Mall店Market Beach Mall East店FS Shopping Mall店で販売中なのと、SUNSET SHOPPING MALL店ではラッキーレターの景品として設置してきました。宜しくお願いします^^

2010年3月8日月曜日

千尋の犯行だと思われた;;

先日、全然面識もない外人女性から苦情がきたんですよ。私が不快なオブジェクトを送りつけた犯人だと間違われて。。。orz

英語なので細かい表現とかわからないんですが、たぶんその人の赤ちゃん2人(と同じオブジェクト?)が悪戯されて送られてきたみたいでした。それで何で私なのかなって思ったら、そのオブジェクトのクリエーター名が私の名前になってるって言うんですよ。なので、私の再販可能なオブジェクトがその人に悪意を持ってる誰かに悪用されたんじゃないかなって思って言ったんですけど、すごい怒ってて信用してもらえなかったんですね;; でもXstreet SLに出品してるアイテムのページを提示したらやっと信じてもらえたので、そのことをリンデンに報告してくださいってお願いして一応一件落着しました。

翌日サンドボックスから覚えの無い名前のオブジェクトが返却されてたんですね。ええっ、何かなって思ってrezしてみたら、一昨日テストしてたベンダーの一部で、なぜか親プリムが失われてパネルとか変な角度にリンクされてるんですよ。もちろんテスト中リンクは解除してません。これってもしかして。。。あの人、確か「2人の赤ちゃんが消えて、エッチしてるみたいなポーズにされて返却されてきた」って感じのことも言ってました。

それで、改めてIMのログを見直してみたんですね。そしたら、昨日私の赤ちゃんが消えて、今日lost and foundフォルダに現れた…って書いてある部分がありました。フォルダ名だと思わずandのところで文章を区切って変に訳しちゃってたんですけど、遅い時間だったのでちょっとボーとしてて気がつかなかったです。。。てっきり誰かが送ったんだと思い込んでしまってましたし^^;

サーバーのバグとかでオブジェクトの一部のプリムが他人に返却されてしまうってことがあるんじゃないでしょうかね? 今回のトラブルはそれが起きたと考えれば話の筋が通ります。実は昔ベータグリッドで作業してたら、全く知らないオブジェクトが返却されてきたことがあったんですよ。その時はベータ版テストしてるサーバーではそういうこともあるのかなって思ったんですが。。。;

2010年3月5日金曜日

タイムゾーン間違えてた orz

時計を自動サマータイム調整にしたいなって思って色々調べてたんですが、かなりややこしくなりそうなので今回は諦めた千尋です^^;

日本時間に合わせて使うのは問題ないんですが、時計のタイムゾーン設定に一部不具合があったので修正しました。マイナス何分の時差があるとき間違えて加算されてたのと、サマータイムのとき合わせられないタイムゾーンがあったので、UTC-13:00~UTC+15:00の範囲で15分間隔で細かく設定できるようにしました。あと、何となくUTCのほうが一般的かなって気がしたのでGMT表記だったのをUTCに変えました。違いはよくわからないんですがw
http://ja.wikipedia.org/wiki/グリニッジ標準時

時計とカレンダーの修正後のバージョンです。
Digital clock module V2.3.5
Simple wall clock V1.1.2
Digital wall clock - dw002 V1.0.3
Hiroshige Ukiyo-e calendar V1.0.4

サマータイム(DST)って、ここ数年の間にも変わったりした国があるので、自動調整は難しそうですよね。。。;

2010年3月2日火曜日

Linux版はフラッシュビデオも見れます

リナックスのGnomeデスクトップに付属してるTotemっていう動画プレーヤーはFLV(フラッシュビデオ)も再生できるんですね。なので、メディア再生にTotemと同じGstreamerが使われてるLinux版Second LifeはFLVが見れるんじゃないかなって思って試してみたんですよ。そしたらYouTubeはアドレスが長すぎて土地メディアのURLにセットできなかったんですが、veohはホントに見れたのでちょっとびっくりしました^^

使ってるのはFedora 12なんですが、最近のLinuxだったらたぶん大丈夫だと思います。FLVのアドレスはFirefoxにビデオを簡単にダウンロードできるアドオンを入れて、ダウンロード中にダウンロードマネージャでURLをコピーしました。

フラッシュプレーヤー使わずにフラッシュビデオが見れるって何かすごいですね。QuickTimeもそうゆうとこ見習ったらいいのにw