0

スカイボックスのあるシーンがあり、ユーザーがクリックしたポイントをスカイボックスに投影したいと考えています。

ポイントを取得するために使用HelixViewport3D.FindNearestPoint(Point pt)していますが、クリックとスカイボックスの間に何かがある場合を除いて、非常にうまく機能します。この状況では、スカイボックの前にあるオブジェクトに投影されたポイントを返します。

HitTests で無視されるように要素にフラグを付ける方法はありますか?

4

1 に答える 1

2

任意の Visual3D または Geometry3D でポイントをキャッチできます Visual3D オブジェクトに名前を付けます。

ModelVisual3D modelVisual3D = new ModelVisual3D();
modelVisual3D.SetName("ModelName");

HelixViewPort3D で FindHits メソッドを使用できます

Point3D point3D;
var hitList = yourHelixViewPort.ViewPort.FindHits(Point point);
foreach (var hit in hitList)
{
    if (hit.Visual != null) 
    {
        if (hit.Visual.GetName() == "ModelName")
        {
            point3D = hit.Position;
            // You can use also hit.Mesh
            // also hit.Model
            // also hit.Visual
            // also hit.Normal
        }
    }
}
于 2016-12-21T17:09:05.283 に答える