NurbsSurfaceMesh.GetClosestSurfacePosition

NurbsSurfaceMesh.GetClosestSurfacePosition operator

説明

サーフェイスのインデックス、サーフェイス上のポイントの位置、UV 値および指定された位置からの距離の 2 乗を戻します。

注: このメソッドでは output arguments が使用されます。C#および他のスクリプト言語(JScript、PerlScript など)では、引数の参照渡しは使用できません。ただし、C#、JScript、および PerlScript で使用しても安全な、このメソッドの代替バージョン NurbsSurfaceMesh.GetClosestSurfacePosition2 が用意されています。

C#構文

NurbsSurfaceMesh.GetClosestSurfacePosition( Object in_vPosition, Object& out_pvSurfaceIndex, Object& out_pvSquaredDistance, Object& out_pvUValue, Object& out_pvVValue, Object& out_pvPosition );

スクリプト構文

NurbsSurfaceMesh.GetClosestSurfacePosition( Position, [Index], [SquaredDistance], [UValue], [VValue], [Position] );

パラメータ

パラメータ タイプ 説明
Position SIVector3または 3 つのエレメントからなる 1DArray NurbsSurfaceMesh オブジェクトの参照フレームとして表現される位置
Index Long 指定された位置に最も近いサーフェイスのインデックス
SquaredDistance Double 指定された位置からサーフェイスのポイントまでの距離の 2乗
UValue Double NurbsSurface上で対応するUValue
VValue Double NurbsSurface上で対応するVValue
Position SIVector3(位置が含まれます) UV値における実際のサーフェイスの位置

VBScript の例

'

' This example shows how you can get the closest surface position using either a 

' vector of global positions or an array of local positions as the reference point

'

set oRoot = Application.ActiveSceneRoot

set oSphere = oRoot.AddGeometry("Sphere", "NurbsSurface")

' Translate the sphere

oSphere.Kinematics.Global.Parameters("posx").Value = oSphere.Kinematics.Global.Parameters("posx").Value + 13

' Set up a global array and a local vector (converted from global space) to use as references

set oGlobalPos = XSIMath.CreateVector3(0.0, 0.0, 0.0)

set oLocalPos = XSIMath.MapWorldPositionToObjectSpace(oSphere.Kinematics.Local.Transform, oGlobalPos) 

aPosition = Array(0.0, 0.0, 0.0)

' Get the closest surface position from the local vector

oSphere.ActivePrimitive.Geometry.GetClosestSurfacePosition oLocalPos, SurfaceIndex, _

	SquaredDistance, UValue,VValue, SurfacePosition

Application.LogMessage "The origin is closest to surface : " & SurfaceIndex & _

	" its distance from it is " & sqr(SquaredDistance)

Application.LogMessage "The UV values are U : " & UValue & " V :" & VValue

Application.LogMessage "The corresponding position is X : " & SurfacePosition.X & _

	" Y :" & SurfacePosition.Y & " Z :" & SurfacePosition.Z

' Get the closest surface position from the array of global positions

oSphere.ActivePrimitive.Geometry.GetClosestSurfacePosition aPosition, SurfaceIndex, _

	SquaredDistance, UValue,VValue, SurfacePosition

Application.LogMessage "The origin is closest to surface : " & SurfaceIndex & _

	" its distance from it is " & sqr(SquaredDistance)

Application.LogMessage "The UV values are U : " & UValue & " V :" & VValue

Application.LogMessage "The corresponding position is X : " & SurfacePosition.X & _

	" Y :" & SurfacePosition.Y & " Z :" & SurfacePosition.Z

' Expected results:

' INFO : The origin is closest to surface : 0 its distance from it is 9.00000000000229

' INFO : The UV values are U : 0.999999 V :4.000001

' INFO : The corresponding position is X : -3.99999999999839 Y :1.57058495219762E-06 Z :-3.13444650011652E-06

' INFO : The origin is closest to surface : 0 its distance from it is 3.99525855482537

' INFO : The UV values are U : 7.50000002810587 V :3.62719837982321

' INFO : The corresponding position is X : -1.51252820283502 Y :-0.583451828096254 Z :-3.65156587231083