LlSetLinkTextureAnim/ja

From Second Life Wiki
< LlSetLinkTextureAnim
Revision as of 13:03, 24 December 2015 by Tomoyo Newall (talk | contribs) (<lsl></lsl> タグを <source lang="lsl2"></source> に置き換えました)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

要約

関数: llSetLinkTextureAnim( integer link, integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate );

指定されたプリムの指定された面にあるテクスチャを、テクスチャのスケールとオフセットを設定することでアニメーションさせます。llSetTextureAnim と同じですが、リンクセットの中のどのプリムにも設定できます。 指定されたプリムの指定された面のテクスチャの寸法とオフセットの設定で、面(複数面)上のテクスチャを動かします。

• integer link リンク 番号 (0: リンクなし, 1: ルートプリム, >1: 子プリム) または LINK_* フラグ 作用する面
• integer mode モードフラグのマスク
• integer face 番号もしくは ALL_SIDES
• integer sizex 横フレーム( ROTATESCALE では無効です)
• integer sizey 縦フレーム( ROTATESCALE では無効です)
• float start 開始位置(フレーム)番号(または ROTATE の角度)
• float length 表示するフレーム数(または ROTATE の角度)
• float rate 毎秒のフレーム数(0 にすべきではありません)

faceALL_SIDES であれば関数は全ての面に作用します。 start には 負のインデックス を使用できます。 フレームは 0 から始まって、左から右、上から下に数えられます。
rate がマイナス域の場合、 REVERSE フラグを使っているのと同じ効果があります。[1]

仕様

インデックス
先頭 0 -length
末尾 length - 1 -1

インデックス

  • 正のインデックスは先頭から数えます。先頭の要素は 0、末尾の要素は (length - 1) のインデックスを持ちます。
  • 負のインデックスは末尾から数えます。先頭の要素は -length、末尾の要素は -1 のインデックスを持ちます。

フレーム

フレームはテクスチャの中の sub-rectangles です。縦 2 (sizex) 横 3 (sizey) のフレームセットは、テクスチャ全体が 3 行 2 桁 の画像に切り分けられ、それぞれがフレームとなることを意味しています。llSetTextureAnim will animate across these 6 starting with the top left image and going across and down, optionally repeating. SMOOTH が設定されていると、フレームは次から次へとスムーズにスライドしていき、OFF になっていると、それぞれのフレームはかわるがわる面の中心に表示されます。

フラグ 説明
LINK_ROOT 1 リンクセットの中のルートプリムに送ります
LINK_SET -1 全プリムに送ります
LINK_ALL_OTHERS -2 自分以外の全プリムに送ります
フラグ 説明
LINK_ALL_CHILDREN -3 (ルートプリム以外の全ての)子プリムに送ります
LINK_THIS -4 スクリプトの入った自プリムに送ります

モード 説明
ANIM_ON 0x01 テクスチャのアニメーションは ON です。アニメーションを開始するときに設定し、停止するときに解除しなければなりません。
LOOP 0x02 テクスチャのアニメーションをループさせます。
REVERSE 0x04 アニメーションを逆順で再生します。
PING_PONG 0x08 アニメーションを順番に再生し、そのあとで逆順に再生します。
SMOOTH 0x10 それぞれのフレームを再生するのではなく、X 方向にスライドさせます。SCALEROTATE のモードで、スムーズな切り替えができます。
ROTATE 0x20 テクスチャを回転させます。
SCALE と併用できません。
SCALE 0x40 テクスチャを拡大させます。
ROTATE と併用できません。

警告

  • face が存在しない面を指している場合、関数はエラーを出さずに復帰します。
  • start が正常なインデックス範囲を外れていても、スクリプトはエラー表示を出さずに処理を続けます。
  • 1 つのプリムに 1 つのテクスチャアニメーションのみ設定することができます。
    • 同じプリムで llSetTextureAnim を複数回呼ぶと、それをリセットします。
  • ROTATE フラグと SCALE フラグを併用することはできません。
  • sizexsizey は両方とも 0 ~ 255 に制限されています。
  • llSetTextureAnim はオンのとき、 X 方向と Y 方向で 1 回ずつ繰り返し、回転とオフセットは 0 となっているテクスチャを表示します。

サンプル

これはテクスチャを滑らかにずらし、終端についたときに繰り返します。

llSetLinkTextureAnim(LINK_THIS, ANIM_ON | SMOOTH | LOOP , ALL_SIDES, 1, 1, 1, 1, 1);

これは反対方向にテクスチャを滑らかにずらします。

llSetLinkTextureAnim(LINK_THIS, ANIM_ON | SMOOTH | LOOP , ALL_SIDES, 1, 1, 1, 1, -1);

横8縦8の64セルにテクスチャを分割し、左から右、上から下に通して反転させます。セルアニメーションで使い勝手がいいです。

llSetLinkTextureAnim(LINK_THIS, ANIM_ON | LOOP, ALL_SIDES, 8, 8, 0, 64, 6.4 );

これは毎秒2回、半時計周りにテクスチャを回転します。最後の値は-2*TWO_PIの時計周り回転に変わります。

llSetLinkTextureAnim(LINK_THIS, ANIM_ON | SMOOTH | ROTATE | LOOP, ALL_SIDES,1,1,0, TWO_PI, 2*TWO_PI);

これはテクスチャを拡大縮小して変形します。

llSetLinkTextureAnim(LINK_THIS, ANIM_ON | SMOOTH | SCALE | PING_PONG | LOOP, ALL_SIDES, 1, 1, 1, 3, 2);

これは全てのテクスチャアニメーションを停止させます。

llSetLinkTextureAnim(LINK_THIS, FALSE, ALL_SIDES, 0, 0, 0.0, 0.0, 1.0);

注意点

リンク番号

オブジェクトを構成するそれぞれのプリムにはアドレスがあります。それがリンク番号です。オブジェクトの特定のプリムにアクセスするには、そのプリムのリンク番号を知らなければなりません。リンク番号はプリムに振られますが、オブジェクトに座っているアバターにも振られます。

  • オブジェクトが単一のプリムで構成されていて、アバターが座っていないとき、(ルート)プリムのリンク番号は 0 です。
  • しかし、オブジェクトが複数のプリムで構成されていたり、オブジェクトに座っているアバターがいたりすると、ルートプリムのリンク番号は 1 となります。

アバターがオブジェクトに座ると、リンクセットの末尾に追加され、いちばん大きなリンク番号が振られることになります。さらに、アバターがオブジェクトに座っている場合、アバターを立たせないと、プリムのリンク・リンク解除ができません。

プリムやアバターの数え方

オブジェクトのプリムや、プリムに座っているアバターの数を調べるのに、2つの関数があります。

  • llGetNumberOfPrims() - プリムと座っているアバターの数を返します。
  • llGetObjectPrimCount(llGetKey()) - オブジェクトのプリムの数だけを返しますが、アタッチメントとなっている場合は 0 を返します。
integer GetPrimCount() { //常にプリムの数だけを返します。
    if(llGetAttached())//装着されているか?
        return llGetNumberOfPrims();//アバターとプリムの数を返しますが、アタッチメントの上には座れないのでこれでいいです。
    return llGetObjectPrimCount(llGetKey());//プリムの数だけを返しますが、アタッチメントの場合ここは通りません。
}

テクスチャアニメーションはプリムのプロパティです (例えば、アニメーションを開始させてからスクリプトを抜くことができます。いずれにせよプリムはその設定を覚えています)。しかし、2009 年 1 月時点ではまだ、テクスチャアニメーションは Shift ドラッグによってコピーされるとその設定が消えてしまうプリムプロパティとなっています。最初にこの問題が VWR-640 でもちあがり、SVC-3925 で分離独立して議論されています。

早くざっくりと GIF をアニメーションテクスチャに変換するオンラインツールがこちらにあります。 http://www.peregrinesalon.com/anim/ (2009 年 1 月現在で有効なリンクです)

関連項目

関数

•  llGetLinkNumber スクリプトが入っているプリムのリンク番号を取得します。
•  llSetTextureAnim スクリプトが動作しているプリムのテクスチャアニメーションを設定します。

記事

•  負のインデックス

特記事項

All Issues

~ Search JIRA for related Issues
   Some persistent prim properties lost when duplicated
   Texture Animation is not copied (llSetTextureAnim)
   Texture animations ignore repeats per face

脚注

  1. ^ しかし、rate がマイナスで REVERSE フラグが使用されていると、効果が打ち消されます。

Signature

function void llSetLinkTextureAnim( integer link, integer mode, integer face, integer sizex, integer sizey, float start, float length, float rate );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。