WPF Вращение вокруг куба - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть код ниже, который рисует куб.Я добавил два события мыши.Я хочу, чтобы при нажатии правой кнопки мыши и перемещении мыши, чтобы вращаться вокруг куба на 360 градусов.

<Viewport3D MouseMove="Viewport3D_MouseMove" MouseRightButtonDown="Viewport3D_MouseRightButtonDown">
        <Viewport3D.Camera>
            <PerspectiveCamera Position = "5 4 3" LookDirection = "-5 -4 -3">
            </PerspectiveCamera>
        </Viewport3D.Camera>

        <ModelVisual3D>
            <ModelVisual3D.Content>
                <AmbientLight />
            </ModelVisual3D.Content>
        </ModelVisual3D>

        <ModelVisual3D x:Name="MyModel">
            <ModelVisual3D.Content>
                <GeometryModel3D>
                    <GeometryModel3D.Geometry>
                        <MeshGeometry3D Positions="0 0 0  1 0 0  0 1 0  1 1 0  0 0 1  1 0 1  0 1 1  1 1 1" 
                                        TriangleIndices="1 2 0  1 3 2  3 7 2  7 6 2  2 6 4  2 4 0  7 4 6  7 5 4  5 7 3  3 1 5  4 5 0  5 1 0"/>
                    </GeometryModel3D.Geometry>

                    <GeometryModel3D.Material>
                        <DiffuseMaterial x:Name = "matDiffuseMain">
                            <DiffuseMaterial.Brush>
                                <SolidColorBrush Color = "Yellow"/>
                            </DiffuseMaterial.Brush>
                        </DiffuseMaterial>
                    </GeometryModel3D.Material>
                </GeometryModel3D>
            </ModelVisual3D.Content>
        </ModelVisual3D>
    </Viewport3D>

У меня был код GeometryModel3D.Transform, но я не уверен, что это правильный путь или какой код должен быть в классе C # в событиях

                   <GeometryModel3D.Transform>
                        <Transform3DGroup>
                            <RotateTransform3D  x:Name="Rotation">
                                <RotateTransform3D.Rotation>
                                    <AxisAngleRotation3D x:Name="myVerticalRotation" Angle="0" Axis="0.5 0.5 0.5" />
                                </RotateTransform3D.Rotation>
                            </RotateTransform3D>
                        </Transform3DGroup>
                    </GeometryModel3D.Transform>

По сути, янеобходимо вращение вокруг объекта относительно движения мыши.

...