IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

Mettre des UC sur les cotés d'un cube


Sujet :

Windows Presentation Foundation

  1. #1
    Membre régulier Avatar de cyberbobby
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Points : 106
    Points
    106
    Par défaut Mettre des UC sur les cotés d'un cube
    Bonjour à tous,

    J'ai généré un cube avec ZAM3D, et appliqué un effet de rotation, j'ai nettoyé le code et fais en sorte que lorsque j'appuie sur la touche Gauche ou Droite, mon cube tourne.

    J'aimerais maintenant pourvoir mettre un UserControl par face afin de pouvoir mettre 4 contenus différents.

    Je ne sais pas trop comment m'y prendre, voici mon code XAML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    <Window x:Class="WPFTest3D.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="400" Width="400" WindowStyle="None" 
        AllowsTransparency="True" Background="Transparent">
     
        <Viewbox x:Name="ZAM3DViewbox" ClipToBounds="true" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/interactivedesigner/2006" xmlns:c="http://schemas.openxmlformats.org/markup-compatibility/2006" c:Ignorable="d">
     
            <Viewport3D x:Name="ZAM3DViewport3D" ClipToBounds="true" Width="400" Height="300">
                <Viewport3D.BitmapEffect>
                    <BlurBitmapEffect Radius="20"/>
                </Viewport3D.BitmapEffect>
     
                <Viewport3D.Resources>
                    <ResourceDictionary>
                        <MaterialGroup x:Key="ER___Glossy_10MR1" >
                            <DiffuseMaterial>                  
                                <DiffuseMaterial.Brush>
                                    <SolidColorBrush Color="#003D99" Opacity="1.000000"/>
                                </DiffuseMaterial.Brush>
                            </DiffuseMaterial>
                            <SpecularMaterial SpecularPower="37.5467">
                                <SpecularMaterial.Brush>
                                    <SolidColorBrush Color="#ADADAD" Opacity="1.000000"/>
                                </SpecularMaterial.Brush>
                            </SpecularMaterial>
                        </MaterialGroup>
                        <Transform3DGroup x:Key="SceneTR7" >
                            <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
                            <ScaleTransform3D ScaleX="1" ScaleY="1" ScaleZ="1"/>
                            <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
                        </Transform3DGroup>
                        <Transform3DGroup x:Key="BoxOR9TR8" >
                            <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
                            <ScaleTransform3D ScaleX="1" ScaleY="1" ScaleZ="1"/>
                            <RotateTransform3D>
                                <RotateTransform3D.Rotation>
                                    <AxisAngleRotation3D Angle="0.4300982952" Axis="0 0 1"/>
                                </RotateTransform3D.Rotation>
                            </RotateTransform3D>
                            <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
                        </Transform3DGroup>
                        <MeshGeometry3D x:Key="BoxOR9GR10" 
    					TriangleIndices="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 "
    					Normals="0,0,-1 0,0,-1 0,0,-1 0,0,-1 0,0,1 0,0,1 0,0,1 0,0,1 0,-1,0 0,-1,0 0,-1,0 0,-1,0 1,0,0 1,0,0 1,0,0 1,0,0 0,1,0 0,1,0 0,1,0 0,1,0 -1,0,0 -1,0,0 -1,0,0 -1,0,0 "
    					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 "/>
     
                        <Transform3DGroup x:Key="Spot_Light01OR12TR11" >
                            <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
                            <ScaleTransform3D ScaleX="1" ScaleY="1" ScaleZ="1"/>
                            <TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0.866025"/>
                        </Transform3DGroup>
                    </ResourceDictionary>
                </Viewport3D.Resources>
     
                <Viewport3D.Camera>
                    <PerspectiveCamera x:Name="FrontOR6" FarPlaneDistance="10" LookDirection="0,0,-1" UpDirection="0,1,0" NearPlaneDistance="1" Position="0,0,2.38472" FieldOfView="39.5978" />
                </Viewport3D.Camera>
     
                <ModelVisual3D>
                    <ModelVisual3D.Content>
                        <Model3DGroup x:Name="Scene" Transform="{DynamicResource SceneTR7}">
                            <!-- Scene (XAML Path = ) -->
                            <AmbientLight Color="#333333" />
                            <DirectionalLight Color="#FFFFFF" Direction="-0.612372,-0.5,-0.612372" />
                            <DirectionalLight Color="#FFFFFF" Direction="0.810403,-0.497619,-0.309228" />
                            <Model3DGroup x:Name="BoxOR9" Transform="{DynamicResource BoxOR9TR8}">
                                <!-- Box (XAML Path = (Viewport3D.Children)[0].(ModelVisual3D.Content).(Model3DGroup.Children)[3]) -->
                                <GeometryModel3D x:Name="BoxOR9GR10" Geometry="{DynamicResource BoxOR9GR10}" Material="{DynamicResource ER___Glossy_10MR1}" BackMaterial="{DynamicResource ER___Glossy_10MR1}"/>
                            </Model3DGroup>
                            <Model3DGroup x:Name="Spot_Light01OR12" Transform="{DynamicResource Spot_Light01OR12TR11}">
                                <!-- Spot Light01 (XAML Path = (Viewport3D.Children)[0].(ModelVisual3D.Content).(Model3DGroup.Children)[4]) -->
                                <SpotLight Color="#FFFFFF" Position="0,0,0" Direction="0,0,-1" Range="1.73637" ConstantAttenuation="1.0" InnerConeAngle="20.0535" OuterConeAngle="20" />
                            </Model3DGroup>
                        </Model3DGroup>
                    </ModelVisual3D.Content>
                </ModelVisual3D>
            </Viewport3D>
     
            <Viewbox.Resources>
     
            </Viewbox.Resources>
        </Viewbox>
        <Window.Resources>
            <Storyboard x:Key="TurnLeft" FillBehavior="HoldEnd" BeginTime="0:0:0" >
                <Rotation3DAnimationUsingKeyFrames BeginTime="0:0:0" Duration="0:0:2" Storyboard.TargetName="BoxOR9" Storyboard.TargetProperty="(Model3DGroup.Transform).(Transform3DGroup.Children)[2].(RotateTransform3D.Rotation)">
                    <LinearRotation3DKeyFrame x:Name="Test" KeyTime="0:0:0.5">
                        <LinearRotation3DKeyFrame.Value>
                            <AxisAngleRotation3D x:Name="CubeRotate" Angle="0" />
                        </LinearRotation3DKeyFrame.Value>
                    </LinearRotation3DKeyFrame>
                </Rotation3DAnimationUsingKeyFrames>
            </Storyboard>
        </Window.Resources>
    </Window>
    Ou dois-je y mettre mes UserControl ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Salut,

    Il faut que tu regardes du coté de Viewport2DVisual3D
    Je n'ai pas d'exemple concret à te donner pour le moment, mais je l'ai déjà fait et ca fonctionne bien.

    Par contre, j'ai rencontré un petit probleme avec mes usercontrols : Conserver les proportions... Ca je t'avouerai que je n'ai pas réussi... et je n'ai pas eu le temps de chercher...

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    normalement si tu veux mapper quelque chose sur ton cube il faut utiliser le
    material group comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <MaterialGroup x:Key="ER_01_Planet_SunMR1" >
                            <DiffuseMaterial>
                                <DiffuseMaterial.Brush>
                                    <VisualBrush>
                                        <VisualBrush.Visual>
                                            <MediaElement  >
                                                <MediaElement.Triggers>
                                                    <EventTrigger RoutedEvent="MediaElement.Loaded">
                                                        <EventTrigger.Actions>
                                                            <BeginStoryboard>
                                                                <Storyboard>
                                                                    <MediaTimeline Source="bruno.avi"  RepeatBehavior="Forever" />
                                                                </Storyboard>
                                                            </BeginStoryboard>
                                                        </EventTrigger.Actions>
                                                    </EventTrigger>
                                                </MediaElement.Triggers>
                                            </MediaElement>
                                        </VisualBrush.Visual>
                                    </VisualBrush>
                                    <!--<ImageBrush ImageSource="./cubeER_01_Planet_SunMR1.png" TileMode="Tile" ViewportUnits="Absolute" Viewport="0 0 1 1" AlignmentX="Left" AlignmentY="Top" Opacity="1.000000" />-->
                                </DiffuseMaterial.Brush>
                            </DiffuseMaterial>
                            <SpecularMaterial SpecularPower="25.6">
                                <SpecularMaterial.Brush>
                                    <SolidColorBrush Color="#4D4D4D" Opacity="1.000000"/>
                                </SpecularMaterial.Brush>
                            </SpecularMaterial>
                        </MaterialGroup>
    la c'est le code pour mettre une video sur les faces du cube
    IKEAS : Finalement je crois que c'est dans ses faiblesses que l'on y trouve a la fois de la force et a la fois de la richesse...
    ----------------------------------------------------
    Si vous avez du taf en wpf & design d'application sympa, contactez moi !!!!
    http://ultimatecorp.eu/wpf/

  4. #4
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    Le code fourni par ikeas va te permettre de peindre un contrôle. Mais tu n'auras pas les interactions avec ce contrôle. Si comme je le pense tu veux mettre tes UserControl et pouvoir intéragir avec ceux ci, il faut regarder du côté de Viewport2DVisual3D comme zax-tfh l'a dit

  5. #5
    Membre régulier Avatar de cyberbobby
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Points : 106
    Points
    106
    Par défaut
    Ok ok, je vais regarder, merci pour votre aide ...

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    J'ai retrouvé un exemple que j'avais fait.

    Pour expliquer rapidement, j'ai créé un MeshGeometry3D pour chaque face en prenant soin d'attribuer les TextureCoordinates (dans l'exemple je me suis pas posé de question, TextureCoordinates est le même pour toutes les faces ce qui fait que certaines faces apparaitront à l'envers ou sur le côté).
    Exemple pour un MeshGeometry3D :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        <MeshGeometry3D x:Key="mesh2" TriangleIndices="0,1,2 3,4,5" 
                        Positions="1,1,1 1,0,1 1,0,0 1,0,0 1,1,0 1,1,1 "
                        TextureCoordinates="0,1 1,1 1,0 1,0 0,0 0,1" />

    Ensuite pour dessiner une face de mon cube remplie de contrôles, j'ai utilisé un Viewport2DVisual3D auquel j'associe le MeshGeometry3D précédemment créé :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
            <Viewport2DVisual3D Geometry="{StaticResource mesh2}">
              <Viewport2DVisual3D.Visual>
                <Grid Background="LightSteelBlue" 
                      HorizontalAlignment="Left" VerticalAlignment="Top" 
                      Margin="10,10,0,0" Width="180" Height="230" >
                  <TextBox x:Name="TboxMsgReception" x:FieldModifier="private" 
                           Margin="15" Grid.Row="1" Grid.Column="1" IsReadOnly="True" 
                           Text="" TextWrapping="Wrap" />
                </Grid>
              </Viewport2DVisual3D.Visual>
              <Viewport2DVisual3D.Material>
                <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="true" Color="White" Brush="Blue"/>
              </Viewport2DVisual3D.Material>
            </Viewport2DVisual3D>

    Pour pouvoir définir plusieurs Viewport2DVisual3D dans le Viewport3D (un pour chaque face), il faut utiliser un ContainerUIElement3D.


    Voici l'exemple complet :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    <Window 
      x:Class="WpfApplication3.Window1"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Title="Window1" 
      Height="400" Width="800" WindowStyle="None" 
      AllowsTransparency="True" Background="Transparent"
      >
     
      <Window.Resources>
        <MeshGeometry3D x:Key="mesh1" TriangleIndices="0,1,2 3,4,5" 
                        Positions="1,1,1 1,1,0 0,1,0 0,1,0 0,1,1 1,1,1 "
                        TextureCoordinates="0,1 1,1 1,0 1,0, 0,0 0,1" />
        <MeshGeometry3D x:Key="mesh2" TriangleIndices="0,1,2 3,4,5" 
                        Positions="1,1,1 1,0,1 1,0,0 1,0,0 1,1,0 1,1,1 "
                        TextureCoordinates="0,1 1,1 1,0 1,0 0,0 0,1" />
        <MeshGeometry3D x:Key="mesh3" TriangleIndices="0,1,2 3,4,5" 
                        Positions="1,1,1 0,1,1 0,0,1 0,0,1 1,0,1 1,1,1 "
                        TextureCoordinates="0,1 1,1 1,0 1,0 0,0 0,1" />
        <MeshGeometry3D x:Key="mesh4" TriangleIndices="0,1,2 3,4,5" 
                        Positions="0,1,0 1,1,0 1,0,0 1,0,0 0,0,0 0,1,0 "
                        TextureCoordinates="0,1 1,1 1,0 1,0 0,0 0,1" />
        <MeshGeometry3D x:Key="mesh5" TriangleIndices="0,1,2 3,4,5" 
                        Positions="0,0,0 1,0,0 1,0,1 1,0,1 0,0,1 0,0,0 "
                        TextureCoordinates="0,1 1,1 1,0 1,0 0,0 0,1" />
        <MeshGeometry3D x:Key="mesh6" TriangleIndices="0,1,2 3,4,5" 
                        Positions="0,0,0 0,0,1 0,1,1 0,1,1 0,1,0 0,0,0 "
                        TextureCoordinates="0,1 1,1 1,0 1,0 0,0 0,1" />
     
        <Storyboard x:Key="Rot1" RepeatBehavior="Forever">
          <DoubleAnimation BeginTime="00:00:00" Duration="00:00:30" From="0" To="360"
                           Storyboard.TargetName="rotate" Storyboard.TargetProperty="Angle" />
        </Storyboard>
      </Window.Resources>
     
      <Grid>
        <Grid.Triggers>
          <EventTrigger RoutedEvent="FrameworkElement.Loaded">
            <BeginStoryboard Storyboard="{StaticResource Rot1}"/>
          </EventTrigger>
        </Grid.Triggers>
        <Viewport3D x:Name="mainViewport" x:FieldModifier="private" 
                    HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
          <Viewport3D.Camera>
            <PerspectiveCamera x:Name="Camera" FieldOfView="45" FarPlaneDistance="100" 
                               LookDirection="0,0,-5" NearPlaneDistance="0.1" 
                               Position="0.5,0.5,4" UpDirection="0,1,0"/>
          </Viewport3D.Camera>
     
          <ContainerUIElement3D>
     
            <Viewport2DVisual3D Geometry="{StaticResource mesh6}">
              <Viewport2DVisual3D.Visual>
                <Grid Background="LightSteelBlue" 
                      HorizontalAlignment="Left" VerticalAlignment="Top" 
                      Margin="10,10,0,0" Width="180" Height="230" >
                  <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition />
                  </Grid.ColumnDefinitions>
                  <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition />
                  </Grid.RowDefinitions>
     
                  <TextBox x:Name="TboxMsg" x:FieldModifier="private" Margin="5" Grid.Row="0" Grid.ColumnSpan="2" 
                           Text="Ce message va être envoyé vers une autre face du cube lors de l'appui sur le bouton 'Envoyer'." 
                           TextWrapping="Wrap" />
                  <Button Margin="5" Grid.Row="1" Grid.Column="0" 
                          Content="Envoyer" Click="Button_Click_1" />
                  <Button Margin="5" Grid.Row="1" Grid.Column="1" 
                          Content="Options" />
                </Grid>
              </Viewport2DVisual3D.Visual>
              <Viewport2DVisual3D.Material>
                <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="true" Color="White" Brush="Blue"/>
              </Viewport2DVisual3D.Material>
            </Viewport2DVisual3D>
     
            <Viewport2DVisual3D Geometry="{StaticResource mesh2}">
              <Viewport2DVisual3D.Visual>
                <Grid Background="LightSteelBlue" 
                      HorizontalAlignment="Left" VerticalAlignment="Top" 
                      Margin="10,10,0,0" Width="180" Height="230" >
                  <TextBox x:Name="TboxMsgReception" x:FieldModifier="private" 
                           Margin="15" Grid.Row="1" Grid.Column="1" IsReadOnly="True" 
                           Text="" TextWrapping="Wrap" />
                </Grid>
              </Viewport2DVisual3D.Visual>
              <Viewport2DVisual3D.Material>
                <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="true" Color="White" Brush="Blue"/>
              </Viewport2DVisual3D.Material>
            </Viewport2DVisual3D>
     
            <Viewport2DVisual3D Geometry="{StaticResource mesh3}">
              <Viewport2DVisual3D.Visual>
                <Grid Background="LightSteelBlue" 
                      HorizontalAlignment="Left" VerticalAlignment="Top" 
                      Margin="10,10,0,0" Width="180" Height="230" >
                  <Button Margin="5" Grid.Row="1" Grid.Column="1" Click="Button_Click"
                          Content="X" Foreground="Red" FontSize="122" />
                </Grid>
              </Viewport2DVisual3D.Visual>
              <Viewport2DVisual3D.Material>
                <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="true" Color="White" Brush="Blue"/>
              </Viewport2DVisual3D.Material>
            </Viewport2DVisual3D>
     
            <Viewport2DVisual3D Geometry="{StaticResource mesh4}">
              <Viewport2DVisual3D.Visual>
                <Grid Background="LightSteelBlue" 
                      HorizontalAlignment="Left" VerticalAlignment="Top" 
                      Margin="10,10,0,0" Width="180" Height="230" >
                  <Button Margin="5" Grid.Row="1" Grid.Column="1" 
                          Content="mesh4" />
                </Grid>
              </Viewport2DVisual3D.Visual>
              <Viewport2DVisual3D.Material>
                <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="true" Color="White" Brush="Blue"/>
              </Viewport2DVisual3D.Material>
            </Viewport2DVisual3D>
     
            <!-- Pas nécessaire vu l'axe de rotation -->
            <!--<Viewport2DVisual3D Geometry="{StaticResource mesh1}">
              <Viewport2DVisual3D.Visual>
                <Grid Background="LightSteelBlue" 
                      HorizontalAlignment="Left" VerticalAlignment="Top" 
                      Margin="10,10,0,0" Width="180" Height="230" >
                  <Button Margin="5" Grid.Row="1" Grid.Column="1" 
                          Content="mesh1" />
                </Grid>
              </Viewport2DVisual3D.Visual>
              <Viewport2DVisual3D.Material>
                <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="true" Color="White" Brush="Blue"/>
              </Viewport2DVisual3D.Material>
            </Viewport2DVisual3D>
            <Viewport2DVisual3D Geometry="{StaticResource mesh5}">
              <Viewport2DVisual3D.Visual>
                <Grid Background="LightSteelBlue" 
                      HorizontalAlignment="Left" VerticalAlignment="Top" 
                      Margin="10,10,0,0" Width="180" Height="230" >
                  <Button Margin="5" Grid.Row="1" Grid.Column="1" 
                          Content="mesh5" />
                </Grid>
              </Viewport2DVisual3D.Visual>
              <Viewport2DVisual3D.Material>
                <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="true" Color="White" Brush="Blue"/>
              </Viewport2DVisual3D.Material>
            </Viewport2DVisual3D>-->
     
            <ContainerUIElement3D.Transform>
              <Transform3DGroup>
                <TranslateTransform3D OffsetX="0.5" OffsetY="0.0" OffsetZ="0.25" />
                <RotateTransform3D>
                  <RotateTransform3D.Rotation>
                    <AxisAngleRotation3D x:Name="rotate" Axis="0,1,0" Angle="0" />
                  </RotateTransform3D.Rotation>
                </RotateTransform3D>
              </Transform3DGroup>
            </ContainerUIElement3D.Transform>
          </ContainerUIElement3D>
     
          <ModelVisual3D>
            <ModelVisual3D.Content>
              <AmbientLight Color="#FFFFFFFF"/>
            </ModelVisual3D.Content>
          </ModelVisual3D>
     
        </Viewport3D>
      </Grid>
     
    </Window>

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    using System.Windows;
     
    namespace WpfApplication3 {
     
      public partial class Window1 : Window {
     
        public Window1() {
          InitializeComponent();
        }
     
        private void Button_Click(object sender, RoutedEventArgs e) {
          this.Close();
        }
     
        private void Button_Click_1(object sender, RoutedEventArgs e) {
          this.TboxMsgReception.Text = this.TboxMsg.Text;
        }
     
      }
     
    }

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    @Binoo : Dis moi, as tu déjà eu des problemes de proportions de tes usercontrols sur les faces de ton cube ?
    Du style tu dessines ton usercontrol sur une face du cube et forcement, le usercontrol est mappé sur toute la face donc il est étiré avec de mauvaises proportions. As tu une parade à cela ?

  8. #8
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Citation Envoyé par zax-tfh Voir le message
    @Binoo : Dis moi, as tu déjà eu des problemes de proportions de tes usercontrols sur les faces de ton cube ?
    Du style tu dessines ton usercontrol sur une face du cube et forcement, le usercontrol est mappé sur toute la face donc il est étiré avec de mauvaises proportions. As tu une parade à cela ?
    A vrai dire sur les tests que j'avais fait (basique cf exemple ci dessus), je n'avais pas observé ce genre de comportement. Je n'ai pas appliqué la 3D par la suite dans mes applications. La représentation dans l'espace 3D n'est pas mon fort ou tout du moins me demande trop de temps de réflexion .
    Placement de la caméra, définition des facette de l'objet 3D, des coordonnées à appliquer pour la texture, etc. Bref, trop de paramètres à prendre en compte...

  9. #9
    Membre régulier Avatar de cyberbobby
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Points : 106
    Points
    106
    Par défaut
    Ok, ton exemple est nickel, merci, j'aimerais cependant que le cube tourne sur lui même ...

    Donc, au démarrage, je lance ce StoryBoard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Storyboard x:Key="Rot1" RepeatBehavior="Forever">
                <DoubleAnimation BeginTime="00:00:00" Duration="00:00:30" From="0" To="90"
    Storyboard.TargetName="rotate" Storyboard.TargetProperty="Angle" />
            </Storyboard>
    Qui fait appel à cette transformation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ContainerUIElement3D.Transform>
                        <Transform3DGroup>
                            <RotateTransform3D>
                                <RotateTransform3D.Rotation>
                                    <AxisAngleRotation3D x:Name="rotate" Angle="90"/>
                                </RotateTransform3D.Rotation>
                            </RotateTransform3D>
                        </Transform3DGroup>
                    </ContainerUIElement3D.Transform>
    Mais le cube ne tourne pas sur lui même, il tourne sur l'axe du coin au fond à droite ...

    La caméra a-t-elle un rapport ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      <Viewport3D.Camera>
            <PerspectiveCamera x:Name="Camera" FieldOfView="45" FarPlaneDistance="100" 
                      LookDirection="0,0,-5" NearPlaneDistance="0.1" 
                       Position="0.5,0.5,4" UpDirection="0,1,0"/>
                </Viewport3D.Camera>
    Une idée, explication ? Encore merci

Discussions similaires

  1. Menu en image : mettre des idées sur les <li>
    Par siamesealmeida dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 11/01/2014, 01h16
  2. [Flex4] Mettre des labels sur les points d'un graph
    Par Swarovsky dans le forum MXML
    Réponses: 0
    Dernier message: 29/10/2012, 23h12
  3. Mettre des options sur les composants
    Par Djelangelo dans le forum Langage
    Réponses: 1
    Dernier message: 02/12/2010, 16h39
  4. Réponses: 2
    Dernier message: 10/07/2008, 09h29
  5. Réponses: 10
    Dernier message: 28/03/2006, 15h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo