첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

728x90
반응형

TestProject.zip
다운로드

▶ MainWindow.xaml

<Window x:Class="TestProject.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="800"
    Height="600"
    Title="3차원 큐브 회전하기">
    <Window.Resources>
        <Storyboard x:Key="RotateStoryboard">
            <Rotation3DAnimationUsingKeyFrames
                BeginTime="00:00:00"
                RepeatBehavior="Forever"
                Storyboard.TargetName="cubeModel"
                Storyboard.TargetProperty="(Model3D.Transform).(Transform3DGroup.Children)[0].(RotateTransform3D.Rotation)">
                <SplineRotation3DKeyFrame KeyTime="00:00:02">
                    <SplineRotation3DKeyFrame.Value>
                        <AxisAngleRotation3D Angle="180" Axis="0 1 0" />
                    </SplineRotation3DKeyFrame.Value>
                </SplineRotation3DKeyFrame>
                <SplineRotation3DKeyFrame KeyTime="00:00:04">
                    <SplineRotation3DKeyFrame.Value>
                        <AxisAngleRotation3D Angle="359" Axis="0 1 0" />
                    </SplineRotation3DKeyFrame.Value>
                </SplineRotation3DKeyFrame>
            </Rotation3DAnimationUsingKeyFrames>
        </Storyboard>
    </Window.Resources>
    <Window.Triggers>
        <EventTrigger RoutedEvent="FrameworkElement.Loaded">
            <BeginStoryboard Storyboard="{StaticResource RotateStoryboard}" />
        </EventTrigger>
    </Window.Triggers>
    <Grid>
        <Viewport3D Grid.Row="0" Grid.Column="0"
            Margin="4 4 4 4">
            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <Model3DGroup x:Name="cubeModel">
                        <Model3DGroup.Transform>
                            <Transform3DGroup>
                                <RotateTransform3D />
                            </Transform3DGroup>
                        </Model3DGroup.Transform>
                        <AmbientLight Color="Gray" />
                        <DirectionalLight Color="Gray" Direction="1 -2 -3" />
                        <DirectionalLight Color="Gray" Direction="-1 2 3" />
                        <GeometryModel3D>
                            <GeometryModel3D.Geometry>
                                <MeshGeometry3D 
                                    Positions="-1,-1,-1   1,-1,-1   1,-1, 1  -1,-1, 1
                                               -1,-1, 1   1,-1, 1   1, 1, 1  -1, 1, 1
                                                1,-1, 1   1,-1,-1   1, 1,-1   1, 1, 1
                                                1, 1, 1   1, 1,-1  -1, 1,-1  -1, 1, 1
                                               -1,-1, 1  -1, 1, 1  -1, 1,-1  -1,-1,-1 
                                               -1,-1,-1  -1, 1,-1   1, 1,-1   1,-1,-1"
                                    TriangleIndices=" 0  1  2   2  3  0
                                                      4  5  6   6  7  4
                                                      8  9 10  10 11  8
                                                     12 13 14  14 15 12
                                                     16 17 18  18 19 16
                                                     20 21 22  22 23 20" />
                            </GeometryModel3D.Geometry>
                            <GeometryModel3D.Material>
                                <DiffuseMaterial Brush="Blue" />
                            </GeometryModel3D.Material>
                        </GeometryModel3D>
                    </Model3DGroup>
                </ModelVisual3D.Content>
            </ModelVisual3D>
            <Viewport3D.Camera>
                <PerspectiveCamera 
                  Position="1.5 2 3"
                  LookDirection="-1.5 -2 -3"
                  UpDirection="0 1 0"
                  FieldOfView="60">
                    <PerspectiveCamera.Transform>
                        <Transform3DGroup>
                            <RotateTransform3D>
                                <RotateTransform3D.Rotation>
                                    <AxisAngleRotation3D
                                      Axis="0 1 0" />
                                </RotateTransform3D.Rotation>
                            </RotateTransform3D>
                            <RotateTransform3D>
                                <RotateTransform3D.Rotation>
                                    <AxisAngleRotation3D
                                      Axis="1 0 0" />
                                </RotateTransform3D.Rotation>
                            </RotateTransform3D>
                        </Transform3DGroup>
                    </PerspectiveCamera.Transform>
                </PerspectiveCamera>
            </Viewport3D.Camera>
        </Viewport3D>
    </Grid>
</Window>

 

▶ MainWindow.xaml.cs

using System.Windows;

namespace TestProject
{
    /// <summary>
    /// 메인 윈도우
    /// </summary>
    public partial class MainWindow : Window
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - MainWindow()

        /// <summary>
        /// 생성자
        /// </summary>
        public MainWindow()
        {
            InitializeComponent();
        }

        #endregion
    }
}
728x90
반응형
Posted by 사용자 icodebroker
TAG , , ,

댓글을 달아 주세요