C#編程之三維圖形構建


創建一個椎體三維圖:

相機

            <Viewport3D.Camera>
                <PerspectiveCamera Position="-1 2 4" LookDirection="0.4 -0.5 -1"/>
            </Viewport3D.Camera>

創建椎體圖形

                            <GeometryModel3D.Geometry>
                                <MeshGeometry3D Positions=
                                                "
                                                -1,0, 0 
                                                0 ,0,-1 
                                                1 ,0, 0 
                                                0 ,0, 1 
                                                0 ,1, 0"
                                                TriangleIndices="
                                                0 1 2 
                                                2 3 0
                                                1 0 4
                                                0 3 4
                                                3 2 4
                                                2 1 4
                                                " />
                            </GeometryModel3D.Geometry>
                            <GeometryModel3D.Material>
                                <DiffuseMaterial>
                                    <DiffuseMaterial.Brush>
                                        <SolidColorBrush Color="Green" Opacity="0.5"/>
                                    </DiffuseMaterial.Brush>
                                </DiffuseMaterial>
                            </GeometryModel3D.Material>
                            <GeometryModel3D.BackMaterial>
                                <DiffuseMaterial>
                                    <DiffuseMaterial.Brush>
                                        <SolidColorBrush Color="Red" Opacity="0.5"/>
                                    </DiffuseMaterial.Brush>
                                </DiffuseMaterial>
                            </GeometryModel3D.BackMaterial>

 

設置動畫移動參數:

                            <GeometryModel3D.Transform>
                                <RotateTransform3D>
                                    <RotateTransform3D.Rotation>
                                        <AxisAngleRotation3D x:Name="myAngleRotation" Axis="0,1,0" Angle="0"/>
                                    </RotateTransform3D.Rotation>
                                </RotateTransform3D>
                            </GeometryModel3D.Transform>

 

設置燈光投影:

<DirectionalLight Direction="1 0 0" Color="White"/>

最后添加旋轉動畫觸發

            <!--add animation play-->
            <Viewport3D.Triggers>
                <EventTrigger RoutedEvent="Viewport3D.Loaded">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation 
                                    Storyboard.TargetName="myAngleRotation"
                                    Storyboard.TargetProperty="Angle"
                                    From="0" To="360" Duration="0:0:10"
                                    RepeatBehavior="Forever" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Viewport3D.Triggers>

完整代碼:

<Window x:Class="Geometry.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Viewport3D Width="auto" Margin="0">
            <Viewport3D.Camera>
                <PerspectiveCamera Position="-1.5 2 4" LookDirection="0.4 -0.5 -1"/>
            </Viewport3D.Camera>
            <ModelVisual3D>
                <ModelVisual3D.Content>
                    <Model3DGroup>
                        <GeometryModel3D>
                            <GeometryModel3D.Geometry>
                                <MeshGeometry3D Positions=
                                                "
                                                -1,0, 0 
                                                0 ,0,-1 
                                                1 ,0, 0 
                                                0 ,0, 1 
                                                0 ,1, 0"
                                                TriangleIndices="
                                                0 1 2 
                                                2 3 0
                                                1 0 4
                                                0 3 4
                                                3 2 4
                                                2 1 4
                                                " />
                            </GeometryModel3D.Geometry>
                            <GeometryModel3D.Material>
                                <DiffuseMaterial>
                                    <DiffuseMaterial.Brush>
                                        <SolidColorBrush Color="Green" Opacity="0.5"/>
                                    </DiffuseMaterial.Brush>
                                </DiffuseMaterial>
                            </GeometryModel3D.Material>
                            <GeometryModel3D.BackMaterial>
                                <DiffuseMaterial>
                                    <DiffuseMaterial.Brush>
                                        <SolidColorBrush Color="Red" Opacity="0.5"/>
                                    </DiffuseMaterial.Brush>
                                </DiffuseMaterial>
                            </GeometryModel3D.BackMaterial>

                            <GeometryModel3D.Transform>
                                <RotateTransform3D>
                                    <RotateTransform3D.Rotation>
                                        <AxisAngleRotation3D x:Name="myAngleRotation" Axis="0,1,0" Angle="0"/>
                                    </RotateTransform3D.Rotation>
                                </RotateTransform3D>
                            </GeometryModel3D.Transform>
                        </GeometryModel3D>
                        <DirectionalLight Direction="1 0 0" Color="White"/>
                    </Model3DGroup>
                </ModelVisual3D.Content>
            </ModelVisual3D>
            <!--add animation play-->
            <Viewport3D.Triggers>
                <EventTrigger RoutedEvent="Viewport3D.Loaded">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation 
                                    Storyboard.TargetName="myAngleRotation"
                                    Storyboard.TargetProperty="Angle"
                                    From="0" To="360" Duration="0:0:10"
                                    RepeatBehavior="Forever" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Viewport3D.Triggers>
        </Viewport3D>
    </Grid>
</Window>
XAML

效果:

End.

Thanks.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM