2011年09月21日
llCastRay()実装
されたみたいですね。
和訳がまだないようですので簡単にまとめておきます。
リージョン座標startからendを結ぶ直線上を調査して、検出されたオブジェクト、アバター、地面等について、optionsで指定された属性とUUIDと座標をlistで返します。
また、戻りリストの末尾はエラーコードまたは検出された物の数となります。
末尾の数(integer)が負の値の場合は、以下の意味となります。
RCERR_UNKNOWN(-1)
理由が分かりませんがエラーです。バグレポートをリンデンに送りましょう。
RCERR_SIM_PERF_LOW(-2)
SIMが重すぎて実行できませんでした。
RCERR_CAST_TIME_EXCEEDED(-3)
地区やアバターで許されている実行用のリソースが使い切られていて実行できませんでした。
少し時間を空けると実行できるようになります。
RC_REJECT_TYPES
無視するものを以下のフラグのビット和( | )で指定できます。
RC_REJECT_AGENTS アバターを無視します
RC_REJECT_PHYSICAL 物理プリムを無視します
RC_REJECT_NONPHYSICAL 通常プリムを無視します
RC_REJECT_LAND 地面を無視します
RC_DATA_FLAGS
取得するデーターにいくつかの追加、変更を行えます。以下のフラグのビット和( | )で指定できます。
RC_GET_NORMAL 検出地点(プリムの表面で起こります)の法線ベクトル(面に垂直な単位ベクトル)を追加して返します。
RC_GET_ROOT_KEY 指定すると検出したプリムのリンクセットのルートプリムのUUIDを返します。デフォルトでは検出したプリムそのもののUUIDが返ります。
RC_GET_LINK_NUM 指定するとそのリンクセットのプリム数を追加して返します。
戻るlistの値は、
指定なし
[uuid , 検出されたプリム表面のリージョン座標 , ・・・・・・,検出した数]
RC_GET_LINK_NUMを指定
[uuid , リンク数 , 検出されたプリム表面のリージョン座標 , ・・・・・・,検出した数]
RC_GET_NORMALを指定
[uuid , 検出されたプリム表面のリージョン座標 , 法線ベクトル , ・・・・・・,検出した数]
RC_GET_LINK_NUMとRC_GET_NORMALを指定
[uuid , リンク数 , 検出されたプリム表面のリージョン座標 , 法線ベクトル , ・・・・・・,検出した数]
と並びます。検出したオブジェクトが複数の場合の、飛び石リストの並び順はstartからendへ向かう順になっているようです。(※地面にあたるとNULL_KEYが入るのでしょうか。また、地面の中からスタートするとNULL_KEYは入らずのようです。同様にプリムの中からスタートするとそのプリムは無視するのかもしれません。)
RC_MAX_HITS
ヒットさせる最大数を指定します。デフォルトは1で、出来るだけ小さい数が当然望ましいらしいです。
RC_DETECT_PHANTOM
TRUEを指定するとファントムとVolume Detectプリムを検出の対象にするようになります。
という感じみたいです。
これ、斜面でも斜面に沿って足を下ろす、ちゃんと歩行して見える乗り物が作れますね。。(笑
あんまり激しく使うとすぐエラー-3が返ってきますが・・・
和訳がまだないようですので簡単にまとめておきます。
list llCastRay( vector start, vector end, list options )
リージョン座標startからendを結ぶ直線上を調査して、検出されたオブジェクト、アバター、地面等について、optionsで指定された属性とUUIDと座標をlistで返します。
また、戻りリストの末尾はエラーコードまたは検出された物の数となります。
末尾の数(integer)が負の値の場合は、以下の意味となります。
RCERR_UNKNOWN(-1)
理由が分かりませんがエラーです。バグレポートをリンデンに送りましょう。
RCERR_SIM_PERF_LOW(-2)
SIMが重すぎて実行できませんでした。
RCERR_CAST_TIME_EXCEEDED(-3)
地区やアバターで許されている実行用のリソースが使い切られていて実行できませんでした。
少し時間を空けると実行できるようになります。
オプション設定
RC_REJECT_TYPES
無視するものを以下のフラグのビット和( | )で指定できます。
RC_REJECT_AGENTS アバターを無視します
RC_REJECT_PHYSICAL 物理プリムを無視します
RC_REJECT_NONPHYSICAL 通常プリムを無視します
RC_REJECT_LAND 地面を無視します
RC_DATA_FLAGS
取得するデーターにいくつかの追加、変更を行えます。以下のフラグのビット和( | )で指定できます。
RC_GET_NORMAL 検出地点(プリムの表面で起こります)の法線ベクトル(面に垂直な単位ベクトル)を追加して返します。
RC_GET_ROOT_KEY 指定すると検出したプリムのリンクセットのルートプリムのUUIDを返します。デフォルトでは検出したプリムそのもののUUIDが返ります。
RC_GET_LINK_NUM 指定するとそのリンクセットのプリム数を追加して返します。
戻るlistの値は、
指定なし
[uuid , 検出されたプリム表面のリージョン座標 , ・・・・・・,検出した数]
RC_GET_LINK_NUMを指定
[uuid , リンク数 , 検出されたプリム表面のリージョン座標 , ・・・・・・,検出した数]
RC_GET_NORMALを指定
[uuid , 検出されたプリム表面のリージョン座標 , 法線ベクトル , ・・・・・・,検出した数]
RC_GET_LINK_NUMとRC_GET_NORMALを指定
[uuid , リンク数 , 検出されたプリム表面のリージョン座標 , 法線ベクトル , ・・・・・・,検出した数]
と並びます。検出したオブジェクトが複数の場合の、飛び石リストの並び順はstartからendへ向かう順になっているようです。(※地面にあたるとNULL_KEYが入るのでしょうか。また、地面の中からスタートするとNULL_KEYは入らずのようです。同様にプリムの中からスタートするとそのプリムは無視するのかもしれません。)
RC_MAX_HITS
ヒットさせる最大数を指定します。デフォルトは1で、出来るだけ小さい数が当然望ましいらしいです。
RC_DETECT_PHANTOM
TRUEを指定するとファントムとVolume Detectプリムを検出の対象にするようになります。
という感じみたいです。
これ、斜面でも斜面に沿って足を下ろす、ちゃんと歩行して見える乗り物が作れますね。。(笑
あんまり激しく使うとすぐエラー-3が返ってきますが・・・
他人が座っているプリムの情報取得/REZした物の情報取得
Visual C# スキャナーから画像を取り込み
lsl 乱数生成器
lslのlistで連想配列もどき・・
PIの比較で90度と270度を切り分けるには・・
LSLコード色づけ~これはすごいですね
Visual C# スキャナーから画像を取り込み
lsl 乱数生成器
lslのlistで連想配列もどき・・
PIの比較で90度と270度を切り分けるには・・
LSLコード色づけ~これはすごいですね
Posted by RBK Drachnyd(しお) at 20:59│Comments(6)
│忘れない為に。。
Comments
これかなり行けている命令なのですが、重さがネックっぽいですね。
Posted by Maaya Yohkoh at 2011年09月21日 21:56
Maaya Yohkohさま
はじめまして。m(__)m
そうですねぇ。。結局物理の衝突判定と同じ物を直線状にすることになりますから、それなりに。。と思います。
航空機用の高度計に使ってみましたが、その場合ですと、96㍍センサーを使っていた従来品(ヒュージプリムの床を想定して真下方向半球状)に比べますと、スクリプトタイムはかなり下がる様でした。
事前のふれこみでは非接触型の武器に、という様な記述もございましたが、こちらはちょっとどうかなといった感想です。-3出過ぎで、同じ地区で激しい撃ち合いに耐えられますかどうか・・・
はじめまして。m(__)m
そうですねぇ。。結局物理の衝突判定と同じ物を直線状にすることになりますから、それなりに。。と思います。
航空機用の高度計に使ってみましたが、その場合ですと、96㍍センサーを使っていた従来品(ヒュージプリムの床を想定して真下方向半球状)に比べますと、スクリプトタイムはかなり下がる様でした。
事前のふれこみでは非接触型の武器に、という様な記述もございましたが、こちらはちょっとどうかなといった感想です。-3出過ぎで、同じ地区で激しい撃ち合いに耐えられますかどうか・・・
Posted by RBK Drachnyd(しお)
at 2011年09月21日 22:45

ついに実装ですかー
穴あきとか、重心ずらしとかも正しく検出できるのだろーか。
でも、結局、今の「センサー重いから使うな!」的な扱いを受けそうですね。
個人的には、start~endを何秒かけて走査するのかとかも、設定できるとおもしろいかも。
穴あきとか、重心ずらしとかも正しく検出できるのだろーか。
でも、結局、今の「センサー重いから使うな!」的な扱いを受けそうですね。
個人的には、start~endを何秒かけて走査するのかとかも、設定できるとおもしろいかも。
Posted by you Xiao at 2011年09月22日 05:03
you Xiaoさま
穴あきプリムは正しく穴を認識するようです。パスカットも。人が通過できないスカルプテッドの透明部分は穴とはみなさない様です。メッシュは手持ちが無い為試しておりません。
SIM境界を越えての検出は出来ない様です。
llGetTime()の結果を見ている限りでは、一回実行の応答速度はセンサーとあまり変わらない~かなり速い(安定しません)様で、検出の際にブロック遷移が無いのが楽なのと、イベント間遅延が入らない分は速くなる、という風ですので、その時刻で出来るだけ最新値が常に欲しいのでセンサーを0.01リピートし続ける、という組み方をしていた物は、差し替えますと性能はぐっと上がると思います。
穴あきプリムは正しく穴を認識するようです。パスカットも。人が通過できないスカルプテッドの透明部分は穴とはみなさない様です。メッシュは手持ちが無い為試しておりません。
SIM境界を越えての検出は出来ない様です。
llGetTime()の結果を見ている限りでは、一回実行の応答速度はセンサーとあまり変わらない~かなり速い(安定しません)様で、検出の際にブロック遷移が無いのが楽なのと、イベント間遅延が入らない分は速くなる、という風ですので、その時刻で出来るだけ最新値が常に欲しいのでセンサーを0.01リピートし続ける、という組み方をしていた物は、差し替えますと性能はぐっと上がると思います。
Posted by RBK Drachnyd(しお)
at 2011年09月22日 10:01

うかうかしてる間に、きっちりお返事もらえてた!
思ったより優秀な感じですね
なんかで試してみよう...
思ったより優秀な感じですね
なんかで試してみよう...
Posted by you Xiao at 2011年09月27日 23:05
今年のLSL-Conでは色々出てくるかもしれませんね。;_;/
Posted by RBK Drachnyd(しお)
at 2011年10月06日 22:32
