
2007年11月13日
キャンドルライト ~其の①~
も~街はすっかり「クリスマス」気分ですね~。
名古屋駅もすでにイルミネーションが輝いておりますが、
SL内でもクリスマスの話題で持ちきりです(*^_^*)

さてさて、最近もの作りを始めた人が多いようなので、
今日は「ROKURO」の使用方法を絡めたキャンドルライトの作成方法をご紹介しますw
まずw 完成品はこれ!
3プリムで出来ていますが、下の部分はROKUROというフリーソフトを使用しています。
まずはコチラからダウンロードしてください。
>> ROKUROダウンロード <<
ROKUROはポイントを使って3Dオブジェクトを作成します。
ポイント数はメニューの「Points」から選択可能。(9points,17points,33points)
ポイントをクリック・ドラッグして造形し、左半分は左右対称の形です。
ここで作った物を360°回転したものがスカルプト適用後の形になります。

作成したイメージです。これを、SaveTGAで保存します。これでスカルプトテクスチャの完成です。
では、ROKUROで作成した画像をセカンドライフにアップしましょう。
セカンドライフを起動し、「画像のアップロード」でアップロードします。
アップロードする際に「sculpted prim」を選択します。

画面上で確認できるので、OKならばアップロードしてください。
【 スカルプトプリム作成方法 】
アップさせた画像をSL内に作成する方法です。

まず純粋になにか生成し、オブジェクトタブの建設物ブロックタイプから「Sculpted」を選択します。

あとは「Sculpt texture」をクリックしてテクスチャーを選択すれば完成です。
もちろん他オブジェクト同様にテクスチャや色の変更も出来ます。
後はシリンダーで作成したロウソクをリンクして「キャンドルライト」の完成です。
「blender」や「lightwave」でも同様に作成できますが、1プリムで色々な形が成型できるので、
土地を借りているひとは是非お試しください。
→キャンドルのパーティクルの説明はコチラから
名古屋駅もすでにイルミネーションが輝いておりますが、
SL内でもクリスマスの話題で持ちきりです(*^_^*)

さてさて、最近もの作りを始めた人が多いようなので、
今日は「ROKURO」の使用方法を絡めたキャンドルライトの作成方法をご紹介しますw
まずw 完成品はこれ!
3プリムで出来ていますが、下の部分はROKUROというフリーソフトを使用しています。
まずはコチラからダウンロードしてください。
>> ROKUROダウンロード <<
ROKUROはポイントを使って3Dオブジェクトを作成します。
ポイント数はメニューの「Points」から選択可能。(9points,17points,33points)
ポイントをクリック・ドラッグして造形し、左半分は左右対称の形です。
ここで作った物を360°回転したものがスカルプト適用後の形になります。

作成したイメージです。これを、SaveTGAで保存します。これでスカルプトテクスチャの完成です。
では、ROKUROで作成した画像をセカンドライフにアップしましょう。
セカンドライフを起動し、「画像のアップロード」でアップロードします。
アップロードする際に「sculpted prim」を選択します。

画面上で確認できるので、OKならばアップロードしてください。
【 スカルプトプリム作成方法 】
アップさせた画像をSL内に作成する方法です。

まず純粋になにか生成し、オブジェクトタブの建設物ブロックタイプから「Sculpted」を選択します。

あとは「Sculpt texture」をクリックしてテクスチャーを選択すれば完成です。
もちろん他オブジェクト同様にテクスチャや色の変更も出来ます。
後はシリンダーで作成したロウソクをリンクして「キャンドルライト」の完成です。
「blender」や「lightwave」でも同様に作成できますが、1プリムで色々な形が成型できるので、
土地を借りているひとは是非お試しください。
→キャンドルのパーティクルの説明はコチラから
2007年10月25日
カウンターチェアー変更しました!
前回の記事で作成した椅子ですが、
上に表示されている文字が英語だったので、もっとわかりやすくするために日本語表示にスクリプトを変更しました。
現状では日本語をそのまま表示することはできないので、utf8をURLエンコードした文字列を llUnescapeURLすることで表示可能になります。
■変更後スクリプト
vector sitPos = <0,0.1,0.45>;
vector SitRot = <10,0,90>;
default {
state_entry(){
llSetText(llUnescapeURL("%E3%81%A9%E3%81%86%E3%81%9E%E5%BA%A7%E3%81%A3%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84"),<0,0,0>,1);
llSetSitText(llUnescapeURL("%E5%BA%A7%E3%82%8B"));
llSitTarget(sitPos,llEuler2Rot(SitRot*DEG_TO_RAD));
}
on_rez(integer param){
llResetScript();
}
changed(integer change){
if(change & CHANGED_LINK){
key agent = llAvatarOnSitTarget();
if(agent){
llSetText("",<0,0,0>,0);
}else{
llSetText(llUnescapeURL("%E3%81%A9%E3%81%86%E3%81%9E%E5%BA%A7%E3%81%A3%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84"),<0,0,0>,1);
}
}
}
}
下記のようになりました
上に表示されている文字が英語だったので、もっとわかりやすくするために日本語表示にスクリプトを変更しました。
現状では日本語をそのまま表示することはできないので、utf8をURLエンコードした文字列を llUnescapeURLすることで表示可能になります。
■変更後スクリプト
vector sitPos = <0,0.1,0.45>;
vector SitRot = <10,0,90>;
default {
state_entry(){
llSetText(llUnescapeURL("%E3%81%A9%E3%81%86%E3%81%9E%E5%BA%A7%E3%81%A3%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84"),<0,0,0>,1);
llSetSitText(llUnescapeURL("%E5%BA%A7%E3%82%8B"));
llSitTarget(sitPos,llEuler2Rot(SitRot*DEG_TO_RAD));
}
on_rez(integer param){
llResetScript();
}
changed(integer change){
if(change & CHANGED_LINK){
key agent = llAvatarOnSitTarget();
if(agent){
llSetText("",<0,0,0>,0);
}else{
llSetText(llUnescapeURL("%E3%81%A9%E3%81%86%E3%81%9E%E5%BA%A7%E3%81%A3%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84"),<0,0,0>,1);
}
}
}
}
下記のようになりました

2007年10月25日
アニメーションチェアーの作成

■足の部分
ブロックタイプ:チューブ
中空:90
中空の形:サークル
穴寸法:X=1.0、Y=0.4
プロフィールカット:B=0.3、E=1.0
そのままでも座ることが可能ですが、アバターの位置や等により座った際の向きが変わってしまうので、
スクリプトを埋め込みます。その際に文字を表示して座ってもらい易いように、設定します。
■LSL(座るスクリプト)
//変数・テキスト
//椅子の上の文字
string TextName1 = "SitChair";
//右クリック時のパイメニュー文字
string TextName2 = "Sit";
//座る時の場所
vector sitPos = <0,0.1,0.45>;
//座ったときの向き
vector SitRot = <10,0,90>;
default {
state_entry(){
llSetText(TextName1,<1,1,1>,1);
llSetSitText(TextName2);
llSitTarget(sitPos,llEuler2Rot(SitRot*DEG_TO_RAD));
}
//イベントリから出された場合に実行
on_rez(integer param){
llResetScript();
}
changed(integer change){
if(change & CHANGED_LINK){
key agent = llAvatarOnSitTarget();
if(agent){ //誰かが座ってる場合
llSetText("",<0,0,0>,0);
}else{ //座ってない場合
llSetText(TextName1llAbs,<1,1,1>,1);
}
}
}
}
これで椅子の完成です。

2007年10月25日
マック風PC製作
ものがなくカウンターだけだったオフィス受付にパソコンを製作することにしました。マック風に制作して、マウスもつけました。

