■ Transform3DGroup 엘리먼트 : 의자 만들기

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


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"

    Title="Transform3DGroup 엘리먼트 : 의자 만들기"

    Width="800"

    Height="600">

    <Window.Resources>

        <!-- 단위 큐브 : 전면, 후면, 왼쪽, 오른쪽, 위쪽, 아래쪽 -->

        <MeshGeometry3D x:Key="CubeMeshGeometry3DKey"

            Positions="-0.5  0.5  0.5,  0.5  0.5  0.5,

                       -0.5 -0.5  0.5,  0.5 -0.5  0.5,

                        0.5  0.5 -0.5, -0.5  0.5 -0.5,

                        0.5 -0.5 -0.5, -0.5 -0.5 -0.5,

                       -0.5  0.5 -0.5, -0.5  0.5  0.5,

                       -0.5 -0.5 -0.5, -0.5 -0.5  0.5,

                        0.5  0.5  0.5,  0.5  0.5 -0.5,

                        0.5 -0.5  0.5,  0.5 -0.5 -0.5,

                       -0.5  0.5 -0.5,  0.5  0.5 -0.5,

                       -0.5  0.5  0.5,  0.5  0.5  0.5,

                        0.5 -0.5 -0.5, -0.5 -0.5 -0.5,

                        0.5 -0.5  0.5, -0.5 -0.5  0.5"

            TriangleIndices=" 0  2  1,  1  2  3

                              4  6  5,  5  6  7,

                              8 10  9,  9 10 11,

                             12 14 13, 13 14 15

                             16 18 17, 17 18 19

                             20 22 21, 21 22 23" />

        <DiffuseMaterial x:Key="WoodDiffuseMaterialKey"

            Brush="BurlyWood" />

        <Model3DGroup x:Key="ChairModel3DGroupKey">

            <!-- 앞쪽 오른쪽 다리 -->

            <GeometryModel3D

                Geometry="{StaticResource CubeMeshGeometry3DKey}"

                Material="{StaticResource WoodDiffuseMaterialKey}">

                <GeometryModel3D.Transform>

                    <Transform3DGroup>

                        <ScaleTransform3D

                            ScaleX="0.1"

                            ScaleY="1.5"

                            ScaleZ="0.1" />

                        <TranslateTransform3D

                            OffsetX="0.5"

                            OffsetY="0.75"

                            OffsetZ="0.5" />

                    </Transform3DGroup>

                </GeometryModel3D.Transform>

            </GeometryModel3D>

            <!-- 앞쪽 왼쪽 다리 -->

            <GeometryModel3D

                Geometry="{StaticResource CubeMeshGeometry3DKey}"

                Material="{StaticResource WoodDiffuseMaterialKey}">

                <GeometryModel3D.Transform>

                    <Transform3DGroup>

                        <ScaleTransform3D

                            ScaleX="0.1"

                            ScaleY="1.5"

                            ScaleZ="0.1" />

                        <TranslateTransform3D

                            OffsetX="-0.5"

                            OffsetY="0.75"

                            OffsetZ="0.5" />

                    </Transform3DGroup>

                </GeometryModel3D.Transform>

            </GeometryModel3D>

            <!-- 뒤쪽 오른쪽 다리 -->

            <GeometryModel3D

                Geometry="{StaticResource CubeMeshGeometry3DKey}"

                Material="{StaticResource WoodDiffuseMaterialKey}">

                <GeometryModel3D.Transform>

                    <Transform3DGroup>

                        <ScaleTransform3D

                            ScaleX="0.1"

                            ScaleY="3.0"

                            ScaleZ="0.1" />

                        <TranslateTransform3D

                            OffsetX="0.5"

                            OffsetY="1.5"

                            OffsetZ="-0.5" />

                    </Transform3DGroup>

                </GeometryModel3D.Transform>

            </GeometryModel3D>

            <!-- 뒤쪽 왼쪽 다리 -->

            <GeometryModel3D

                Geometry="{StaticResource CubeMeshGeometry3DKey}"

                Material="{StaticResource WoodDiffuseMaterialKey}">

                <GeometryModel3D.Transform>

                    <Transform3DGroup>

                        <ScaleTransform3D

                            ScaleX="0.1"

                            ScaleY="3.0"

                            ScaleZ="0.1" />

                        <TranslateTransform3D

                            OffsetX="-0.5"

                            OffsetY="1.5"

                            OffsetZ="-0.5" />

                    </Transform3DGroup>

                </GeometryModel3D.Transform>

            </GeometryModel3D>

            <!-- 의자 시트 -->

            <GeometryModel3D

                Geometry="{StaticResource CubeMeshGeometry3DKey}"

                Material="{StaticResource WoodDiffuseMaterialKey}">

                <GeometryModel3D.Transform>

                    <Transform3DGroup>

                        <ScaleTransform3D

                            ScaleX="1.25"

                            ScaleY="0.1"

                            ScaleZ="1.25" />

                        <TranslateTransform3D OffsetY="1.55" />

                    </Transform3DGroup>

                </GeometryModel3D.Transform>

            </GeometryModel3D>

            <!-- 등받이 -->

            <GeometryModel3D

                Geometry="{StaticResource CubeMeshGeometry3DKey}"

                Material="{StaticResource WoodDiffuseMaterialKey}">

                <GeometryModel3D.Transform>

                    <Transform3DGroup>

                        <ScaleTransform3D

                            ScaleX="0.9"

                            ScaleY="0.25"

                            ScaleZ="0.1" />

                        <TranslateTransform3D

                            OffsetZ="-0.5"

                            OffsetY="2.75" />

                    </Transform3DGroup>

                </GeometryModel3D.Transform>

            </GeometryModel3D>

        </Model3DGroup>

    </Window.Resources>

    <Viewport3D Name="viewport3d">

        <!-- 녹색 리놀리움 플로어 -->

        <ModelVisual3D>

            <ModelVisual3D.Content>

                <GeometryModel3D Geometry="{StaticResource CubeMeshGeometry3DKey}">

                    <GeometryModel3D.Material>

                        <DiffuseMaterial Brush="Lime" />

                    </GeometryModel3D.Material>

                </GeometryModel3D>

            </ModelVisual3D.Content>

            <ModelVisual3D.Transform>

                <Transform3DGroup>

                    <ScaleTransform3D

                        ScaleX="8"

                        ScaleY="0.1"

                        ScaleZ="8" />

                    <TranslateTransform3D

                        OffsetY="-0.05" />

                </Transform3DGroup>

            </ModelVisual3D.Transform>

        </ModelVisual3D>

        <!-- 8개 의자 -->

        <ModelVisual3D Content="{StaticResource ChairModel3DGroupKey}">

            <ModelVisual3D.Transform>

                <TranslateTransform3D

                    OffsetX="-3"

                    OffsetZ="2" />

            </ModelVisual3D.Transform>

        </ModelVisual3D>

        <ModelVisual3D Content="{StaticResource ChairModel3DGroupKey}">

            <ModelVisual3D.Transform>

                <TranslateTransform3D

                    OffsetX="-1"

                    OffsetZ="2" />

            </ModelVisual3D.Transform>

        </ModelVisual3D>

        <ModelVisual3D Content="{StaticResource ChairModel3DGroupKey}">

            <ModelVisual3D.Transform>

                <TranslateTransform3D

                    OffsetX="1"

                    OffsetZ="2" />

            </ModelVisual3D.Transform>

        </ModelVisual3D>

        <ModelVisual3D Content="{StaticResource ChairModel3DGroupKey}">

            <ModelVisual3D.Transform>

                <TranslateTransform3D

                    OffsetX="3"

                    OffsetZ="2" />

            </ModelVisual3D.Transform>

        </ModelVisual3D>

        <ModelVisual3D Content="{StaticResource ChairModel3DGroupKey}">

            <ModelVisual3D.Transform>

                <TranslateTransform3D

                    OffsetX="-3"

                    OffsetZ="-2" />

            </ModelVisual3D.Transform>

        </ModelVisual3D>

        <ModelVisual3D Content="{StaticResource ChairModel3DGroupKey}">

            <ModelVisual3D.Transform>

                <TranslateTransform3D

                    OffsetX="-1"

                    OffsetZ="-2" />

            </ModelVisual3D.Transform>

        </ModelVisual3D>

        <ModelVisual3D Content="{StaticResource ChairModel3DGroupKey}">

            <ModelVisual3D.Transform>

                <TranslateTransform3D

                    OffsetX="1"

                    OffsetZ="-2" />

            </ModelVisual3D.Transform>

        </ModelVisual3D>

        <ModelVisual3D Content="{StaticResource ChairModel3DGroupKey}">

            <ModelVisual3D.Transform>

                <TranslateTransform3D

                    OffsetX="3"

                    OffsetZ="-2" />

            </ModelVisual3D.Transform>

        </ModelVisual3D>

        <!-- 조명 -->

        <ModelVisual3D>

            <ModelVisual3D.Content>

                <Model3DGroup>

                    <AmbientLight Color="#404040" />

                    <DirectionalLight

                        Color="#c0c0c0"

                        Direction="2, -3 -1" />

                </Model3DGroup>

            </ModelVisual3D.Content>

        </ModelVisual3D>

        <!-- 카메라 -->

        <Viewport3D.Camera>

            <PerspectiveCamera

                Position="3 4 13"

                LookDirection="-1.5 -1.5 -5"

                UpDirection="0 1 0"

                FieldOfView="45" />

        </Viewport3D.Camera>

    </Viewport3D>

</Window>

 

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

Posted by 사용자 icodebroker