2016-06-15 10 views
0

Ich versuche eine Leap Motion zu verwenden, um ein 3D-Objekt mit Helix Toolkit zu steuern, und ich bin fast erfolgreich, aber ich frage mich, wie man im Code-Behind "Zoom" macht.Zoom mit Helixtoolkit

N.B. Ich verwende Caliburn (MVVM-Muster).

Ich möchte um es zu vergrößern, wenn ich einen im Uhrzeigersinn CircleAction tun, und Auszoomen sonst:

public void CircleAction(bool isClockWise) 
{ 
    if (!detectionActive) 
    { 
     return; 
    } 
    if (isClockWise) 
    { 
     // To do 
    } 
    else 
    { 
     //To do 
    } 
} 

Und hier ist meine HelixToolkit Zone:

 <HelixToolkit:HelixViewport3D.Camera> 
      <PerspectiveCamera 
       Position="{Binding CameraPosition,Mode=TwoWay}" 
       LookDirection="{Binding CameraDirection,Mode=TwoWay}" 
       UpDirection="{Binding Camera.UpDirection}" 
       FieldOfView="{Binding Camera.FieldOfView}" 
      /> 
     </HelixToolkit:HelixViewport3D.Camera> 

    </HelixToolkit:HelixViewport3D> 
+1

Zooming mit dem CameraController des HelixViewport3D erfolgt. Unglücklicherweise gibt es keinen direkten Weg, sich daran zu binden. Ich könnte mir einen benutzerdefinierten Decorator vorstellen, der es ermöglicht, an einen Zoom-Befehl oder etwas Ähnliches zu binden – egse

Antwort

0

Aus dem SurfaceDemo Beispiel in der helix-toolkit source und die documentation for the CameraController class, kann ich Folgendes vorschlagen.

XAML:

<HelixToolkit:HelixViewport3D x:Name="myViewPort3D"> 
<!-- ... --> 
</HelixToolkit:HelixViewport3D> 

-Code-behind:

public void CircleAction(bool isClockWise) 
{ 
    if (!detectionActive) 
    { 
     return; 
    } 
    if (isClockWise) 
    { 
     myViewPort3D.CameraController.zoom(delta); 
    } 
    else 
    { 
     myViewPort3D.CameraController.zoom(-delta); 
    } 
}