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

■ 3차원 큐브 결합하기 (리소스 사용)

------------------------------------------------------------------------------------------------------------------------


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>

 

 

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

    }

}

 

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker

댓글을 달아 주세요