Welcome to WindowsClient.net | Sign in | Join

The Control Gallery is a directory of controls that you can use in your applications. The number in parenthesis indicates how many controls are available in the category.

3D Hittesting/Trackball

Control Author:

Posted: 05-10-2007

Views: 1,899

Downloads: 546

 
File Details

Photobucket - Video and Image Hosting

 

THIS IS NOT THE ENTIRE SOURCE, ONLY KEY SNIPPETS.

<Window MouseRightButtonDown="OnMouseRightButtonDown" …>

public void OnMouseRightButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs args)

{

Point mouseposition = args.GetPosition(vp);

PointHitTestParameters pointparams = new

      PointHitTestParameters(mouseposition);

      //test for a result in the Viewport3D

      VisualTreeHelper.HitTest(vp, null, HTResult, pointparams);

}

public HitTestResultBehavior HTResult(System.Windows.Media.HitTestResult rawresult)

{

      RayHitTestResult rayResult = rawresult as RayHitTestResult;

if (rayResult != null)

      {

            RayMeshGeometry3DHitTestResult rayMeshResult = rayResult as                         RayMeshGeometry3DHitTestResult;

      if (rayMeshResult != null)

            {

                  GeometryModel3D hitgeo = rayMeshResult.ModelHit as

                  GeometryModel3D;

                  UpdateMaterial(hitgeo);

      }

}

      return HitTestResultBehavior.Continue;

}

public void UpdateMaterial(GeometryModel3D gm3d)

{

VisualBrush VB = new VisualBrush();

      if (material1)

      {

            material1 = false;

            VB.Visual = UI2Contents;

}

      else

      {

            material1 = true;

            VB.Visual = UI1Contents;

}

      DiffuseMaterial myDiffuseMaterial = new DiffuseMaterial(VB);

      MaterialGroup mg = new MaterialGroup();

      mg.Children.Add(myDiffuseMaterial);

      gm3d.Material = mg;

}

 




Page view counter