マウスには文字表示のスプリクトを埋め込み、パソコンへのクリックを促し、パソコンをクリックすると、クリックした人にノートを渡すスプリクトをいれました。
クリックした際にIMでオーナーのもとへメッセージが送信されるので、受付にいなくても、セカンドライフ内にいる限り人が来たことを感知できる仕組みになっています。呼び鈴として戻ることも可能となりました。

■オブジェクト上に文字の表示
//スクリプトに記述
default {
state_entry(){
llSetText("ここに表示したいテキスト",ここに色,1.0);
}
}
+++色のパラメータ+++
<0.0,0.0,0.0>黒
<1.0,0.0,0.0>赤
<0.0,0.0,1.0>青
<1.0,1.0,0.0>黄色
<0.0,1.0,0.0>緑
<0.0,1.0,1.0>Aqua
++++++++++++++++
■IM(インスタントメッセージ)の送信の仕方
//下記をスクリプトに記述
default
{
touch_start(integer total_number)
{
llInstantMessage(llGetOwner(), "ここにメッセージ");
//GetOwnerはオーナーへ飛ばすという意
}
}

マウスには文字表示のスプリクトを埋め込み、パソコンへのクリックを促し、パソコンをクリックすると、クリックした人にノートを渡すスプリクトをいれました。
クリックした際にIMでオーナーのもとへメッセージが送信されるので、受付にいなくても、セカンドライフ内にいる限り人が来たことを感知できる仕組みになっています。呼び鈴として戻ることも可能となりました。

■オブジェクト上に文字の表示
//スクリプトに記述
default {
state_entry(){
llSetText("ここに表示したいテキスト",ここに色,1.0);
}
}
+++色のパラメータ+++
<0.0,0.0,0.0>黒
<1.0,0.0,0.0>赤
<0.0,0.0,1.0>青
<1.0,1.0,0.0>黄色
<0.0,1.0,0.0>緑
<0.0,1.0,1.0>Aqua
++++++++++++++++
■IM(インスタントメッセージ)の送信の仕方
//下記をスクリプトに記述
default
{
touch_start(integer total_number)
{
llInstantMessage(llGetOwner(), "ここにメッセージ");
//GetOwnerはオーナーへ飛ばすという意
}
}
2007年10月25日
回転するロゴの作成
名古屋サウスにある会社オフィスの上空にロゴを作成しました。
まずはベースのオブジェクトの作成。ベースは3つの三角柱と、立方体で制作、全てをリンクさせ、ひとつのオブジェクトに仕上げます。

できあがったロゴに、回転させるためのスクリプトの記述
セカンドライフ内で物を動かしたりするには「Linden Scrupting Language(LSL)」と呼ばれるスクリプト言語を用いて、プログラムを組みこんで動作させます。
今回使用した回転させるスクリプトです。

+++++++++++++++++++
default {
state_entry(){
llTargetOmega(<0,0,5>,1,1);
}
}
++++++++++++++++++++
defaultはプログラムが実行を開始するための状態で、
state_entryで実行させます。
llTargetOmegaは回転させるための指示で、
(<回転方向xyz>,スピード,重さ>の内容にそって動作します。
まずはベースのオブジェクトの作成。ベースは3つの三角柱と、立方体で制作、全てをリンクさせ、ひとつのオブジェクトに仕上げます。

できあがったロゴに、回転させるためのスクリプトの記述
セカンドライフ内で物を動かしたりするには「Linden Scrupting Language(LSL)」と呼ばれるスクリプト言語を用いて、プログラムを組みこんで動作させます。
今回使用した回転させるスクリプトです。

+++++++++++++++++++
default {
state_entry(){
llTargetOmega(<0,0,5>,1,1);
}
}
++++++++++++++++++++
defaultはプログラムが実行を開始するための状態で、
state_entryで実行させます。
llTargetOmegaは回転させるための指示で、
(<回転方向xyz>,スピード,重さ>の内容にそって動作します。