• メールアドレス:
  • パスワード:

Second Life 新世界的ものづくりのススメ--その31:パーティクル5

大槻透世二(サイバーアドベンチャー)
2007/11/08 08:00

 これで最初に見たソースコードと同じになる。「TRUE」か「FALSE」あるいは、最初にある変数の定義部分で数値を変化させれば、パーティクルのいろいろな挙動を試すことができる。少し長いが、これで汎用的に使えるスクリプトが出来上がった。参考のため、ソースコードをテキストでも下に載せておこう。

//==========================================================================
// Particle Script 4.2
//==========================================================================
// Created by Ama Omega : 10-10-2003
// Edited & Updated by Jin Spear : 24-10-2007
//==========================================================================
//
//==========================================================================
// 1.System Behavior //
//==========================================================================
// : Mask Flags - set to TRUE to enable
//--------------------------------------------------------------------------
integer bounce = FALSE;       // Bounce on the center of Object up    
integer glow = TRUE;          // Lighting in the night        
integer followSource = FALSE; // Follow the Object
integer followVel = TRUE;     // Sprit from center to Out
integer interpColor = TRUE;   // Enable "endColor" in 43 line
integer interpSize = TRUE;    // Enable "endColor" in 47 line  
integer wind = FALSE;         // Affected wind force.

//==========================================================================
// 2.System Pesentation // 
//==========================================================================
// : Choose a pattern from the following:
//--------------------------------------------------------------------------
// PSYS_SRC_PATTERN_ANGLE
// PSYS_SRC_PATTERN_ANGLE_CONE
// PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
// PSYS_SRC_PATTERN_DROP
// PSYS_SRC_PATTERN_EXPLODE
//--------------------------------------------------------------------------
integer pattern = PSYS_SRC_PATTERN_EXPLODE;
float innerAngle = 1.55;   // Inner angle for all ANGLE patterns
float outerAngle = 1.54;   // Outer angle for all ANGLE patterns
float radius = 0;  // Radius to emit particles for BURST pattern

//--------------------------------------------------------------------------
// Select a target for particles to go towards
//--------------------------------------------------------------------------
// "owner" will follow object owner 
// "self" will target this object
//  or put the key of an object for particles to go to
key targetLine = "";  
key targetPosi = ""; 

//==========================================================================
// 3.Particle Appearance //     
//==========================================================================
vector startColor = <0,25,0>;  // Start color of particles 
vector endColor = <0,75,0>;    // End alpha (transparency) value
float startAlpha = 10;         // Start alpha (transparency) value
float endAlpha = 10;           // End alpha (transparency) value
vector startSize = <.5,.5,.5>; // Start size of particles 
vector endSize = <.1,.1,.1>;   // End size of particles 

//--------------------------------------------------------------------------
// Put any texture into Object
//--------------------------------------------------------------------------
// texure name between " and "
string texture = "";      

//==========================================================================
// 4.Particle Flow //
//==========================================================================
float life = 0;  // Life in seconds for the system to make particles
float age = 1.5; // Life of each particle
float rate = .1;        // How fast (rate) to emit particles
integer count = 10;     // How many particles to emit per BURST 

//==========================================================================
// 5.Particle Motion //       
//==========================================================================
vector push = <0,0,1>;   // Force pushed on particles
vector omega = <0,0,10>; // Rotation of ANGLE around the source
float minSpeed = .1;    // Min speed each particle is spit out at
float maxSpeed = .2;    // Max speed each particle is spit out at  

//==========================================================================
// ** Script variables
//==========================================================================
integer flags; 

default
{
    state_entry()
    {
        flags = 0;
        if (targetLine == "owner") targetLine = llGetOwner();
        if (targetLine == "self") targetLine = llGetKey();
        if (targetPosi == "owner") targetPosi = llGetOwner();
        if (targetPosi == "self") targetPosi = llGetKey();
        if (bounce) flags = flags | PSYS_PART_BOUNCE_MASK;
        if (glow) flags = flags | PSYS_PART_EMISSIVE_MASK;
        if (followSource) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;
        if (followVel) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;
        if (interpColor) flags = flags | PSYS_PART_INTERP_COLOR_MASK;
        if (interpSize) flags = flags | PSYS_PART_INTERP_SCALE_MASK;
        if (targetLine != "") flags = flags | PSYS_PART_TARGET_LINEAR_MASK;
        if (targetPosi != "") flags = flags | PSYS_PART_TARGET_POS_MASK;
        if (wind) flags = flags | PSYS_PART_WIND_MASK;

        llParticleSystem(
        [                          
            // 1.System Behavior //
            PSYS_PART_FLAGS, flags,
            
            // 2.System Pesentation // 
            PSYS_SRC_PATTERN, pattern,        
            PSYS_SRC_BURST_RADIUS, radius,
            PSYS_SRC_ANGLE_BEGIN, outerAngle,
            PSYS_SRC_ANGLE_END, innerAngle, 
            PSYS_SRC_TARGET_KEY, targetPosi,                        
            PSYS_SRC_TARGET_KEY, targetLine,                        

            // 3.Particle Appearance // 
            PSYS_PART_START_COLOR, startColor,
            PSYS_PART_END_COLOR, endColor,
            PSYS_PART_START_ALPHA, startAlpha,
            PSYS_PART_END_ALPHA, endAlpha,    
            PSYS_PART_START_SCALE, startSize,
            PSYS_PART_END_SCALE, endSize, 
            PSYS_SRC_TEXTURE, "",

            // 4.Particle Flow // 
            PSYS_SRC_MAX_AGE, life,
            PSYS_PART_MAX_AGE, age,
            PSYS_SRC_BURST_RATE, rate,
            PSYS_SRC_BURST_PART_COUNT, count,

            // 5.Particle Motion // 
            PSYS_SRC_ACCEL, push,     
            PSYS_SRC_OMEGA, omega,
            PSYS_SRC_BURST_SPEED_MIN, minSpeed,
            PSYS_SRC_BURST_SPEED_MAX, maxSpeed
        ]);
    }

}

//==========================================================================



 さて、今回で、バイク編の2番目である「パーティクル」が終わった。次回は最後の「乗物エンジン」に移ろう。主に、バイク(2輪車)にはなるが、自動車(4輪車)も同様の原理で動くようになる。

 次回からもかなり長いスクリプトになるが、これをクリアすれば、好きな2輪車や4輪車など、何でも作ることが出来る。それでは、次回もお楽しみに

大槻透世二氏
大槻透世二サイバーアドベンチャー(株)
代表取締役社長/CEO

デジタルハリウッド大学院
次世代インターフェース研究室 研究員
Second Life研究室 研究員/プロデューサー
Linden社推薦 Second Lifeセミナー講師

東北大学心理学専攻卒業。1年間のLA留学を経て、ソリッドレイ研究所でバーチャルリアリティのシステムインテグレーション、立体映像システム構築、HMDシステム構築などを経験。IT系コンサルティング会社を経て、デジタルハリウッド大学大学院コンテンツマネジメント修士課程修了(MCA)。その後、Linden Lab本社にてSecond Lifeカリキュラムのトレーニングを受ける。現在デジタルハリウッドにて「Second Life」セミナーを開催。また、バーチャルリアリティ、メタバース関連のシステム開発/プロデュースを行うサイバーアドベンチャー(株)を設立し、そのCEO職に就いている。

« 前へ
キーショートカット:  b - 前のページ n - 次のページ
バックナンバー
この記事を読み解くキーワード:
オープンソース
オンラインゲーム
オンラインゲーム
PCゲーム
Webサービス
ZDNet用語検索
企業情報
キーワード
関連ホワイトペーパー
関連製品
関連リリース
関連イベント

注目記事

「似非」SOAを見破る10の方法

・SOAと言いながらも、実はSOAの体を成していないものがある。本記事では、そういった「似非」SOAを見破る方法を紹介する。 2008/07/09 08:00 【ITマネジメント

マイクロソフト:Vistaについて「心配する時期は終わった」

・Microsoftはパートナー向けのカンファレンスで、Vistaについて心配する時期は過ぎたことを改めて強調し、特定のハードやソフトのVistaとの互換性をチェックできる新ポータルサイトや、小規模企業向けの新サポートサービスを発表した。 2008/07/09 09:07 【オール・アバウト・マイクロソフト

企画特集

Techno ExchangeTechno Exchange
全体最適化で進めるCTCのグリーンIT戦略
今知るべき仮想化情報今知るべき仮想化情報
インフラからアプリケーションまで、これを知らずに仮想化は語れない
ZDNet Japan Green ITZDNet Japan Green IT
洞爺湖サミット目前!環境に配慮したGreen ITとは?
「未来の、その先」をどう提言していくか「未来の、その先」をどう提言していくか
クラウドコンピューティングが導く新しいシステム
DELL連載第4回〜「Microsoft System Center」DELL連載第4回〜「Microsoft System Center」
PowerEdgeサーバに最適な運用管理ソリューション後編
ブログ RSS Feed
洞爺湖と環境と私
裏方の裏方日記〜日々是広報 2008/05/20 12:57
プロがなぜ、二次創作を願うのか--Gacktが歌い、三浦建太郎が描く「がくっぽいど」
ミュージシャンのGacktさんと漫画家の三浦建太郎さんという2人のプロが参加しながらも、ユーザーが自由に作品を公開できるという歌声合成ソフト「がくっぽいど」。この開発経緯を開発元に聞いた。
iPhone、月額通信料金は7280円からに--ソフトバンクモバイルが発表
UPDATE ソフトバンクモバイルはiPhoneの通信料金プランを発表した。月額980円のホワイトプランに、データ定額制プラン「パケット定額フル」、「S!ベーシックパック(i)」をあわせ、月額7280円からとなる。
ジョブズ氏引退後のアップルを考える
カリスマ的な創業者が社を去った後、会社の業績が低迷する事例は、ハイテクだけでなく、さまざまな業界で見られる。アップルは「ジョブズ氏後」に備えているのかどうか検討する。