Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2015, 16:25   #1
p0keT
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 13
По умолчанию Создание нескольких (группы) 3D объектов в wpf

Здравствуйте,
Есть код 3d куба с возможностью поворачивания по осям.
Как создать несколько таких кубов?

(Первоначальной задачей является создание группы кубиков которые формируют собой один куб, а мы в свою очередь можем этот куб поворачивать по осям)

Код:
<Window x:Class="Вращение_кубика_вокруг_осей.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Вращение кубика вокруг осей" Height="350" Width="525" WindowStartupLocation="CenterScreen">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"></ColumnDefinition>
            <ColumnDefinition Width="3*"></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <GridSplitter Grid.Column="0" VerticalAlignment="Stretch" Width="5"></GridSplitter>
 
        <Label Grid.Column="0" Content="xyz" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="5,0,0,0" FontSize="14"/>
 
        <Label Grid.Column="0" Content="z" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="13,24,0,0" FontSize="14"/>
        <Label Grid.Column="0" Content="y" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="12,50,0,0" FontSize="14"/>
        <Label Grid.Column="0" Content="x" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="12,74,0,0" FontSize="14"/>
 
        <Slider Grid.Column="0" Height="25" VerticalAlignment="Top"  Minimum="-360" Maximum="360" Value="{Binding ElementName=rotate_xyz, Path= Angle}" Margin="40,3,0,0" />
 
        <Slider Grid.Column="0" Height="25" VerticalAlignment="Top"  Minimum="-360" Maximum="360" Value="{Binding ElementName=rotate_z, Path= Angle}" Margin="40,28,0,0" />
        <Slider Grid.Column="0" Height="25" VerticalAlignment="Top"  Minimum="-360" Maximum="360" Value="{Binding ElementName=rotate_y, Path= Angle}" Margin="40,53,0,0" />
        <Slider Grid.Column="0" Height="25" VerticalAlignment="Top"  Minimum="-360" Maximum="360" Value="{Binding ElementName=rotate_x, Path= Angle}" Margin="40,78,0,0" />
 
 
        <Viewport3D Grid.Column="1" Margin="0,0,0,0">
            <Viewport3D.Camera>
                <!--Установка камеры - перспективная проекция-->
                <PerspectiveCamera Position="0, 0, 8" LookDirection="0, 0, -3.5" />
                <!--FieldOfView="120"-->
            </Viewport3D.Camera>
            <Viewport3D.Children>
                <ModelVisual3D>
                    <ModelVisual3D.Content>
                        <!--Установка освещения - прямой свет-->
                        <DirectionalLight Color="White" Direction="-2, -2.5, -2" />
                        <!--<PointLight Color="White" Position="2,2,2" />-->
                        <!--<SpotLight Color="White" Position="1,3,2" Direction="1,-1,-1"
               InnerConeAngle="90" OuterConeAngle="90" Range="4" />-->
                    </ModelVisual3D.Content>
                </ModelVisual3D>
                <ModelVisual3D>
                    <ModelVisual3D.Content>
                        <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"
                                                            
                                    
                                                TriangleIndices="0,2,1 1,2,3 4,6,0 2,0,6 
                                                                 0,1,4 1,5,4 1,7,5 1,3,7
                                                                 4,5,6 7,6,5 2,6,3 3,6,7"
                                                TextureCoordinates="1,1 0,1 1,0 0,0
                                                                    0,1 1,1 0,0 1,0"/>
                            </GeometryModel3D.Geometry>
                            <!--Установка материала - красный цвет-->
                            <GeometryModel3D.Material>
                                <!--<DiffuseMaterial Brush="LightCoral" AmbientColor="Red" />-->
p0keT вне форума Ответить с цитированием
Старый 05.03.2015, 16:26   #2
p0keT
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 13
По умолчанию

Код:
                                <MaterialGroup>
                                    <DiffuseMaterial Brush="LightBlue" />
                                    <DiffuseMaterial>
                                        <!-- <DiffuseMaterial.Brush>
                                            <ImageBrush ImageSource="Close.png" />
                                        </DiffuseMaterial.Brush>-->
                                        <!--<DiffuseMaterial.Brush>
                                            <ImageBrush ImageSource="http://social.msdn.microsoft.com/Forums/getfile/304999" />
                                        </DiffuseMaterial.Brush>-->
                                    </DiffuseMaterial>
                                    <EmissiveMaterial Brush="Green" />
                                </MaterialGroup>
                            </GeometryModel3D.Material>
                        </GeometryModel3D>
                    </ModelVisual3D.Content>
                    <ModelVisual3D.Transform>
                        <Transform3DGroup>
                            <RotateTransform3D>
                                <RotateTransform3D.Rotation>
                                    <AxisAngleRotation3D x:Name="rotate_xyz" Axis="1 1 1" />
                                </RotateTransform3D.Rotation>
                            </RotateTransform3D>
                            <RotateTransform3D>
                                <RotateTransform3D.Rotation>
                                    <AxisAngleRotation3D x:Name="rotate_x" Axis="1 0 0" />
                                </RotateTransform3D.Rotation>
                            </RotateTransform3D>
                            <RotateTransform3D>
                                <RotateTransform3D.Rotation>
                                    <AxisAngleRotation3D x:Name="rotate_y" Axis="0 1 0" />
                                </RotateTransform3D.Rotation>
                            </RotateTransform3D>
                            <RotateTransform3D>
                                <RotateTransform3D.Rotation>
                                    <AxisAngleRotation3D x:Name="rotate_z" Axis="0 0 1" />
                                </RotateTransform3D.Rotation>
                            </RotateTransform3D>
                        </Transform3DGroup>
                    </ModelVisual3D.Transform>
                </ModelVisual3D>
            </Viewport3D.Children>
        </Viewport3D>
    </Grid>
</Window>
p0keT вне форума Ответить с цитированием
Старый 05.03.2015, 16:41   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Как создать несколько
UserControl?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.03.2015, 17:01   #4
p0keT
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 13
По умолчанию

А можно с примером кода?
А то я в wpf новичок, а сроки уже поджимают...
p0keT вне форума Ответить с цитированием
Старый 05.03.2015, 17:37   #5
p0keT
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 13
По умолчанию

Ответ: Объекты GeometryModel3D можно объединять в группы(Model3DGroup), которые в свою очередь могут содержать другие группы.
p0keT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перетаскивание нескольких объектов на форме Montysson Общие вопросы Delphi 3 17.06.2012 17:10
(wpf + c#) открытие нескольких ассоциированых с программой файлов lowercase WPF, UWP, WinRT, XAML 0 26.03.2012 17:43
Создание и уничтожение объектов. Время жизни объектов C++/C# Anett// Помощь студентам 0 24.10.2011 23:26
Создание нескольких объектов с одинаковыми обработчиками boget Общие вопросы Delphi 3 28.10.2010 11:41
Выделение группы объектов на C# EagleNN C# (си шарп) 2 08.10.2010 23:35