Member 12763843 Ответов: 0

Как установить положение камеры maunally в cs-файле в WPF 3D, когда он вращается мышью, я использовал camera. transform=mouse.свойство преобразования


я создал 3D-объект в wpf 3d и использовал перспективную камеру, позиции которой изменяются событием перемещения мыши.

ниже приведен код xaml

  d:DesignHeight="300" d:DesignWidth="600">
<Grid Name="objGrid" MouseDown="Grid_MouseDown" MouseUp="Grid_MouseUp" MouseMove="Grid_MouseMove"  Focusable="True">

    <Border Name="border" Background="White" MouseDown="border_MouseDown"

    BorderBrush="White"

    BorderThickness="2"

    CornerRadius="0"

    Padding="25"  Margin="0,-21,0,10">

        <Viewport3D Name="mainViewPort"  ClipToBounds="True" Opacity="10">
            <Viewport3D.Camera >
                <PerspectiveCamera x:Name="camera"

      FarPlaneDistance="100"

      LookDirection="0, 0, -5"

      UpDirection="0,1,0"

      NearPlaneDistance="1"

      Position="0, 0, 5"

      FieldOfView="50" />
            </Viewport3D.Camera>
            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <AmbientLight x:Name="directionLightOfMainViewPort" Color="White"/>
                </ModelVisual3D.Content>
            </ModelVisual3D>
        </Viewport3D>


я хочу вручную установить положение камеры в событии нажатия кнопки.
то есть я хочу, чтобы грани объекта появлялись в событии нажатия кнопки.

Что я уже пробовал:

я хочу сделать это в cs-файле, а не в xaml...

я пытался следовать коду..

TranslateTransform3D obj = new TranslateTransform3D();
            //solidCubeMV3D.Transform.Value.OffsetX = 0;

             //camera.Reset();
            //Vector3D lookDirection = new Vector3D(0, 0, -5);
            Vector3D updirection = new Vector3D(0, 1, 0);
            Point3D position = new Point3D(0, 0, 5);
            //camera.LookDirection = lookDirection;
            camera.UpDirection = updirection;
            camera.Position = position;           
                //camera.ChangeDirection(new Vector3D(0, 0, -5),new Vector3D(0,1,0),0.5);           
             mainViewPort.Camera = this.camera;
            
              // camera.Transform = new Transform3DGroup();
             //camera.Transform = trackball.Transform;           
            //solidCubeMV3D.Transform = camera.Transform;   
           //  trackball.EventSource = objGrid;
          //  camera.Transform = trackball.Transform;
         // objGrid.MouseWheel += new System.Windows.Input.MouseWheelEventHandler(objGrid_MouseWheel);      



пожалуйста, помогите мне, как это сделать, так как я новичок в wpf

0 Ответов