첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170

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>
        <Point3DCollection x:Key="cubePointCollectionKey">
            -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
        </Point3DCollection>
        <Int32Collection x:Key="cubeTriangleCollectionKey">
             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
        </Int32Collection>
        <MeshGeometry3D x:Key="cubeGeometryKey"
            Positions="{StaticResource cubePointCollectionKey}"  
            TriangleIndices="{StaticResource cubeTriangleCollectionKey}" />
    </Window.Resources>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"  />
            <ColumnDefinition Width="20" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"  />
            <RowDefinition Height="25" />
        </Grid.RowDefinitions>
        <ScrollBar Name="verticalScrollBar" Grid.Row="0" Grid.Column="1"
            Orientation="Vertical"
            Minimum="-180"
            Maximum="180"
            SmallChange="1"
            LargeChange="10"
            Value="0" />
        <ScrollBar Name="horizontalScrollBar" Grid.Row="1" Grid.Column="0"
            Orientation="Horizontal"
            Minimum="-180"
            Maximum="180" 
            SmallChange="1"
            LargeChange="10"
            Value="0" />
        <Viewport3D Grid.Row="0" Grid.Column="0"
            Margin="4 4 4 4">
            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <Model3DGroup>
                        <AmbientLight Color="Gray" />
                        <DirectionalLight Color="Gray" Direction="1 -2 -3" />
                        <DirectionalLight Color="Gray" Direction="-1 2 3" />
                        <GeometryModel3D>
                            <GeometryModel3D.Geometry>
                                <MeshGeometry3D
                                    Positions="{StaticResource cubePointCollectionKey}"  
                                    TriangleIndices="{StaticResource cubeTriangleCollectionKey}" />
                            </GeometryModel3D.Geometry>
                            <GeometryModel3D.Transform>
                                <ScaleTransform3D
                                    ScaleX="1"
                                    ScaleY="2"
                                    ScaleZ="3" />
                            </GeometryModel3D.Transform>
                            <GeometryModel3D.Material>
                                <DiffuseMaterial Brush="Red" />
                            </GeometryModel3D.Material>
                        </GeometryModel3D>
                        <GeometryModel3D>
                            <GeometryModel3D.Geometry>
                                <MeshGeometry3D
                                    Positions="{StaticResource cubePointCollectionKey}"  
                                    TriangleIndices="{StaticResource cubeTriangleCollectionKey}" />
                            </GeometryModel3D.Geometry>
                            <GeometryModel3D.Transform>
                                <ScaleTransform3D
                                    ScaleX="3"
                                    ScaleY="1"
                                    ScaleZ="2" />
                            </GeometryModel3D.Transform>
                            <GeometryModel3D.Material>
                                <DiffuseMaterial Brush="Green" />
                            </GeometryModel3D.Material>
                        </GeometryModel3D>
                        <GeometryModel3D Geometry="{StaticResource cubeGeometryKey}">
                            <GeometryModel3D.Transform>
                                <ScaleTransform3D
                                    ScaleX="2"
                                    ScaleY="3"
                                    ScaleZ="1" />
                            </GeometryModel3D.Transform>
                            <GeometryModel3D.Material>
                                <DiffuseMaterial Brush=" Blue" />
                            </GeometryModel3D.Material>
                        </GeometryModel3D>
                    </Model3DGroup>
                </ModelVisual3D.Content>
            </ModelVisual3D>
            <Viewport3D.Camera>
                <PerspectiveCamera
                    Position="2 4 10"
                    LookDirection="-2 -4 -10"
                    UpDirection="0 1 0"
                    FieldOfView="60">
                    <PerspectiveCamera.Transform>
                        <Transform3DGroup>
                            <RotateTransform3D>
                                <RotateTransform3D.Rotation>
                                    <AxisAngleRotation3D
                                        Axis="0 1 0" 
                                        Angle="{Binding ElementName=horizontalScrollBar, Path=Value}" />
                                </RotateTransform3D.Rotation>
                            </RotateTransform3D>
                            <RotateTransform3D>
                                <RotateTransform3D.Rotation>
                                    <AxisAngleRotation3D
                                        Axis="1 0 0" 
                                        Angle="{Binding ElementName=verticalScrollBar, Path=Value}" />
                                </RotateTransform3D.Rotation>
                            </RotateTransform3D>
                        </Transform3DGroup>
                    </PerspectiveCamera.Transform>
                </PerspectiveCamera>
            </Viewport3D.Camera>
        </Viewport3D>
    </Grid>
</Window>

 

728x90

 

▶ 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 , , ,

댓글을 달아 주세요