「(補足)modelsUnderLay」の編集履歴(バックアップ)一覧はこちら
「(補足)modelsUnderLay」(2005/07/24 (日) 19:59:32) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
ModelsUnderLayについて補足。<br>
<br>
<blockquote><b>modelsUnderRay</b><br>
<br>
<b>シンタックス</b><br>
<br>
member(キャストメンバー).modelsUnderRay(位置ベクトル,
方向ベクトル {, モデルの最大数,
レベルオブディテール})<br>
<br>
<b>解説</b><br>
<br>
3D
コマンド。レイが当たるモデルのリストを返します。レイの開始位置を位置ベクトルに、レイの方向を方向ベクトルに指定します。どちらのベクトルもワールド座標で指定します。<br>
<br>
オプションの maxNumberOfModels
パラメータを指定すると、返されるリストの長さを制限できます。このパラメータを指定しない場合、指定されたレイが当たる、全モデルの参照を含むリストを返します。<br>
<br>
オプションの levelOfDetail
パラメータは、返される情報のレベルオブディテールを指定できます。levelOfDetail
パラメータは、以下の値を取ります。<br>
<br>
#simple。そのポイントから見つかったモデルへの参照を含むリストを返します。これはデフォルト設定です。<br>
<br>
#detailed。交差するモデルを表すプロパティリストのリストを返します。各プロパティリストには以下のプロパティがあります。<br>
<br>
#model。交差するモデルオブジェクトへの参照です。<br>
<br>
#distance。locationVector
で指定されるワールド位置から、モデルの交差ポイントへの距離です。<br>
<br>
#isectPosition。交差ポイントのワールドスペースを表すベクトルです。<br>
<br>
#isectNormal。交差ポイントのメッシュへのワールドスペース法線ベクトルです。<br>
<br>
#meshID。交差するメッシュのメッシュ ID です。この ID
は、meshDeform
モディファイアのメッシュリストのインデックスとして使用できます。<br>
<br>
#faceID。交差するフェイスのフェイス ID です。この ID
は、meshDeform
モディファイアのフェイスリストのインデックスとして使用できます。<br>
<br>
#vertices。交差するフェイスの頂点のワールドスペース位置を表す、ベクトルの
3 つのエレメントリストです。<br>
<br>
#uvCoord。フェイスの u および v の重心座標を表す、#u
プロパティおよび #v
プロパティを持つプロパティリストです。<br>
<br>
返されたリストにある最初のモデルは、位置ベクトルで指定された位置に最も近いモデルで、最後にあるモデルは、その位置から最も遠いモデルです。<br>
<br>
モデルごとに 1 つの交差 (最も近い交差)
のみが返されます。<br>
<br>
指定されたレイからモデルが見つからない場合は、空のリストを返します。<br>
<br>
例文<br>
<br>
次のステートメントは、ベクトル (0, 0, 300) の位置から Z
軸の方向を指すレイが当たるモデルの詳細情報を表示します。<br>
<br>
put member("3d").modelsUnderRay(vector(0, 0, 300), vector(0, 0, -1), 3,
#detailed)<br>
-- [[#model: model("mSphere"), #distance: 275.0000, #isectPosition: vector(
0.0000, 0.0000, 25.0000 ), #isectNormal: vector( -0.0775, 0.0161, 0.9969 ),
#meshID: 1, #faceID: 229, #vertices: [vector( 0.0000, 0.0000, 25.0000 ),
vector( -3.6851, 1.3097, 24.6922 ), vector( -3.9017, 0.2669, 24.6922 )],
#uvCoord: [#u: 0.0000, #v: 0.0000]]]<br></blockquote>
<br>
#isectNormalはけっこう使える。あとこれ、坂道の検出とかにも使えるっぽい。<br>
<br>
衝突判定用ワールドを置く場合は、<br>
member(キャストメンバー).modelsUnderRay(位置ベクトル,
方向ベクトル {, モデルの最大数,
レベルオブディテール})<br>
member(キャストメンバー).の部分を表示用ワールドではなくて判定用ワールドに書き換える。<br>
<br>
<p>ModelsUnderLayについて補足。</p>
<blockquote><b>modelsUnderRay</b><br>
<br>
<b>シンタックス</b><br>
<br>
member(キャストメンバー).modelsUnderRay(位置ベクトル,
方向ベクトル {, モデルの最大数,
レベルオブディテール})<br>
<br>
<b>解説</b><br>
<br>
3D
コマンド。レイが当たるモデルのリストを返します。レイの開始位置を位置ベクトルに、レイの方向を方向ベクトルに指定します。どちらのベクトルもワールド座標で指定します。<br>
<br>
オプションの maxNumberOfModels
パラメータを指定すると、返されるリストの長さを制限できます。このパラメータを指定しない場合、指定されたレイが当たる、全モデルの参照を含むリストを返します。<br>
<br>
オプションの levelOfDetail
パラメータは、返される情報のレベルオブディテールを指定できます。levelOfDetail
パラメータは、以下の値を取ります。<br>
<br>
#simple。そのポイントから見つかったモデルへの参照を含むリストを返します。これはデフォルト設定です。<br>
<br>
#detailed。交差するモデルを表すプロパティリストのリストを返します。各プロパティリストには以下のプロパティがあります。<br>
<br>
#model。交差するモデルオブジェクトへの参照です。<br>
<br>
#distance。locationVector
で指定されるワールド位置から、モデルの交差ポイントへの距離です。<br>
<br>
#isectPosition。交差ポイントのワールドスペースを表すベクトルです。<br>
<br>
#isectNormal。交差ポイントのメッシュへのワールドスペース法線ベクトルです。<br>
<br>
#meshID。交差するメッシュのメッシュ ID です。この ID
は、meshDeform
モディファイアのメッシュリストのインデックスとして使用できます。<br>
<br>
#faceID。交差するフェイスのフェイス ID です。この ID
は、meshDeform
モディファイアのフェイスリストのインデックスとして使用できます。<br>
<br>
#vertices。交差するフェイスの頂点のワールドスペース位置を表す、ベクトルの
3 つのエレメントリストです。<br>
<br>
#uvCoord。フェイスの u および v の重心座標を表す、#u
プロパティおよび #v
プロパティを持つプロパティリストです。<br>
<br>
返されたリストにある最初のモデルは、位置ベクトルで指定された位置に最も近いモデルで、最後にあるモデルは、その位置から最も遠いモデルです。<br>
<br>
モデルごとに 1 つの交差 (最も近い交差)
のみが返されます。<br>
<br>
指定されたレイからモデルが見つからない場合は、空のリストを返します。<br>
<br>
例文<br>
<br>
次のステートメントは、ベクトル (0, 0, 300) の位置から Z
軸の方向を指すレイが当たるモデルの詳細情報を表示します。<br>
<br>
put member("3d").modelsUnderRay(vector(0, 0, 300), vector(0, 0, -1), 3,
#detailed)<br>
-- [[#model: model("mSphere"), #distance: 275.0000, #isectPosition: vector(
0.0000, 0.0000, 25.0000 ), #isectNormal: vector( -0.0775, 0.0161, 0.9969 ),
#meshID: 1, #faceID: 229, #vertices: [vector( 0.0000, 0.0000, 25.0000 ),
vector( -3.6851, 1.3097, 24.6922 ), vector( -3.9017, 0.2669, 24.6922 )],
#uvCoord: [#u: 0.0000, #v: 0.0000]]]<br></blockquote>
<br>
#isectNormalはけっこう使える。あとこれ、坂道の検出とかにも使えるっぽい。<br>
<br>
衝突判定用ワールドを置く場合は、<br>
member(キャストメンバー).modelsUnderRay(位置ベクトル,
方向ベクトル {, モデルの最大数,
レベルオブディテール})<br>
member(キャストメンバー).の部分を表示用ワールドではなくて判定用ワールドに書き換える。<br>
<br>
表示オプション
横に並べて表示:
変化行の前後のみ表示: